6.1.9 Работа с дополнительными IP-адресами в Linux и Windows Server

The Host Banner

Во многих административных задачах возникает необходимость назначить серверу несколько IP-адресов — будь то для прокси-сервисов, виртуального хостинга или выделенных приложений. Эта статья поможет корректно настроить дополнительные IP-адреса на Linux (Ubuntu, Debian, CentOS, RHEL, AlmaLinux, RockyLinux) и Windows Server 2022.

Полезные кейсы

  • Необходима изоляция проектов по IP
  • Один сервер обслуживает несколько SSL-сайтов
  • Настраиваются сервисы с ограничением доступа по IP (например, почта, VPN)
  • Виртуализация или контейнеризация

Системные требования

Переменные, которые нужно заменить

  • ADDITIONAL_IP — дополнительный IPv4-адрес сервера
  • ADDITIONAL_IPV6 — дополнительный IPv6-адрес сервера
  • INTERFACE — имя сетевого интерфейса в Linux (eth0, ens3, ens160 и т.д.)
  • INTERFACE_ALIAS — псевдоним сетевого адаптера в Windows (значение из Get-NetAdapter)
  • YOUR_MAIN_IP / MAIN_IP — основной IPv4-адрес сервера
  • YOUR_IPV6 — основной IPv6-адрес сервера
  • NETMASK — маска подсети для IPv4 (например 255.255.255.0)
  • /128 — префикс IPv6-подсети (оставьте 128, если у провайдера не указано иное)
  • GATEWAY — шлюз по умолчанию для IPv4
  • IPV6_GATEWAY — шлюз по умолчанию для IPv6
  • GATEWAY_IP — шлюз, указываемый при добавлении IP в Windows PowerShell
  • DNS_1 / DNS_2 — адреса DNS-серверов для IPv4
  • DNS6_1 / DNS6_2 — адреса DNS-серверов для IPv6

Временное добавление IP в Linux

Для временного (до перезагрузки системы) добавления IP-адреса в системах Linux выполните следующую команду:

IPv4:

sudo ip addr add ADDITIONAL_IP dev INTERFACE

Обратите внимание: замените ADDITIONAL_IP на ваш дополнительный IP-адрес, а INTERFACE — на имя сетевого интерфейса.

IPv6:

sudo ip -6 addr add ADDITIONAL_IPV6/112 dev INTERFACE

Обратите внимание: замените ADDITIONAL_IPV6/112 и INTERFACE на ваши значения.

Ubuntu/Debian

Для определения типа конфигурации используем команду.

dpkg -l | grep ii | awk '{print $2}' | grep ifupdown | wc -l

Данная команда вернёт 1 - Если используется ifupdown, вернёт 0 - Если нет.

Проверим текущие сетевые интерфейсы:

ip addr show

Вывод покажет интерфейсы, например eth0, ens3, ens160.

ip_addr_show

Добавление IP через ifupdown

Откройте файл конфигурации:

sudo nano /etc/network/interfaces

Пример с добавлением второго IP:

/etc/network/interfaces
# Основной интерфейс IPv4 + IPv6
auto eth0
iface eth0 inet static
    address YOUR_MAIN_IP
    netmask NETMASK
    gateway GATEWAY
    dns-nameservers DNS_1 DNS_2

iface eth0 inet6 static
    address YOUR_IPV6
    netmask 112
    gateway IPV6_GATEWAY
    dns-nameservers DNS6_1 DNS6_2

# Дополнительный IPv4-адрес (IP alias)
auto eth0:0
iface eth0:0 inet static
    address ADDITIONAL_IP
    netmask NETMASK

# Дополнительный IPv6-адрес (IP alias)
auto eth0:0
iface eth0:0 inet6 static
    address ADDITIONAL_IPV6
    netmask NETMASK
  • eth0 — основной интерфейс
  • eth0:0 — виртуальный интерфейс (alias), добавляющий IP

Обратите внимание: для получения значений address, netmask, gateway, dns-nameservers обратитесь в службу поддержки.

Примените изменения:

sudo systemctl restart networking

Теперь IP-адрес будет сохраняться после перезагрузки.

Добавление IP-адресов с помощью Netplan

Файл для настройки IP находится в каталоге /etc/netplan/. Имя файла может быть любым, но должно иметь расширение yaml. Просто перечислите IP-адреса, которые вы хотите добавить, после основного IP:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens9:
            dhcp4: false
            addresses:
			- MAIN_IP # Ваш основний IP
			- ADDITIONAL_IP # Додатковий IP

После добавления дополнительного IP-адреса выполните следующую команду, чтобы попытаться применить конфигурацию к уже запущенной системе т будет ждать Вашего подтверждения (120 с по умолчанию) и автоматически откатывает изменения, если вы не подтвердили их нажатием Enter.

sudo netplan try

Команда же sudo net apply сразу применяет их без возможности автоматического отката.

CentOS/RHEL/AlmaLinux/RockyLinux

Для начала необходимо определить текущий метод конфигурации IP. Для этого выполните одну из следующих команд:

systemctl status NetworkManager

Если вы видите Active: active (running), это означает, что NetworkManager запущен и используется в вашей системе. Выполните следующую команду, чтобы проверить, какие именно интерфейсы обслуживаются NetworkManager’ом:

nmcli device status

Чтобы проверить, что вы используете Network Scripts, выполните команду:

systemctl status network

NetworkManager

Для систем на базе CentOS используйте утилиту nmcli.

Проверим интерфейсы:

nmcli device status

nmcli_status

Добавление IP на постоянной основе:

nmcli con mod INTERFACE +ipv4.addresses ADDITIONAL_IP
nmcli con up INTERFACE

nmcli_con

Проверка:

ip a

Network Scripts

Добавление IP через network-scripts.

Перейдите в каталог конфигураций:

cd /etc/sysconfig/network-scripts/

Найдите файл ifcfg-eth0 (основной интерфейс), затем создайте alias:

cp ifcfg-eth0 ifcfg-eth0:0

Измените содержимое:

DEVICE=eth0:0
BOOTPROTO=static
ONBOOT=yes
IPADDR=ADDITIONAL_IP
NETMASK=NETMASK

Обратите внимание: необходимо заменить ADDITIONAL_IP, NETMASK на свои значения.

Важно: перезапустите сетевой стек:

systemctl restart network

или:

ifdown eth0:0 ; ifup eth0:0

Windows Server

Проверка IP-адресов через PowerShell:

Get-NetIPAddress | Where-Object {$_.AddressFamily -eq "IPv4"}

ps_get-net

Проверим название интерфейса:

Get-NetAdapter

get-netAdapter

Добавление IP через PowerShell

New-NetIPAddress -InterfaceAlias "INTERFACE_ALIAS" -IPAddress "ADDITIONAL_IP" -PrefixLength 32 -DefaultGateway "GATEWAY_IP"

Обратите внимание: необходимо указать INTERFACE_ALIAS, ADDITIONAL_IP, GATEWAY_IP согласно вашей конфигурации.

Проверка результата:

Get-NetIPAddress -InterfaceAlias "INTERFACE_ALIAS"

get-Net

Добавление IP через интерфейс

  1. Откройте «Пуск» → «Параметры» → «Сеть и Интернет»

windows interface_1

  1. В разделе «Статус» нажмите «Изменение параметров адаптера»

windows interface_2

  1. Кликните правой кнопкой по нужному адаптеру → «Свойства»

windows interface_3

  1. Выберите IPv4 → «Свойства» → «Дополнительно»

windows interface_4

  1. Нажмите «Добавить…»

windows interface_5

  1. Введите дополнительный IP и маску подсети → «Добавить»

windows interface_6

Проверка работы

Внимание: команды для проверки пинга (ping) нужно выполнять не на тех устройствах, где происходит добавление IP.

Linux:

ping -c 4 ADDITIONAL_IP

Windows:

ping ADDITIONAL_IP

Если IP отвечает на ping — всё настроено корректно.

Распространённые проблемы
Проблема Причина Решение
IP исчез после перезагрузки IP добавлен временно Добавьте IP в Netplan (Linux) или сохраните через PowerShell (Windows)
Нет трафика с/на дополнительный IP Фаервол блокирует трафик Настройте UFW или Windows Firewall на нужные порты и IP
Некорректная маршрутизация Неверно указан шлюз или префикс Проверьте gateway, netmask и prefix length