Como fazer NAT para diferentes interfaces no Linux?

Como fazer NAT para diferentes interfaces no Linux?

Eu tenho um servidor Ubuntu 12.04 com 4 interfaces Ethernet, 2 das quais se conectam a dispositivos de rede não configuráveis ​​em eth5 e eth6. Cada dispositivo só pode ser acessado em 192.168.100.1 via telnet. Acredito que o NAT pode me fornecer uma maneira de acessar os dois dispositivos. Outras soluções são bem-vindas.

O que eu gostaria de fazer é algo assim: telnet 192.168.1.100traduzir para 192.168.100.1 na eth5. Da mesma forma, gostaria que telnet 192.168.1.101fosse traduzido para 192.168.100.1 na eth6. Dessa forma, tenho uma espécie de alias de IP que usa interfaces Ethernet específicas. Sem uma solução como esta, obviamente tenho um conflito de IP.

A maioria dos tutoriais de NAT que vejo tem a ver com compartilhamento de conexão com a Internet. Estou tentando fazer algo muito mais simples, mas aparentemente não documentado.

Alguma dica?

Responder1

NAT (ouTradução do Endereço da Rede) trata todos os IPs 'internos' como um único IP 'externo' (mascaramento de IP) para permitir que vários dispositivos locais se conectem à mesma conexão externa (por exemplo, um roteador wifi conectado a um modem a cabo tem NAT (e provavelmente DHCP) ativado para permitir que os dispositivos se conectem à Internet através do único IP atribuído a você através do seu ISP).

O que você está pedindo (pelo que eu poderia supor) éAliases de IP, isso permite que você tenha uma única interface física (digamos eth0) e 'atribua a ela' vários IPs.

Por exemplo, digamos que você tenha um /etc/sysconfig/network-scripts/eth0arquivo de configuração com o seguinte:

DEVICE=eth0
IPADDR=192.168.1.100
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes
NAME="192.168.1.100 (eth0)"
BOOTPROTO=none
USERCTL=no

Este arquivo de configuração atribuiria o IP 192.168.1.100ao dispositivo eth0. Então, de outra máquina você poderia executar ping em 192.168.1.100 e ele iria para o dispositivo eth0 da sua máquina. Se você eth0também quiser 'ver' o tráfego da 10.0.0.0rede sem adicionar um roteador ou iptables/PF na mistura, você pode criar um alias de IP para a eth0interface fazendo o seguinte:

crie um arquivo do dispositivo ao qual deseja adicionar um alias, no nosso caso é o eth0arquivo de configuração, mas adicione um :X(onde Xestá o número do alias que você deseja atribuir), exemplo: /etc/sysconfig/network-scripts/eth0:1. Este arquivo conteria as informações do alias que você deseja adicionar, por exemplo:

DEVICE=eth0:1
IPADDR=10.0.0.100
NETMASK=255.255.255.0
NETWORK=10.0.0.0
BROADCAST=10.0.0.255
ONBOOT=yes
NAME="10.0.0.100 (eth0:1)"
BOOTPROTO=none
USERCTL=no

Adicionar este arquivo de configuração permitirá que você se comunique com ambos 192.168.1.100e 10.0.0.100através do eth0dispositivo físico.

Se, por outro lado, você deseja que o tráfego em uma interface física seja encaminhado para outra interface física, considere usar iptablespara fazer isso.

Com base na sua pergunta, você está perguntando sobre o envio de tráfego de 2 IPs diferentes ( 192.168.1.100e 192.168.1.101) para 2 NICs separadas ( eth5e eth6) que parecem compartilhar o mesmo IP ( 192.168.100.1). Não tenho certeza de como o seu eth5e eth6está configurado atualmente, mas se eles estiverem em um vínculo para 'compartilhar' o mesmo IP, talvez você não consiga o que deseja com o alias de IP e deve verificar o iptables.

Espero que isso possa adicionar alguma clareza.

informação relacionada