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-save
przepraszam. 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
,routel
iiptables-save
.