Дополнительный интерфейс с адресом

Если к серверу подключён дополнительный сетевой интерфейс с отдельным адресом, его нужно один раз настроить внутри системы. Без настройки адрес не отвечает: ответы уходят через основной интерфейс.

Настройка ниже переживает перезагрузку. Проверена на Ubuntu 24.04, Debian 13 и AlmaLinux 9.

Что понадобится

  • Имя интерфейса. Выполните ip -br addr. Дополнительный интерфейс - второй в списке после основного: ens8 на Ubuntu и Debian, eth1 на AlmaLinux.
  • Адрес интерфейса - его выдала поддержка, он же виден в списке услуг.
  • Шлюз - первый адрес подсети интерфейса. Например, для адреса 203.0.113.45/27 шлюз - 203.0.113.33.

В примерах ниже интерфейс ens8 (или eth1), адрес 203.0.113.45, шлюз 203.0.113.33 - подставьте свои.

Ubuntu и Debian

Создайте файл /etc/netplan/60-extra-interface.yaml:

network:
  version: 2
  ethernets:
    ens8:
      dhcp4: true
      routes:
        - to: 0.0.0.0/0
          via: 203.0.113.33
          table: 100
      routing-policy:
        - from: 203.0.113.45
          table: 100

Примените:

sudo chmod 600 /etc/netplan/60-extra-interface.yaml
sudo netplan apply

AlmaLinux, Rocky Linux, CentOS Stream

CON=$(nmcli -g GENERAL.CONNECTION dev show eth1)
sudo nmcli con mod "$CON" connection.autoconnect yes ipv4.method auto \
  ipv4.routes "0.0.0.0/0 203.0.113.33 table=100" \
  ipv4.routing-rules "priority 100 from 203.0.113.45 table 100"
sudo nmcli con up "$CON"

Проверка

ip -br addr show ens8          # у интерфейса есть адрес
ip rule | grep 100             # правило «from 203.0.113.45 lookup 100»
curl --interface 203.0.113.45 https://ifconfig.me   # ответ - ваш адрес

Снаружи сервер теперь отвечает и на этот адрес. Исходящие соединения по умолчанию идут через основной интерфейс; чтобы программа выходила с дополнительного адреса, укажите его в её настройках (адрес исходящих соединений, bind, --interface).

Частые вопросы

Подождите минуту и выполните sudo netplan apply (Ubuntu, Debian) или sudo nmcli con up "$CON" (AlmaLinux) ещё раз.

Правила доступа сервера в кабинете на этот интерфейс не действуют. Закрывайте лишние порты на самом сервере: ufw, firewalld или nftables.