Não está claro por que você deseja fornecer esses endereços específicos à sua caixa do meio. Se você só precisa passar pacotes para o outro lado, não há necessidade para isso, você pode usar o bridging (ou opcionalmente o proxy-arp).
Um caso de uso válido se você quiser que o tráfego de uma das extremidades seja direcionado para um aplicativo em execução localmente na caixa do meio , gerando opcionalmente uma nova solicitação de aplicativo no outro lado, subindo e descendo pilha de rede completa (por exemplo, digamos, um proxy HTTP userland). Se é isso que você quer, continue lendo.
Você não pode configurar a caixa do meio assim como está, porque a caixa do meio não será capaz de distinguir sua interface local de um lado, da interface remota do outro lado.
A maneira que eu tentaria configurá-lo, seria o primeiro a escolher dois novos endereços para a caixa do meio, dividindo um lado em uma sub-rede separada. por exemplo, x.x.x.6/30
(que bloqueia .4 e .7 como endereços de rede, da caixa do meio, e permite .5 para o lado remoto) e x.x.x.11
para o outro lado.
Em seguida, ative o proxy-ARP para as duas interfaces relevantes, adicionando o seguinte aos seus scripts de inicialização da interface:
echo 1 >/proc/sys/net/ipv4/conf/eth0/proxy_arp
para eth0 e
echo 1 >/proc/sys/net/ipv4/conf/eth0/proxy_arp
para eth1. Você também pode usar all
em vez do nome da interface, se não houver outras interfaces na caixa. Isso fará com que sua caixa do meio responda agora com seu próprio endereço MAC para solicitações arp direcionadas a endereços roteáveis conhecidos do outro lado.
Em seguida, use essas quatro regras de NAT para tornar a caixa invisível:
iptables -t nat -A PREROUTING -i eth0 -s x.x.x.5 -d x.x.x.10 -j DNAT --to-destination x.x.x.6
iptables -t nat -A POSTROUTING -o eth0 -d x.x.x.5 -s x.x.x.6 -j SNAT --to-source x.x.x.10
iptables -t nat -A PREROUTING -i eth1 -s x.x.x.10 -d x.x.x.5 -j DNAT --to-destination x.x.x.11
iptables -t nat -A POSTROUTING -o eth1 -d x.x.x.10 -s x.x.x.11 -j SNAT --to-source x.x.x.5
Dessa forma, você pode usar endereços diferentes internamente para identificar as interfaces da sua caixa do meio, mas elas não aparecem do lado de fora. O processo será parecido com:
- x.x.x.5 faz uma solicitação direta de ARP para x.x.x.10. Esta requisição chega na caixa do meio na eth0.
- caixa do meio percebe que x.x.x.10 é roteável em eth1, então respostas com seu próprio endereço MAC
- o pacote IP para x.x.x.10 é entregue na caixa do meio em eth0
- A regra DNAT em PREROUTING eth0 inicia e reescreve o destino para x.x.x.6
- o aplicativo local manipula a solicitação para x.x.x.6, emite uma solicitação separada para x.x.x.10, a solicitação é roteada para eth1
A regra - SNAT em POSTROUTING eth1 entra em ação, altera o endereço de origem para x.x.x.5
- x.x.x.10 vê a solicitação da caixa do meio chegando de x.x.x.5.
- x.x.x.10 deseja responder, emite a solicitação ARP para x.x.x.5
- o proxy-arp entra em ação na eth1, pois x.x.x.5 é roteável em eth0
- a resposta vai para a caixa do meio, a regra DNAT na eth1 entra em ação, reescreve o destino para x.x.x.11
- aplicativo local lida com a resposta, o processo original emite uma resposta de x.x.x.6 para x.x.x.5
A regra de - SNAT para eth0 entra em ação, altera o endereço de origem para x.x.x.10
- a resposta final é emitida para x.x.x.5