Você tem três hosts:
Machine "B" ====== Machine "A" ====== Machine "R"
10.1.0.1 10.0.0.2 10.0.0.1
A menos que Machine "R"
(seu roteador) saiba que 10.1.0.0/16
roteia através de 10.0.0.2
, simplesmente não funcionará.
Você tem três opções:
- Crie uma ponte na máquina "A"
- Pegue a Máquina "R" para instalar uma tabela de roteamento e use uma combinação de redirecionamento ICMP e proxy_arp para configurar o restante da rede
- Use a Tradução de endereços de rede na máquina "A". Isso irá "esconder" todos os hosts à esquerda dele, então a máquina "R" não poderá acessar os serviços na Máquina "B".
Para criar uma ponte, é realmente simples. Na máquina "A":
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl stp br0 on
Em seguida, configure br0
para ter o endereço IP que você deseja ter (digamos, executando dhclient br0
).
Em seguida, a Máquina "B" deve poder usar dhclient eth0
e obter um endereço IP da Máquina "R"
Pontes vêm com um monte de problemas, não sendo o menor deles o fato de que muitos dispositivos têm suporte a STP com bugs.
Se você pegar a Máquina "R" para criar sua tabela de roteamento, você precisará da Máquina "A" para ativar o proxy arp:
echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
Outras máquinas em sua rede precisarão aceitar redirecionamentos ICMP. Eu vi pelo menos duas impressoras que não são por padrão. Sua milhagem pode variar.
Por fim, ativar a Tradução de endereços de rede é realmente uma simples questão:
iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source $IP
em que $IP
é o endereço fornecido por Machine "R"
para uso. Existem várias ferramentas que automatizam isso.