Ativando o encaminhamento de NAT usando uma segunda interface WAN e um segundo gateway no Ubuntu

1

Eu tenho 3 interfaces:

eth0 192.168.0.50/24
eth1 10.0.0.200/24
eth2 225.228.123.211

O gateway padrão é 192.168.0.1 , o qual desejo manter como está nas alterações que quero fazer.

Eu quero mascarar eth1 10.0.0.200/24 e ativar o encaminhamento de NAT para eth2 . Então eu fiz isso:

ip route add 225.228.123.208/29 dev eth2 src 225.228.123.211 table t1
ip route add default via 225.228.123.209 dev eth2 table t1

ip rule add from 225.228.123.211 table t1
ip rule add to 225.228.123.211 table t1

Agora posso receber respostas de ping de qualquer host da Internet se eu fizesse isso:

ping -I eth2 8.8.8.8

Para ativar o encaminhamento de NAT, fiz isso:

sudo iptables -A FORWARD -o eth2 -i eth1 -s 10.0.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Mas não está funcionando. Para testar usei um pc cliente e coloquei em 10.0.0.0/24 rede e o gateway foi definido como 10.0.0.200 .

Eu quero ter 192.168.0.1 como gateway padrão. E o tráfego que entra via eth1 10.0.0.200/24 deve ser encaminhado para eth2 225.228.123.211 .

Eu habilitei o encaminhamento no Ubuntu também.

    
por nixnotwin 10.03.2011 / 16:12

1 resposta

2

Eu acredito que você queira:

  • Direcione todos da eth1 10.0.0.0/24 para a eth2
  • No entanto, mantenha o roteamento da caixa do Linux via eth0

Se for esse o caso, existem vários erros com o seu iptables & configurações de iproute2. Aqui está minha sugestão:

-t nat -A POSTROUTING -o eth2 -j MASQUERADE
-A FORWARD -i eth1 -o eth2 -j ACCEPT
-A FORWARD -i eth2 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

Para o roteamento, você precisará de duas tabelas personalizadas. Usarei números em vez de nomes porque não sei o que está em seu /etc/iproute2/rt_tables . Agora, uma observação importante: Modificar o RPDB e rotas padrão do meu jeito irá causar perturbações temporárias na rede. Então, eu sugiro não digitar estes na CLI, em vez de colocá-lo em um script, então tudo acontece atomicamente (a menos que você esteja digitando os comandos no console físico da caixa do Linux).

ip route add default via 192.168.0.1     dev eth0 table 100
ip route add default via 225.228.123.209 dev eth2 table 102
ip route del default table main

ip rule add order 10 from all lookup main
ip rule add order 20 iif lo   lookup 100
ip rule add order 30 iif eth1 lookup 102

Nós movemos o lookup main como a primeira regra para garantir o roteamento adequado para sub-redes diretamente conectadas à caixa do Linux. Mas excluímos a rota padrão nessa tabela, porque queremos especificar rotas padrão diferentes dependendo de onde o pacote entra na caixa do Linux.

Agora, aqui está uma pergunta importante: A sub-rede 10.0.0.0/24 representa todas redes conectadas - direta ou indiretamente - a eth1?

Se SIM, a configuração é concluída.

Se NÃO, ou seja, existem outras sub-redes indiretamente ligadas à eth1 (digamos, 10.0.1.0/24, 10.0.2.0/24, etc.) que você pode acessar através de outro roteador ( digamos, 10.0.0.77/24), então você tem que adicionar mais rotas para a tabela main :

ip route add 10.0.1.0/24 via 10.0.0.77 dev eth1 table main
ip route add 10.0.2.0/24 via 10.0.0.77 dev eth1 table main
... and so on ...

Nota: table main não é necessário, mas um bom hábito

    
por 11.03.2011 / 04:05