Как настроить несколько сетевых интерфейсов в CentOS 7
Для настройки доступности сервера через разные сетевые интерфейсы и публичные IP адреса не достаточно просто прописать параметры для каждой сетевой карты. Т.к. шлюз по умолчанию может быть только один, то и все сетевые пакеты будут уходить с сервера через него, даже если изначально были получены на другой адрес. Это минус используемой по умолчанию политики маршрутизации на основе адреса получателя. В данном руководстве мы рассмотрим процесс настройки маршрутизации на основе адреса источника (source based routing).
Настройка сетевых интерфейсов
Если Вы используете сервер в Serverspace, то настройка параметров сетевых интерфейсов происходит автоматически при их добавлении или создании сервера. В противном же случае необходимо привести параметры к приведенному ниже виду. Приведенный пример можно скопировать, подставив свои значения для имени интерфейса (eth0), шлюза (GATEWAY), MAC-адреса (HWADDR), IP адреса (IPADDR) и в некоторых случаях маски подсети (NETMASK):
nano /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=none
DEFROUTE=yes
DEVICE=eth0
GATEWAY=55.66.77.1
HWADDR=aa:bb:cc:dd:ee:ff
IPADDR=55.66.77.88
MTU=1500
NETMASK=255.255.255.0
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
Шлюз прописывается только для одного сетевого интерфейса, т.к. он должен быть только один в системе. Настройка второго интерфейса:
nano /etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=none
DEVICE=eth1
HWADDR=bb:cc:dd:ee:ff:gg
IPADDR=66.77.88.99
MTU=1500
NETMASK=255.255.255.0
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
Аналогичным образом производится настройка того количества интерфейсов, которое подключено к системе.
Настройка source based routing
На всякий случай стоит проверить установлен ли пакет iproute и установить его, если нет.
yum install iproute
Теперь откройте следующий файл:
nano /etc/iproute2/rt_tables
Добавьте в его конец следующие строки:
100 table100
101 table101
Запись должна быть в формате число пробел название таблицы. Оба значения могут быть произвольными. Единственное условие - их уникальность относительно значений других записей в файле. Количество строк должно соответствовать количеству сетевых интерфейсов, для которых настраиваем доступность.
Теперь создадим файлы с параметрами таблиц маршрутизации. Нужно создать отдельный такой файл для каждого интерфейса, заменив в названии файла eth0 на актуальное имя сетевого соединения.
nano /etc/sysconfig/network-scripts/rule-eth0
Ниже содержимое файла, где вместо 55.66.77.88 надо поставить IP адрес сетевого интерфейса, а вместо table100 - добавленные выше таблицы, по 1 для каждого интерфейса:
from 55.66.77.88 lookup table100
И соответствующие файлы с правилами маршрутизации. Создаются по тем же принципам, что и файлы параметров таблиц маршрутизации.
nano /etc/sysconfig/network-scripts/route-eth0
Нужно подставить актуальные значения адреса подсети, шлюза, имени интерфейса и значение таблицы, соответствующее значению из предыдущего файла.
55.66.77.0/24 dev eth0 table table100
default dev eth0 via 55.66.77.1 table table100
Такие пары файлов создаются для каждого сетевого интерфейса в системе с соответствующими ему значениями.
Перезагрузим сетевую службу, чтобы изменения применились:
systemctl restart network