Meu roteador Linksys (IP 192.168.1.1 dentro de uma sub-rede / 24) está conectado ao meu modem ADSL (IP 10.0.0.138 dentro de uma sub-rede / 24) para estabelecer uma conexão à internet via PPPoE. Para poder acessar a interface web do modem de um dos PCs que estão conectados ao roteador, os seguintes comandos precisam ser executados no roteador:
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
Tanto quanto eu entendi isso é necessário porque o roteador, de outra forma assumiria o IP 10.0.0.138 para ser um endereço externo, uma vez que não faz parte de sua própria sub-rede 192.168.1.0/24.
Mas o que essas duas linhas estão fazendo exatamente? O primeiro parece atribuir um segundo endereço IP à interface vlan1 (que é basicamente a porta WAN do roteador). O segundo aparentemente modifica o endereço de origem dos pacotes IP de saída. Mas isso não é exatamente o que qualquer roteador doméstico faz por padrão? Ao usar iptables -t nat -L
, descobri que já existe uma regra:
target prot opt source destination
MASQUERADE all -- anywhere anywhere
Agora, o segundo comando adiciona
MASQUERADE all -- anywhere 10.0.0.138
para esta tabela, mas esta não é apenas uma versão mais específica da regra acima e, portanto, redundante?
Seria ótimo se alguém pudesse me explicar os detalhes do que está acontecendo exatamente aqui!
Saída de 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
Saída de 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
Tags networking iptables ip router unix