Инструкция как настроить несколько сетевых интерфейсов в CentOS 7
Для настройки доступности сервера через разные сетевые интерфейсы и публичные IP адреса не достаточно просто прописать параметры для каждой сетевой карты. Т.к. шлюз по умолчанию может быть только один, то и все сетевые пакеты будут уходить с сервера через него, даже если изначально были получены на другой адрес. Это минус используемой по умолчанию политики маршрутизации на основе адреса получателя. В данном руководстве мы рассмотрим процесс настройки маршрутизации на основе адреса источника (source based routing).
Настройка сетевых интерфейсов
Приведенный пример можно скопировать, подставив свои значения для имени интерфейса (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