Как использовать NAT для разных интерфейсов в Linux?

Как использовать NAT для разных интерфейсов в Linux?

У меня есть сервер Ubuntu 12.04 с 4 интерфейсами ethernet, 2 из которых подключаются к ненастраиваемым сетевым устройствам на eth5 и eth6. Каждое устройство может быть доступно только на 192.168.100.1 через telnet. Я считаю, что NAT может предоставить мне способ доступа к обоим устройствам. Другие решения приветствуются.

Я хотел бы сделать что-то вроде этого: telnet 192.168.1.100и транслировать его в 192.168.100.1 на eth5. Аналогично я хотел бы telnet 192.168.1.101транслировать его в 192.168.100.1 на eth6. Таким образом, у меня есть своего рода псевдоним IP, который использует определенные интерфейсы Ethernet. Без такого решения у меня, очевидно, будет конфликт IP.

Большинство руководств по NAT, которые я вижу, связаны с общим доступом к интернет-подключению. Я пытаюсь сделать что-то гораздо более простое, но, по-видимому, недокументированное.

Какие-нибудь советы?

решение1

НАТ (илитрансляция сетевых адресов) обрабатывает все «внутренние» IP-адреса как один «внешний» IP-адрес (маскировка IP-адресов), чтобы разрешить нескольким локальным устройствам подключаться к одному и тому же внешнему соединению (например, на маршрутизаторе Wi-Fi, подключенном к кабельному модему, включен NAT (и, возможно, DHCP), чтобы разрешить устройствам подключаться к Интернету через один IP-адрес, назначенный вам вашим интернет-провайдером).

То, о чем вы просите (насколько я могу судить), этоIP-псевдонимы, это позволяет вам иметь один физический интерфейс (например eth0, ) и «назначать ему» несколько IP-адресов.

Например, предположим, что у вас есть /etc/sysconfig/network-scripts/eth0файл конфигурации, содержащий следующее:

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

Этот файл конфигурации назначит IP 192.168.1.100устройству eth0. Таким образом, с другой машины вы можете выполнить ping 192.168.1.100, и он попадет на устройство eth0 вашей машины. Если вы eth0также хотите «видеть» трафик из 10.0.0.0сети, не добавляя маршрутизатор или iptables/PF в микс, вы можете назначить IP-псевдоним интерфейсу, eth0выполнив следующие действия:

создайте файл устройства, к которому вы хотите добавить псевдоним, в нашем случае это eth0файл конфигурации, но добавьте :X(где X— номер псевдонима, который вы хотите назначить), например: /etc/sysconfig/network-scripts/eth0:1. Этот файл будет содержать информацию о псевдониме, которую вы хотите добавить, например:

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

Добавление этого файла конфигурации позволит вам взаимодействовать с обоими устройствами 192.168.1.100через 10.0.0.100физическое eth0устройство.

С другой стороны, если вы хотите, чтобы трафик с одного физического интерфейса перенаправлялся на другой физический интерфейс, вам придется рассмотреть возможность использования iptablesэтого метода.

Однако, исходя из вашего вопроса, вы спрашиваете об отправке трафика с 2 разных IP-адресов ( 192.168.1.100и 192.168.1.101) на 2 отдельных сетевых карты ( eth5и eth6), которые, по-видимому, используют один и тот же IP-адрес ( 192.168.100.1). Я не уверен, как настроены ваши eth5и eth6в настоящее время, но если они связаны, чтобы «использовать» один и тот же IP-адрес, то вы, возможно, не сможете добиться желаемого с помощью IP-алиасинга и вместо этого должны проверить iptables.

Надеюсь, это внесет ясность.

Связанный контент