Como o masquerading do iptables permite acessar uma sub-rede local diferente?

0

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
    
por ph4nt0m 20.04.2013 / 18:12

0 respostas