Несколько IP-адресов на одном сетевом адаптере в CentOS
Назначение 2-х и более адресов на один физический сетевой интерфейс позволяет запуск приложений и служб, которые используют несколько IP или работают на разных сетевых адресах.
Принцип настройки
Для назначения вторичного IP-адреса создается псевдоним (alias) сетевого интерфейса. Название для алиаса задается по принципу <имя интерфейса>:<свободный номер с нуля>, например, eth0:0 или eth0:1.
Псевдониму можно назначить только статический ip-адрес, нельзя присвоить адрес с помощью DHCP.
Разовая настройка (командой)
Добавить дополнительный адрес можно одной командой:
ip a add 192.168.1.11/24 dev enp2s0:1
* в данном примере мы назначили адрес 192.168.1.11 с маской 255.255.255.0 (/24) для сетевого интерфейса enp2s0. Данный алиас назван enp2s0:1.
Если для управления сетевыми интерфейсами используем утилиту ifconfig:
ifconfig enp2s0:1 192.168.1.11 up
Проверить настройку можно одной из команд:
ip a
ifconfig
* обе команды позволяют посмотреть сетевые интерфейсы и узнать IP-адреса, назначенные им.
Необходимо помнить, что данная настройка будет сброшена после перезагрузки сетевой службы или системы.
Постоянная настройка
Чтобы дополнительный адрес назначался при перезагрузках, создаем новый виртуальный адаптер:
vi /etc/sysconfig/network-scripts/ifcfg-enp2s0:1
DEVICE=enp2s0:1
BOOTPROTO=static
IPADDR=192.168.1.11
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
Для применения настроек, перезапускаем сетевую службу:
systemctl restart network
Настройка отвечающего интерфейса
Некоторые приложения, которые отвечают на сетевые запросы с интерфейсов-алиасов могут работать некорректно. Это связано с тем, что ответ выполняется не с вторичного IP-адреса, на который пришел запрос, а первичного.
Для настройки сетевых ответов с IP, на который пришел запрос, вносим изменения в таблицу маршрутизации.
Для начала нужно найти незанятую таблицу (по умолчанию, они все пусты, кроме основной):
ip route show table 100
* в данном примете мы посмотрим на маршруты таблицы с номером 100.
Если маршрутов нет, то добавляем следующие:
ip route add default via 192.168.1.1 src 192.168.1.11 table 100
ip rule add from 192.168.1.0/24 table 100
ip rule add to 192.168.1.0/24 table 100
* в данном примере добавлены маршруты для подсети 192.168.1.0/24
Для постоянного добавления маршрута, создаем файл:
vi /etc/sysconfig/network-scripts/route-enp2s0:1
default via 192.168.1.1 src 192.168.1.11 table 100
Также создаем файл для добавления правил:
from 192.168.1.0/24 table 100
to 192.168.1.0/24 table 100
Перезапускаем сеть:
systemctl restart network