Это инструкция для серверов с операционными системами 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
После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно.