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.