Как настроить дополнительные IPv4 на VPS в Ubuntu и Debian 列印

  • ipv4, debian, ip подсети, Debian, dedicated, iptables
  • 0

Дополнительный IPv4 на VPS не всегда начинает работать автоматически после покупки. Провайдер может выдать адрес в панели биллинга, привязать его к серверу на своей стороне, но внутри операционной системы IP все равно нужно добавить вручную. Из-за этого многие клиенты боятся покупать дополнительные IPv4: кажется, что после оплаты адрес будет непонятно как включать.

На практике настройка обычно занимает несколько минут, если понимать три вещи: какой сетевой интерфейс используется на сервере, какой менеджер сети управляет конфигурацией и в каком виде провайдер маршрутизирует дополнительный IP. В большинстве VPS-сценариев дополнительный IPv4 добавляется на основной сетевой интерфейс с маской /32 и без отдельного gateway.

Эта инструкция подходит для Ubuntu и Debian на VPS. Она закрывает базовые сценарии: временно проверить дополнительный IPv4, сделать постоянную настройку через Netplan, через /etc/network/interfaces и через systemd-networkd, а также понять, почему IP может не пинговаться после настройки.

Что важно понять перед настройкой

Дополнительный IPv4 — это не отдельный сервер и не обязательно отдельная сетевая карта. Чаще всего это еще один адрес, который нужно добавить на уже существующий интерфейс, например ens3, eth0, enp1s0 или ens18.

Основной IPv4 сервера обычно уже настроен автоматически при выдаче VPS. Его трогать не нужно, если сервер работает и SSH доступен. Главная задача — добавить новый адрес рядом с основным, не ломая текущий gateway, DNS и существующую маршрутизацию.

Самая частая ошибка — полностью заменить текущий сетевой конфиг примером из инструкции. Так делать нельзя. Нужно сначала посмотреть, как сеть настроена сейчас, сделать резервную копию файла и только потом добавить новый IPv4.

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

  • Доступ к VPS по SSH.
  • Дополнительный IPv4, выданный провайдером.
  • Основной сетевой интерфейс сервера.
  • Доступ к VNC/HTML5 console в панели провайдера, если есть риск потерять SSH.
  • Понимание, какой способ настройки сети используется: Netplan, ifupdown или systemd-networkd.

Если вы используете VPS HSTQ и не хотите настраивать сеть вручную, можно обратиться в поддержку. Для клиентов с дополнительными IPv4 мы можем помочь с базовой привязкой адресов к серверу и проверкой маршрутизации, если это предусмотрено вашим тарифом и условиями услуги.

Безопасный порядок настройки

Перед любыми изменениями нужно действовать не с конфигурационного файла, а с диагностики. Это снижает риск потерять доступ к серверу.

  • Сначала определите основной интерфейс.
  • Потом временно добавьте дополнительный IPv4 командой ip addr add.
  • Проверьте, отвечает ли адрес.
  • Только после этого внесите настройку постоянно.
  • Не добавляйте второй default gateway для дополнительного IPv4.
  • Не удаляйте текущий основной IP.
  • Не перезагружайте сервер до проверки конфига.

Шаг 1. Узнать имя сетевого интерфейса

Выполните команду:

ip -br addr

Пример вывода:

lo               UNKNOWN        127.0.0.1/8 ::1/128
ens3             UP             185.000.000.10/24

В этом примере основной интерфейс — ens3. У вас он может называться eth0, enp1s0, ens18 или иначе.

Еще один полезный способ определить интерфейс, через который сервер выходит в интернет:

ip route get 1.1.1.1

Пример:

1.1.1.1 via 185.000.000.1 dev ens3 src 185.000.000.10

Здесь видно, что внешний трафик идет через интерфейс ens3. Именно на него обычно нужно добавлять дополнительный IPv4.

Шаг 2. Проверить текущую сетевую систему

На Ubuntu Server чаще всего используется Netplan. На Debian часто встречается /etc/network/interfaces. На некоторых VPS может использоваться systemd-networkd. Иногда конфигурацию сети генерирует cloud-init.

Проверьте Netplan:

ls -la /etc/netplan/

Если в каталоге есть YAML-файлы, например 50-cloud-init.yaml или 00-installer-config.yaml, вероятно, сеть управляется через Netplan.

Проверьте классический Debian ifupdown:

cat /etc/network/interfaces

Если там описан основной интерфейс, например iface ens3 inet static или iface ens3 inet dhcp, значит сеть может управляться через /etc/network/interfaces.

Проверьте systemd-networkd:

systemctl is-active systemd-networkd
networkctl status

Если systemd-networkd активен и интерфейс отображается как managed, конфигурация может находиться в /etc/systemd/network/.

Шаг 3. Временно добавить дополнительный IPv4

Перед постоянной настройкой лучше проверить IP временно. Эта команда добавит адрес до перезагрузки или до перезапуска сети.

Замените ADDITIONAL_IP на ваш новый IPv4, а ens3 на имя вашего интерфейса:

sudo ip addr add ADDITIONAL_IP/32 dev ens3

Пример:

sudo ip addr add 203.0.113.50/32 dev ens3

Проверьте, появился ли IP на интерфейсе:

ip -br addr show ens3

Проверьте исходящий запрос именно с дополнительного IPv4:

curl --interface ADDITIONAL_IP https://ifconfig.me

Если в ответе отображается ваш дополнительный IPv4, адрес работает для исходящего трафика.

Проверить пинг с дополнительного IPv4 можно так:

ping -I ADDITIONAL_IP -c 4 1.1.1.1

Если временная настройка работает, можно переходить к постоянной конфигурации.

Важный момент про входящий и исходящий трафик

То, что IP добавлен на интерфейс, еще не означает, что все сервисы автоматически начнут использовать его как исходящий адрес. Многие приложения используют основной IP сервера, если явно не указать bind/listen на дополнительный адрес.

Например, proxy-сервер, VPN-панель, nginx, Xray, 3X-UI, Marzban, Docker-контейнер или другой сервис может требовать отдельной настройки bind address. Если сервис должен слушать именно дополнительный IPv4, это нужно указать в настройках самого сервиса.

Проверить, какие адреса слушают сервисы, можно так:

ss -lntup

Если сервис слушает 0.0.0.0, он принимает подключения на всех IPv4 сервера. Если он слушает только основной IP или 127.0.0.1, дополнительный IPv4 нужно указать в конфиге сервиса отдельно.

Вариант 1. Ubuntu с Netplan

На Ubuntu Server сеть часто управляется через Netplan. Конфиги находятся в /etc/netplan/ и имеют расширение .yaml.

Сначала сделайте резервную копию текущего конфига:

sudo cp -a /etc/netplan /etc/netplan.backup.$(date +%F-%H%M%S)

Откройте текущий YAML-файл:

ls -la /etc/netplan/
sudo nano /etc/netplan/50-cloud-init.yaml

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

Netplan: если основной IP получен по DHCP

Если основной IPv4 сервер получает по DHCP, а дополнительный IPv4 нужно добавить вручную, пример может выглядеть так:

network:
  version: 2
  ethernets:
    ens3:
      dhcp4: true
      addresses:
        - 203.0.113.50/32

Если дополнительных IPv4 несколько:

network:
  version: 2
  ethernets:
    ens3:
      dhcp4: true
      addresses:
        - 203.0.113.50/32
        - 203.0.113.51/32
        - 203.0.113.52/32

После изменения проверьте конфиг:

sudo netplan generate

Затем примените безопасно через netplan try:

sudo netplan try

Если связь не пропала и все работает, подтвердите применение. Если что-то пошло не так, Netplan откатит изменения.

Если netplan try недоступен или не подходит, используйте:

sudo netplan apply

Netplan: если основной IP настроен статически

Если основной IP уже прописан статически, не удаляйте его. Нужно добавить дополнительный IPv4 в список addresses.

Пример:

network:
  version: 2
  ethernets:
    ens3:
      addresses:
        - 185.000.000.10/24
        - 203.0.113.50/32
        - 203.0.113.51/32
      routes:
        - to: default
          via: 185.000.000.1
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8

В этом примере 185.000.000.10 — основной IP сервера, 185.000.000.1 — основной gateway, а 203.0.113.50 и 203.0.113.51 — дополнительные IPv4.

Не добавляйте отдельный gateway для каждого дополнительного IPv4. Обычно default gateway должен быть один — тот, который уже используется основным IP сервера.

Вариант 2. Debian через /etc/network/interfaces

На Debian часто используется классическая настройка через /etc/network/interfaces. Сначала сделайте резервную копию:

sudo cp -a /etc/network/interfaces /etc/network/interfaces.backup.$(date +%F-%H%M%S)

Откройте файл:

sudo nano /etc/network/interfaces

Debian: если основной IP настроен через DHCP

Пример для DHCP и одного дополнительного IPv4:

auto lo
iface lo inet loopback

auto ens3
iface ens3 inet dhcp
    post-up ip addr add 203.0.113.50/32 dev $IFACE || true
    pre-down ip addr del 203.0.113.50/32 dev $IFACE || true

Для нескольких дополнительных IPv4:

auto lo
iface lo inet loopback

auto ens3
iface ens3 inet dhcp
    post-up ip addr add 203.0.113.50/32 dev $IFACE || true
    post-up ip addr add 203.0.113.51/32 dev $IFACE || true
    post-up ip addr add 203.0.113.52/32 dev $IFACE || true
    pre-down ip addr del 203.0.113.50/32 dev $IFACE || true
    pre-down ip addr del 203.0.113.51/32 dev $IFACE || true
    pre-down ip addr del 203.0.113.52/32 dev $IFACE || true

Debian: если основной IP настроен статически

Пример статической настройки:

auto lo
iface lo inet loopback

auto ens3
iface ens3 inet static
    address 185.000.000.10
    netmask 255.255.255.0
    gateway 185.000.000.1
    dns-nameservers 1.1.1.1 8.8.8.8
    post-up ip addr add 203.0.113.50/32 dev $IFACE || true
    post-up ip addr add 203.0.113.51/32 dev $IFACE || true
    pre-down ip addr del 203.0.113.50/32 dev $IFACE || true
    pre-down ip addr del 203.0.113.51/32 dev $IFACE || true

После изменения можно перезапустить интерфейс, но на удаленном VPS это рискованно. Безопаснее иметь открытую VNC/console-сессию в панели провайдера.

Применение через ifreload доступно не всегда. Если установлен пакет ifupdown2, можно использовать:

sudo ifreload -a

Если ifreload нет, перезапуск сети может оборвать SSH:

sudo systemctl restart networking

Перед этой командой лучше убедиться, что у вас есть доступ к консоли сервера.

Вариант 3. systemd-networkd

Некоторые VPS используют systemd-networkd. Конфиги обычно находятся в /etc/systemd/network/.

Проверьте файлы:

ls -la /etc/systemd/network/

Пример DHCP-конфига с дополнительными IPv4:

[Match]
Name=ens3

[Network]
DHCP=yes
Address=203.0.113.50/32
Address=203.0.113.51/32

Пример статического конфига:

[Match]
Name=ens3

[Network]
Address=185.000.000.10/24
Address=203.0.113.50/32
Address=203.0.113.51/32
Gateway=185.000.000.1
DNS=1.1.1.1
DNS=8.8.8.8

Применить изменения можно так:

sudo networkctl reload
sudo networkctl reconfigure ens3

Если изменения не применились, может потребоваться перезапуск systemd-networkd:

sudo systemctl restart systemd-networkd

На удаленном VPS перезапуск сетевого сервиса лучше делать только при наличии консоли, потому что ошибка в конфиге может оборвать SSH.

Что делать, если cloud-init перезаписывает сеть

На некоторых VPS сетевой конфиг генерируется cloud-init. В Ubuntu это часто видно по файлу /etc/netplan/50-cloud-init.yaml. Иногда ручные изменения могут быть перезаписаны после пересоздания сервера, смены конфигурации или повторной инициализации cloud-init.

Проверьте cloud-init:

cloud-init status
ls -la /etc/cloud/cloud.cfg.d/

Если cloud-init управляет сетью, не удаляйте его вслепую. Сначала убедитесь, что у вас есть рабочий постоянный Netplan-конфиг. Только после этого можно отключать управление сетью через cloud-init.

Типовой файл для отключения сетевой конфигурации cloud-init:

sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

Содержимое:

network: {config: disabled}

После этого нужно убедиться, что Netplan-конфиг полностью описывает рабочую сеть сервера. Если отключить cloud-init без корректного сетевого конфига, после перезагрузки можно потерять доступ к VPS.

Как проверить, что дополнительный IPv4 работает

Проверьте, что IP добавлен на интерфейс:

ip addr show dev ens3

Проверьте маршруты:

ip route

Проверьте исходящий трафик с дополнительного IPv4:

curl --interface 203.0.113.50 https://ifconfig.me

Проверьте пинг с дополнительного IPv4:

ping -I 203.0.113.50 -c 4 1.1.1.1

Проверьте входящую доступность с другого сервера или локального компьютера:

ping 203.0.113.50

Если на IP должен отвечать веб-сервер, проверьте:

curl -I http://203.0.113.50

Если на IP должен работать proxy/VPN/панель, проверьте, что сервис слушает нужный адрес и порт:

ss -lntup

Почему IP добавлен, но не работает

Если дополнительный IPv4 добавлен в систему, но не работает, причина не всегда в Ubuntu или Debian. Нужно проверить несколько уровней: маршрутизацию у провайдера, локальную сеть сервера, firewall, настройки сервиса и bind address.

  • IP не привязан к VPS на стороне провайдера.
  • IP добавлен не на тот интерфейс.
  • В конфиге указан неправильный prefix, например /24 вместо /32 или наоборот.
  • Добавлен лишний default gateway.
  • Netplan YAML содержит ошибку в отступах.
  • Firewall блокирует входящий трафик.
  • Сервис слушает только основной IP или 127.0.0.1.
  • cloud-init перезаписал конфигурацию после reboot.
  • Провайдер использует нестандартную схему маршрутизации для дополнительных IP.
  • В панели провайдера для дополнительного IP требуется отдельная привязка, virtual MAC или route-настройка.

Проверка firewall

Если IP пингуется с сервера, но не доступен снаружи, проверьте firewall.

Для UFW:

sudo ufw status verbose

Для nftables:

sudo nft list ruleset

Для iptables:

sudo iptables -S

Если вы используете панель управления, например HestiaCP, 3X-UI, Marzban, Docker или другую систему, у нее могут быть свои правила firewall. В таком случае нужно проверять не только системный firewall, но и правила самой панели.

Как использовать дополнительный IPv4 для конкретного сайта в nginx

Если nginx должен слушать сайт на дополнительном IPv4, укажите этот IP в listen.

server {
    listen 203.0.113.50:80;
    server_name example.com;

    root /var/www/example.com;
    index index.html index.php;
}

Для HTTPS:

server {
    listen 203.0.113.50:443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    root /var/www/example.com;
    index index.html index.php;
}

Если nginx слушает 0.0.0.0:80 и 0.0.0.0:443, он принимает подключения на всех IPv4 сервера. Но для отдельных сайтов, клиентов или панелей часто удобнее явно указывать нужный IP.

Как использовать дополнительный IPv4 для исходящих запросов

Для разовой проверки можно использовать curl:

curl --interface 203.0.113.50 https://ifconfig.me

Для приложений лучше настраивать исходящий IP внутри самого приложения, если оно поддерживает bind address. Это правильнее, чем ломать системную маршрутизацию ради одного сервиса.

Если нужно, чтобы весь трафик от конкретного дополнительного IP шел с ним же как source address, может потребоваться policy routing. Это уже более продвинутая настройка и она зависит от схемы провайдера. Без понимания gateway и маршрутизации лучше не применять такие правила вслепую.

Пример временного policy routing

Этот пример подходит не для всех VPS. Используйте его только если понимаете, какой gateway должен использовать сервер.

sudo ip rule add from 203.0.113.50/32 table 100
sudo ip route add default via 185.000.000.1 dev ens3 src 203.0.113.50 table 100

Проверить:

ip rule
ip route show table 100
curl --interface 203.0.113.50 https://ifconfig.me

Удалить временные правила:

sudo ip rule del from 203.0.113.50/32 table 100
sudo ip route flush table 100

Если вам просто нужно, чтобы proxy, nginx, VPN или другой сервис работал на отдельном IP, чаще всего policy routing не нужен. Достаточно добавить IP на интерфейс и настроить bind/listen в приложении.

Нужно ли перезагружать VPS

Обычно перезагружать VPS не нужно. После изменения Netplan, interfaces или systemd-networkd достаточно применить сетевой конфиг. Но после постоянной настройки полезно сделать controlled reboot в момент, когда у вас есть доступ к консоли, чтобы убедиться, что дополнительный IPv4 сохраняется после перезагрузки.

Проверка после reboot:

ip -br addr
ip route
curl --interface 203.0.113.50 https://ifconfig.me

Частые ошибки

  • Редактировать сетевой конфиг без резервной копии.
  • Не проверить имя интерфейса и добавить IP на неправильный dev.
  • Скопировать чужой Netplan-конфиг целиком и потерять основной IP.
  • Сделать ошибку в YAML-отступах.
  • Добавить отдельный gateway для каждого дополнительного IP.
  • Использовать старый формат eth0:0 вместо нормального добавления адреса.
  • Не проверить, что IP привязан к VPS на стороне провайдера.
  • Не проверить firewall.
  • Ожидать, что сервис автоматически начнет использовать новый IP без bind-настройки.
  • Отключить cloud-init до создания рабочего постоянного сетевого конфига.

Как быстро восстановить доступ, если сеть сломалась

Если после изменения сети SSH пропал, используйте VNC/console в панели провайдера. Дальше откатите конфигурацию из резервной копии.

Для Netplan:

sudo rm -rf /etc/netplan
sudo cp -a /etc/netplan.backup.YYYY-MM-DD-HHMMSS /etc/netplan
sudo netplan apply

Для Debian /etc/network/interfaces:

sudo cp -a /etc/network/interfaces.backup.YYYY-MM-DD-HHMMSS /etc/network/interfaces
sudo systemctl restart networking

Если сеть была сломана временной командой ip addr add, достаточно удалить адрес:

sudo ip addr del 203.0.113.50/32 dev ens3

Если вы не уверены, какой файл сломан, сначала посмотрите текущие адреса и маршруты:

ip -br addr
ip route
systemctl status systemd-networkd
systemctl status networking

Когда лучше не настраивать вручную

Если у вас production-сервер, нет VNC/console, нет опыта с Netplan или вы не уверены в схеме маршрутизации провайдера, лучше не экспериментировать на рабочей машине. Ошибка в сетевом конфиге может отрезать SSH и остановить сервисы.

Также не стоит вручную настраивать десятки или сотни IP по одному без нормального плана. Если вам нужно много IPv4, лучше заранее обсудить подсеть, /24, IP-rent, dedicated server или BYOIP/BGP. Для крупных проектов адреса нужно планировать как сетевую инфраструктуру, а не как случайный список IP в конфиге.

Что написать в поддержку, если IP не работает

Чтобы поддержка быстро проверила проблему, не пишите просто “IP не работает”. Лучше сразу отправить технические данные.

  • Основной IP сервера.
  • Дополнительный IPv4, который не работает.
  • Операционная система: Ubuntu или Debian, версия.
  • Вывод команды ip -br addr.
  • Вывод команды ip route.
  • Какой способ настройки используется: Netplan, interfaces или systemd-networkd.
  • Проверяли ли curl --interface ADDITIONAL_IP https://ifconfig.me.
  • Проверяли ли firewall.
  • Нужен ли IP для входящего трафика, исходящего трафика или конкретного сервиса.

Пример нормального обращения:

Hello. I added additional IPv4 203.0.113.50 to VPS 185.000.000.10 on interface ens3 as /32. The address is visible in ip addr, but curl --interface 203.0.113.50 https://ifconfig.me does not work. Please check if this IPv4 is routed to my VPS from your side.

Минимальный рабочий чеклист

  • Узнать интерфейс через ip -br addr.
  • Временно добавить IP через ip addr add ADDITIONAL_IP/32 dev INTERFACE.
  • Проверить curl --interface ADDITIONAL_IP https://ifconfig.me.
  • Определить сетевой менеджер: Netplan, interfaces или systemd-networkd.
  • Сделать резервную копию текущего конфига.
  • Добавить IP в постоянный конфиг.
  • Применить изменения безопасным способом.
  • Проверить IP после перезагрузки.
  • Настроить bind/listen в нужном сервисе.
  • Проверить firewall и внешнюю доступность.

Дополнительные IPv4 на VPS не являются сложной задачей, если не трогать основной IP, не добавлять лишний gateway и сначала проверять адрес временно. Для одного или нескольких IP обычно достаточно добавить адреса на основной интерфейс. Для десятков и сотен IPv4 лучше заранее планировать подсеть, dedicated server, IP-rent или BYOIP/BGP, чтобы не превращать рабочую инфраструктуру в набор ручных правок.

Если вы используете VPS HSTQ и хотите подключить дополнительные IPv4, заранее уточните количество адресов, локацию и задачу. Для небольших проектов можно добавить отдельные IPv4 к VPS. Для крупных задач лучше рассмотреть аренду IPv4, подсеть /24, выделенный сервер или сетевую схему с BGP.


這篇文章有幫助嗎?

相關文章

Как использовать свои подсети /24 на серверах Hetzner. Использование на Windows Server   Hetzner выдаёт только один белый IP. Хочется RDP на несколько ВМ, собственный почтовый пул или... Какие есть боты/сервисы, которые стоит добавить в исключения? Практический гайд для защиты сайта и бизнеса В современных условиях кибербезопасности настройка блокировок и фильтров — обязательная мера для... Какие есть боты/сервисы, которые стоит добавить в исключения? Практический гайд для защиты сайта и бизнеса В современных условиях кибербезопасности настройка блокировок и фильтров — обязательная мера для... Что делать, если сертификаты Let’s Encrypt не обновляются? Простое решение за 5 минут Сертификаты от Let’s Encrypt стали стандартом для бесплатной автоматической защиты сайтов по... Какие сервисы и решения реально помогают? Топ-10 инструментов Почему взламывают сайты и что самое опасное? Современный сайт на WordPress, Битрикс, Joomla,...
« 返回

知識庫