Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
61c46507-12c7-4300-a301-bd8bc30c7c19
Инструкции для серверов

Добавление дополнительного IP

Это инструкция для серверов с операционными системами Linux. Если вы используете сервер с ОС Windows, воспользуйтесь этой статьей.

Чтобы добавить на сервер дополнительный IP-адрес, сначала его необходимо добавить в панели управления, после чего настроить внутри сервера — по инструкции ниже.

По этой же инструкции вы можете настроить статический адрес для сервера; в этом случае при настройке вместо дополнительного IP указывайте основной IP-адрес сервера.

В качестве примера в этой инструкции мы будем использовать адреса:

  • 192.0.2.70

  • 198.51.100.12

  • 2001:db8:a:a::a

  • 2001:db8:b:b::b

Кроме самих адресов также потребуется указать маску сети, шлюз и название интерфейса.

  • Маска сети. Для IPv4-адресов указывайте /24, а для IPv6 — /128 (или /64). В статье мы будем использовать 192.0.2.70/24 и 2001:db8:a:a::a/128.

  • Шлюз. Это первый адрес в сети, достаточно поменять последнее число IP-адреса (октет или хекстет) на 1. Подойдет шлюз любого из ваших адресов. Например, 192.0.2.1 и 2001:db8:a:a::1.

  • Интерфейс. В зависимости от дистрибутива название интерфейса будет отличаться. Например, это могут быть eth0 или ens3. Проверить имя интерфейса на своем сервере можно командой ip addr

Чтобы настроить IP-адрес на сервере, подключитесь к нему по SSH. В статье будут указаны команды, которые нужно выполнить в консоли. 

Если во время настройки что-то пойдет не так и на сервере пропадет интернет, вы не сможете подключиться к нему удаленно по SSH. В этом случае вы можете использовать консоль в панели управления — продолжить настройку в ней или временно настроить интернет утилитой ip.

Временная настройка

Если вам нужно настроить сеть временно, вы можете использовать утилиту ip. Все изменения пропадут после перезагрузки сервера.

Проверьте, какие адреса уже добавлены на интерфейс:

    
ip addr

Добавьте нужные адреса командой ниже, указав верное значение IP. Для IPv4:

    
ip addr add 192.0.2.70/24 dev eth0

Для IPv6:

    
ip addr add 2001:db8:a:a::a/128 dev eth0

Проверьте, какой IPv4-адрес указан в качестве шлюза по умолчанию:

    
ip route show default

Посмотреть шлюз для IPv6 можно так:

    
ip -6 route show default

Если шлюза нет, добавьте его этой командой:

    
ip route add default via 192.0.2.1 dev eth0

Для IPv6:

    
ip route add default via 2001:db8:a:a::1 dev eth0

Постоянная настройка

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

Ubuntu использует netplan для сетевых настроек, все конфигурационные файлы находятся в /etc/netplan/ и называются произвольно. Своим файлам вы тоже можете выбрать произвольные названия, но они должны иметь расширение .yaml.

В файлах формата YAML важно выставлять одинаковые отступы пробелами, табуляция не допускается. С помощью отступов вы указываете вложенность конфигурации, например, что настройка маршрутов routes вложена в настройки интерфейса eth0.

После выполнения этой инструкции у вас будет два файла: для IPv4 и IPv6. Вы можете держать их вместе одновременно без конфликтов, потому что netplan объединит их в одну конфигурацию.

Посмотреть на объединенную конфигурацию можно этой командой:

    
netplan get

Вот пример вывода команды, который получится, если следовать каждому пункту в этой инструкции:

    
network: version: 2 renderer: networkd ethernets: eth0: addresses: - "192.0.2.70/24" - "198.51.100.12/24" - "2001:db8:a:a::a/128" - "2001:db8:b:b::b/128" nameservers: addresses: - "1.1.1.1" - "1.0.0.1" - "2606:4700:4700::1111" - "2606:4700:4700::1001" dhcp4: false dhcp6: false routes: - to: "0.0.0.0/0" via: "192.0.2.1" - to: "::/0" via: "2001:db8:a:a::1"

В этой конфигурации название интерфейса eth0 на некоторых версиях Ubuntu придется поменять. Проверьте имя интерфейса на своем сервере этой командой:

    
ip addr

Настройка IPv4 в Ubuntu

Создайте файл /etc/netplan/99-ipv4.yaml:

    
nano /etc/netplan/99-ipv4.yaml

Скопируйте эти строки, заменив адреса (addresses) и шлюз (via) на нужные значения:

    
network: version: 2 renderer: networkd ethernets: eth0: dhcp4: false addresses: - "192.0.2.70/24" - "198.51.100.12/24" routes: - to: "0.0.0.0/0" via: "192.0.2.1" nameservers: addresses: - "1.1.1.1" - "1.0.0.1"

Закройте права на чтение этого файла всем, кроме root:

    
chmod 600 /etc/netplan/99-ipv4.yaml

Настройка IPv6 в Ubuntu

Создайте файл /etc/netplan/99-ipv6.yaml:

    
nano /etc/netplan/99-ipv6.yaml

Скопируйте эти строки, заменив адреса (addresses) и шлюз (via) на нужные значения:

    
network: version: 2 renderer: networkd ethernets: eth0: dhcp6: false addresses: - "2001:db8:a:a::a/128" - "2001:db8:b:b::b/128" routes: - to: "::/0" via: "2001:db8:a:a::1" nameservers: addresses: - "2606:4700:4700::1111" - "2606:4700:4700::1001"

Закройте права на чтение этого файла всем, кроме root:

    
chmod 600 /etc/netplan/99-ipv6.yaml

Отключите dhclient6 из автозагрузки:

    
systemctl disable dhclient6.service

Так как служба systemd-networkd тоже вызывает dhclient6 при запуске сервера, нужно отредактировать файл сервиса:

  • На Ubuntu 20.04, 22.04 и 24.04 откройте /usr/lib/systemd/system/systemd-networkd.service

  • На Ubuntu 18.04 откройте /lib/systemd/system/systemd-networkd.service

    
nano /usr/lib/systemd/system/systemd-networkd.service

Закомментируйте эту строку, чтобы dhclient6 не вызывался при каждом старте сервера:

    
#Wants=network.target dhclient6.service

В Debian 12 необходимо закомментировать строку:

    
Wants=network.target dhcpcd6.service

Примените конфиг systemd:

    
systemctl daemon-reload

Отключение прошлых настроек в Ubuntu

Проверьте директорию /etc/netplan/, в ней могут быть другие настройки интерфейсов, которые будут конфликтовать с вашими. На чистой установке будет файл 50-cloud-init.yaml, остальные можно проверить этой командой:

    
ls -a /etc/netplan/

Переименуйте файл /etc/netplan/50-cloud-init.yaml, главное — чтобы он не заканчивался на .yaml:

    
mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml-backup-$(date +"%Y%m%d")

Повторите это со всеми файлами, кроме 99-ipv4.yaml и 99-ipv6.yaml, если они есть.

В старых версиях Ubuntu также могут быть файлы 01-netcfg.yaml или 00-installer-config.yaml, их тоже нужно переименовать:

    
mv /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml-backup-$(date +"%Y%m%d") mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml-backup-$(date +"%Y%m%d")

Чтобы cloud-init больше не создавал свой файл после перезагрузки сервера, создайте файл /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg:

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

И пропишите в нем эту строку:

    
network: {config: disabled}

Прослушивание адреса в Ubuntu

После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Поэтому разрешаем bind на адреса, которых нет на интерфейсе.

Откройте файл /etc/sysctl.conf:

    
nano /etc/sysctl.conf

Допишите в него эти строки:

    
net.ipv4.ip_nonlocal_bind = 1 net.ipv6.ip_nonlocal_bind = 1

Перезагрузите конфигурацию sysctl:

    
sysctl -p /etc/sysctl.conf

Применение настроек в Ubuntu

Примените конфиг netplan:

    
netplan --debug apply

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

    
ip addr

После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно.

 

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев