Mój router Linksys (IP 192.168.1.1 wewnątrz / 24 podsieci) jest podłączony do mojego modemu ADSL (IP 10.0.0.138 wewnątrz / 24 podsieci), aby ustanowić połączenie internetowe przez PPPoE. Aby móc uzyskać dostęp do interfejsu internetowego modemu z jednego z komputerów podłączonych do routera, należy wykonać następujące polecenia na routerze:
ip addr add 10.0.0.1/24 dev vlan1 brd +
iptables -I POSTROUTING -t nat -o vlan1 -d 10.0.0.138 -j MASQUERADE
Z tego, co zrozumiałem, jest to konieczne, ponieważ router w przeciwnym razie założyłby, że IP 10.0.0.138 jest adresem zewnętrznym, ponieważ nie jest częścią własnej podsieci 192.168.1.0/24.
Ale co dokładnie robią te dwie linie? Pierwszy wydaje się przypisywać drugi adres IP do interfejsu vlan1 (który jest zasadniczo portem WAN routera). Drugi najwyraźniej modyfikuje adres źródłowy wychodzących pakietów IP. Ale czy to nie jest dokładnie to, co domyślny router domowy robi? Używając iptables -t nat -L Odkryłem, że istnieje już reguła:
target prot opt source destination
MASQUERADE all -- anywhere anywhere
Teraz dodaje się drugie polecenia
MASQUERADE all -- anywhere 10.0.0.138
do tej tabeli, ale czy nie jest to tylko bardziej szczegółowa wersja powyższej reguły, a zatem zbędna?
Byłoby wspaniale, gdyby ktoś mógł mi wyjaśnić szczegóły tego, co się tutaj dokładnie dzieje!
Wyjście ip route:
87.186.225.71 dev ppp0 proto kernel scope link src [my public IP] 10.0.0.0/24 dev vlan1 proto kernel scope link src 10.0.0.1 192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.1 127.0.0.0/8 dev lo scope link default via 87.186.225.71 dev ppp0
Wyjście ip addr:
1: lo: mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:13:10:2f:fe:48 brd ff:ff:ff:ff:ff:ff
3: eth1: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:13:10:2f:fe:4a brd ff:ff:ff:ff:ff:ff
4: vlan0: mtu 1500 qdisc noqueue
link/ether 00:13:10:2f:fe:48 brd ff:ff:ff:ff:ff:ff
5: vlan1: mtu 1500 qdisc noqueue
link/ether 00:13:10:2f:fe:49 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/24 brd 10.0.0.255 scope global vlan1
6: br0: mtu 1500 qdisc noqueue
link/ether 00:13:10:2f:fe:48 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global br0
...
23: ppp0: mtu 1492 qdisc pfifo_fast qlen 3
link/ppp
inet [my public IP] peer 87.186.225.71/32 brd [my public IP] scope global ppp0
10/24 podsieć kierowana przez port LAN, więc jeśli spróbujesz uzyskać dostęp do routera z adresem źródłowym w 192.168.1.0/24, może spróbować skierować odpowiedź do swojego portu WAN lub odrzucić pakiet. Oprócz dostępu do Internetu, router prawdopodobnie ma już adres w 10/24 zasięg, więc to trochę dziwne. The MASQUERADE zasada wydaje się również niepotrzebna na pierwszy rzut oka, ale iptables -L wiadomo, że ukrywa niektóre opcje, które mogą mieć ogromne znaczenie.
routel ani iptables-saveprzepraszam. Nie sądzę, że mój router ma już IP w modemie 10.0.0.0/24 zasięg, aby uzyskać dostęp do Internetu, ponieważ PPPoE znajduje się poniżej warstwy IP i dlatego nie używa żadnych adresów IP. znalazłem to połączyć który próbuje wyjaśnić. Nadal nie wiadomo, który adres IP jest kopiowany do pakietów wychodzących przez MASQERADE reguła od vlan1 ma teraz wiele adresów IP ( 192.168.1.1 i 10.0.0.1 ).
MASQUERADE wybiera adres, którego podsieć zawiera adres następnego przeskoku, lub coś w tym stylu (nie wiesz, dlaczego nie tylko wybiera preferowany adres źródłowy). Więc to znaczy 10.1 dla 10/24. Jeśli routel jest niedostępny, pokaż wyjście ip rule i ip route. Pokaż także wyjście iptables -t nat -S i iptables -S zamienić iptables-save
ip rule nie działa i -S argument z iptables jest nieznany. Oprogramowanie układowe zawiera iptables v1.3.8, które zakładam, że jest dość stare. Może przynajmniej ip route i ip addr są pomocne, więc dodałem wyjścia do głównego postu.
ip addr,routeliiptables-save.