Robię eksperyment sieciowy na temat przekazywania pakietów IP, ale nie wiem, dlaczego to działa.
Mam maszynę linux z dwoma interfejsami sieciowymi, eth0 i eth1, oba ze statycznym adresem IP (eth0: 192.168.100.1, eth1: 192.168.101.2).
Mój cel jest prosty, chcę tylko przesyłać pakiety ip z eth1 z miejscem docelowym w podsieci 192.168.100.0/24 do eth0 i przekazywać pakiety ip z eth0 z miejscem docelowym w podsieci 192.168.101.0/24 do eth1.
Włączyłem przekazywanie IP za pomocą:
sysctl -w net.ipv4.ip_forward=1
moja tabela routingu wygląda następująco:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Ale kiedy próbuję pingować z 192.168.100.25 do 192.168.101.47, to nie działa.
źródło
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iiptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
do moich stołów. I wszystkie moje zasady WEJŚCIA, WYJŚCIA i DO PRZODUACCEPT
.traceroute
na moim hoście, pokazuje, że pakiet trafia do „routera” (192.168.100.1), ale nie idzie dalej.Musisz dodać trasę zarówno do 192.168.100.25, jak i 192.168.101.47.
Jeśli twój serwer przekazujący ma adresy IP 192.168.100.1 i 192.168.101.1, dodajesz klienta 192.168.100.25
oraz w kliencie 192.168.101.47
(Działa to tylko z włączonym przekazywaniem, bez iptables).
źródło