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