Два сетевых адаптера, два статических общедоступных IP-адреса, один и тот же шлюз в CentOS 7

У меня есть сервер с двумя сетевыми адаптерами, каждый из которых настроен на статический 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 доступен из той же подсети, поэтому это должно быть ошибка в моей конфигурации, которая делает недоступным снаружи.

Что я сделал не так? Вы можете посоветовать решение?

1
задан 3 March 2017 в 17:34
1 ответ

Я думаю, вам было бы лучше связать две сетевые карты и назначить один IP-адрес для связи.

В документации RedHat есть хорошее руководство по этому поводу.

Исходя из ваших требований, вы, скорее всего, захотите mode = 1 (но проверьте, не работают ли другие режимы. что-то лучше' -например удвоение пропускной способности, если только одна сетевая карта не выйдет из строя).

Если связь не является приемлемым решением, вы можете создать статические маршруты с метриками для каждого интерфейса, чтобы один был предпочтительнее другого (я думаю, вы могли бы чтобы обойтись без установки «только» ШЛЮЗА в каждом файле ifcfg-PORT).

NIC2 доступен локально, потому что адресуется по его физическому (MAC) адресу, а не по IP. Когда вы пытаетесь связаться с ним удаленно, я склонен думать, что вам потребуется включить переадресацию IP.

tl; dr : Связь упростит вашу жизнь и сделает сервер более устойчивым, но если вы на самом деле этого не нужно, вы, вероятно, захотите какую-то комбинацию метрик / затрат маршрута и ip_forwarding. Но вы не сможете избежать прохождения трафика NIC2 через NIC1, когда NIC1 активен, поскольку у него есть предпочтительный маршрут по умолчанию (то есть более низкая метрика / стоимость).

2
ответ дан 3 December 2019 в 20:27

Теги

Похожие вопросы