NAT e duas pontes

2

Eu tenho um servidor Debian Squeeze (como roteador e host para servidores virtuais) com duas placas de rede - eth0 para internet, eth1 para rede local. Eu instalei o KVM, então criei br0 (eth0, vnet0) e br1 (eth1, vnet1). Agora eu preciso configurar o acesso à rede local neste servidor, mas não está funcionando :( O que devo fazer para ter acesso à Internet a partir da rede local (tráfego vindo na br1)? Tudo funciona ok, exceto o acesso à Internet na lan.

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Se eu não usar bridges, essa configuração está funcionando (com eth0 isntead de br0).

    
por Bruce 21.02.2011 / 09:35

2 respostas

0

Hmm, configurei o login no iptables e o tráfego de br1 para br0. Então eu verifiquei o tcpdump em br0 e todos os pacotes da rede local estavam com o endereço IP local. Eu chequei novamente iptables, adicionei o mesmo comando iptables:

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE

e agora estava funcionando ... Talvez eu tenha cometido algum outro erro antes ...

    
por 21.02.2011 / 20:50
2

A meta MASQUERADE é um pouco "mágica", pois usa o IP configurado na interface de saída para gerar tráfego nativo.

Você pode usar o SNAT target com o endereço IP público no parâmetro:

iptables -t nat -A POSTROUTING -o br0 --to-source W.X.Y.Z -j SNAT

Se você quiser usar o MASQUERADE target (se seu IP público for alterado, por exemplo), coloque a regra na interface em que o endereço público está configurado, eth0:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    
por 21.02.2011 / 11:31