Инструкция как настроить несколько сетевых интерфейсов в CentOS 7

Инструкция как настроить несколько сетевых интерфейсов в 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

12:44
1136