Tradução de rede, um para um, não um para muitos

1

Cenário desejado: uma pequena sub-rede de máquinas Linux, todas acessíveis através de outra máquina Linux (atuando como um roteador IP). Essas máquinas seriam pré-configuradas com endereços em uma rede privada (192.168.x.x ou 10.x.x.x). No entanto, cada um seria acessível através da máquina de roteamento com endereços IP públicos, um para cada um, configurado na máquina de roteamento.

Isso seria semelhante ao mascaramento de NAT ou IP, mas com endereços IP públicos separados. (É aceitável assumir que a rede pública terá um endereço de gateway: roteador externo.)

Parece que isso deve ser possível com a tradução de endereços, mas não consigo descobrir como configurar isso. Não consigo encontrar nada procurando.

Isso pode ser configurado e, em caso afirmativo, como?

    
por DoxyLover 15.11.2014 / 14:26

1 resposta

1

Assumindo, IP_EXT1 e IP_EXT2 são os endereços IP externos das máquinas 1 e 2, respectivamente, e IP_INT1 e IP_INT2 dos respectivos endereços IP internos.

IP_EXT1 e IP_EXT2 são, na verdade, endereços da máquina de roteamento, aliases para a mesma interface de rede ou duas interfaces distintas.

Então, a configuração do iptables na máquina de roteamento deve ser tão simples quanto (não testada):

iptables -t nat -A POSTROUTING --destination $IP_EXT1 -j DNAT --to-destination $IP_INT1
iptables -t nat -A POSTROUTING --source $IP_INT1 -j SNAT --to-source $IP_EXT1
iptables -t nat -A POSTROUTING --destination $IP_EXT2 -j DNAT --to-destination $IP_INT2
iptables -t nat -A POSTROUTING --source $IP_INT2 -j SNAT --to-source $IP_EXT2
    
por 15.11.2014 / 18:56