У меня есть сервер с двумя сетевыми адаптерами, каждый из которых настроен на статический IP-адрес (оба общедоступные, если это имеет значение). Они принадлежат одной подсети. Например (поддельные IP-адреса, но по той же логике):
NIC1:
# cat ifcfg-enp4s0
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp4s0"
DEVICE="enp4s0"
ONBOOT="yes"
DNS1="192.168.1.1"
IPADDR=192.168.0.1
PREFIX=24
GATEWAY=192.168.0.254
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
NIC2:
# cat ifcfg-enp2s0f0
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.0.2
PREFIX=24
GATEWAY=192.168.0.254
DNS1=192.168.1.1
DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp2s0f0
DEVICE=enp2s0f0
ONBOOT=yes
Я бы хотел, чтобы исходящие соединения проходили через NIC1 по умолчанию, если он не отключен - тогда он должен проходить через NIC2.
Пакеты на 192.168.0.1 должны поступать на NIC1, а ответы должны исходить от NIC1. Точно так же пакеты на 192.168.0.2 должны идти на NIC2, а ответы исходить от NIC2.
С приведенной выше конфигурацией я получаю следующий маршрут:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.254 0.0.0.0 UG 100 0 0 enp4s0
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp2s0f0
192.168.0.0 0.0.0.0 255.255.255.0 U 101 0 0 enp4s0
Теперь, сервер подключен, но только 192.168.0.1 доступен для проверки связи извне. 192.168.0.2 недоступен.
Сетевые специалисты говорят мне, что 192.168.0.2 доступен из той же подсети, поэтому это должно быть ошибка в моей конфигурации, которая делает недоступным снаружи.
Что я сделал не так? Вы можете посоветовать решение?
Я думаю, вам было бы лучше связать две сетевые карты и назначить один IP-адрес для связи.
В документации RedHat есть хорошее руководство по этому поводу.
Исходя из ваших требований, вы, скорее всего, захотите mode = 1 (но проверьте, не работают ли другие режимы. что-то лучше' -например удвоение пропускной способности, если только одна сетевая карта не выйдет из строя).
Если связь не является приемлемым решением, вы можете создать статические маршруты с метриками для каждого интерфейса, чтобы один был предпочтительнее другого (я думаю, вы могли бы чтобы обойтись без установки «только» ШЛЮЗА в каждом файле ifcfg-PORT).
NIC2 доступен локально, потому что адресуется по его физическому (MAC) адресу, а не по IP. Когда вы пытаетесь связаться с ним удаленно, я склонен думать, что вам потребуется включить переадресацию IP.
tl; dr : Связь упростит вашу жизнь и сделает сервер более устойчивым, но если вы на самом деле этого не нужно, вы, вероятно, захотите какую-то комбинацию метрик / затрат маршрута и ip_forwarding. Но вы не сможете избежать прохождения трафика NIC2 через NIC1, когда NIC1 активен, поскольку у него есть предпочтительный маршрут по умолчанию (то есть более низкая метрика / стоимость).