Azi petrec mult timp să-mi dau seama cum să fac asta, dar nu am putut găsi o soluție. În mintea mea ar trebui să fie posibil. Încerc să configurez următoarea configurare:
prezentare generală a configurației
Citind atingeți 1
interfață și redirecționare către enp0s3
folosind Go ar trebui să lucreaza fara probleme... sper. Dacă fac o ping 10.0.0.10 -I tap1
Pot vedea cadrele eter în aplicația Go. (Folosesc în prezent https://github.com/songgao/water dar probabil că voi migra la https://github.com/mdlayher/packet dacă fac asta să funcționeze)
Problema pe care o am este redirecționarea etherframe-urilor de la enp0s8
la atingeți 1
interfata. Am incercat mai multe comenzi dar nu merge. Am incercat sa folosesc iptables
:
iptables -A FORWARD -i enp0s8 -o tap1 -j ACCEPT
și comenzi similare.
Apoi am gasit aceasta intrebare: Atingeți0 nu primește trafic unde Sherwood Wang a spus următoarele:
Dacă doriți să forțați tap0 să primească propriile pachete IP, puteți utiliza ebtables. Când pachetele sunt eliminate în stratul ethernet al tap0 la tabelul broute, aceste pachete intră în stratul IP al tap0 în loc de eth0. Vedeți și: http://ebtables.sourceforge.net/examples/real.html#example1
Ce sună exact ceea ce am nevoie. Cred că am găsit comanda la care vrea să spună aici: https://ebtables.netfilter.org/examples/basic.html#ex_brouter
ebtables -t broute -A BROUTING -p ipv4 -i tap1 --ip-dst 172.16.1.1 -j DROP
Totuși, primesc următoarea eroare: ebtables: Nu există lanț/țintă/potrivire cu acest nume
. Dacă mă uit la man ebtables
Nu văd broute
tabelul menționat. O vad totusi aici https://linux.die.net/man/8/ebtables. Deci imi scapa ceva?
am incercat si eu ebtables -A FORWARD -i enp0s8 -o tap1 -j ACCEPT
din https://www.linuxquestions.org/questions/linux-networking-3/ebtables-to-setup-forwarding-and-ethernet-level-nat-4175538316/ dar nici asta nu merge.