Acho que isso vai fazer o que você quer, assumindo que a rede é assim:
Internet < ---- > Computador A < ---- > Computador B
Notas: <external interface>
é a interface (como eth0
, p1p1
, etc) que está conectada à Internet no Computador A . <internal interface>
é a interface no Computador A que está conectado ao Computador B .
Estes comandos precisam ser executados como root (em su -
) no Computador A (aquele com acesso à Internet).
EXT=<external interface>
INT=<internal interface>
echo 1 > /proc/sys/net/ipv4/ip_forward #Tell the system it is OK to forward IP packets
iptables -t nat -A POSTROUTING -o $EXT -j MASQUERADE
iptables -A FORWARD -i $EXT -o $INT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $INT -o $EXT -j ACCEPT
ip addr show $INT
Na saída do comando ip addr
, localize a linha que começa com inet
(ou inet6
se você estiver usando o IPv6). Use o endereço IP nessa linha no seguinte comando, como root, em Computador B :
ip route add default via <put ComputerA's internal IP address here>
Agora, veja se funciona executando ping google.com
em Computador B , ou simplesmente tentando carregar uma página da Web no navegador.
Se você quiser salvar as alterações em Computador A , execute estes comandos como root:
apt-get install iptables-persistent
/etc/init.d/iptables-persistent save
Agora eu não sei exatamente como restaurar as regras salvas na inicialização, alguém mais pode sugerir algo? Deve funcionar para fazer /etc/init.d/iptables-persistent reload
(como root) toda vez que você inicializar, mas isso seria uma dor.
Para fazer Computador B sempre usar Computador A como o gateway padrão exigiria a instalação do DHCP em Computador A , o que eu não quero para entrar nessa resposta.