Это инструкция для серверов с операционными системами Linux. Если вы используете сервер с ОС Windows, воспользуйтесь этой статьей.
Чтобы добавить на сервер дополнительный IP-адрес, сначала его необходимо добавить в панели управления, после чего настроить статически внутри сервера — по инструкции ниже.
В качестве примера в этой инструкции мы будем использовать адреса:
192.0.2.70
198.51.100.12
2001:db8:a:a::a
2001:db8:b:b::b
Кроме самих адресов также потребуется указать маску сети, шлюз и название интерфейса.
Маска сети. Для IPv4-адресов указывайте /24
, а для IPv6 — /128
. В статье мы будем использовать 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
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
Создайте файл /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
Создайте файл /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
Проверьте директорию /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}
После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Поэтому разрешаем 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
Примените конфиг netplan
:
netplan --debug apply
Проверьте, что адреса добавились на интерфейс:
ip addr
После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно.
Debian
Начиная с Debian 12, для настройки сети используется Netplan. Если вы работаете с этой версией, воспользуйтесь инструкцией для Ubuntu.
Debian использует файл /etc/network/interfaces для сетевых настроек.
Вот пример итоговой конфигурации, если следовать каждому пункту в этой инструкции:
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.0.2.70/24
gateway 192.0.2.1
post-up ip addr add 198.51.100.12/24 dev eth0
pre-down ip addr del 198.51.100.12/24 dev eth0
auto eth0
allow-hotplug eth0
iface eth0 inet6 static
address 2001:db8:a:a::a/128
gateway 2001:db8:a:a::1
post-up ip addr add 2001:db8:b:b::b/128 dev eth0
pre-down ip addr del 2001:db8:b:b::b/128 dev eth0
Откройте файл /etc/network/interfaces
:
nano /etc/network/interfaces
Закомментируйте или удалите текущие настройки интерфейса eth0
:
#allow-hotplug eth0
#iface eth0 inet dhcp
Добавьте следующие строки, заменив адреса и шлюз (gateway
) на нужные значения:
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.0.2.70/24
gateway 192.0.2.1
post-up ip addr add 198.51.100.12/24 dev eth0
pre-down ip addr del 198.51.100.12/24 dev eth0
Откройте файл /etc/network/interfaces
:
nano /etc/network/interfaces
Добавьте в него следующие строки, заменив адреса и шлюз (gateway
) на нужные значения:
auto eth0
allow-hotplug eth0
iface eth0 inet6 static
address 2001:db8:a:a::a/128
gateway 2001:db8:a:a::1
post-up ip addr add 2001:db8:b:b::b/128 dev eth0
pre-down ip addr del 2001:db8:b:b::b/128 dev eth0
Отключите dhclient6
из автозагрузки:
systemctl disable dhclient6.service
Так как служба networking
тоже вызывает dhclient6
при запуске сервера, нужно отредактировать файл /lib/systemd/system/networking.service
:
nano /lib/systemd/system/networking.service
Закомментируйте эту строку, чтобы dhclient6
не вызывался при каждом старте сервера:
#Wants=network.target dhclient6.service
Примените конфигурацию systemd
:
systemctl daemon-reload
Проверьте директорию /etc/network/interfaces.d/
, в ней могут быть другие настройки интерфейсов, которые будут конфликтовать с вашими. На чистой установке будет файл 50-cloud-init
, остальные можно проверить этой командой:
ls -a /etc/network/interfaces.d/
Переместите /etc/network/interfaces.d/50-cloud-init
в другую директорию, например, в /root/
:
mv /etc/network/interfaces.d/50-cloud-init /root/50-cloud-init-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}
После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Поэтому разрешаем 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
Перезапустите службу networking
:
systemctl restart networking.service
Проверьте, что адреса добавились на интерфейс:
ip addr
После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно.
CentOS
CentOS использует NetworkManager для сетевых настроек. Вместо редактирования конфигурационных файлов можно использовать утилиту nmcli
или nmtui
.
Перед выполнением команд из инструкции проверьте имя соединения:
nmcli connection show
Отсюда вам нужно значение NAME
— в нашем случае это ens3
, в следующих командах будет использоваться это имя:
NAME UUID TYPE DEVICE
ens3 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ethernet ens3
Чтобы не исправлять каждую команду в инструкции, вы можете временно переименовать соединение на ens3
, а потом вернуть удобное имя. Например, если соединение называется eth0
, команда будет выглядеть так:
nmcli connection modify eth0 connection.id ens3
В последних версиях CentOS NetworkManager
сохраняет настройки в директорию /etc/NetworkManager/system-connections/
. Раньше использовались ifcfg-файлы в /etc/sysconfig/network-scripts/
, но они устарели и скоро будут удалены.
Вот пример содержания итоговой конфигурации в /etc/NetworkManager/system-connections/
, который получится, если следовать каждому пункту в этой инструкции:
[connection]
id=ens3
uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
type=ethernet
interface-name=ens3
timestamp=1719197216
[ethernet]
[ipv4]
address1=192.0.2.70/24,192.0.2.1
address2=198.51.100.12/24
dns=1.1.1.1;1.0.0.1;
method=manual
[ipv6]
addr-gen-mode=eui64
address1=2001:db8:a:a::a/128,2001:db8:a:a::1
address2=2001:db8:b:b::b/128
dns=2606:4700:4700::1111;2606:4700:4700::1001;
method=manual
[proxy]
Добавьте первый адрес к соединению:
nmcli connection modify ens3 ipv4.addresses 192.0.2.70/24
С помощью +
перед ipv4.addresses
можно добавить второй адрес:
nmcli connection modify ens3 +ipv4.addresses 198.51.100.12/24
Аналогично с помощью -
перед ipv4.addresses
можно удалить адрес, если вы ошиблись. Проверить все добавленные адреса можно этой командой:
nmcli connection show ens3 | grep addresses
Добавьте шлюз:
nmcli connection modify ens3 ipv4.gateway 192.0.2.1
Остальные команды можно просто скопировать. В них прописаны настройки DNS и указывается ручной способ конфигурации.
nmcli connection modify ens3 ipv4.dns 1.1.1.1
nmcli connection modify ens3 +ipv4.dns 1.0.0.1
nmcli connection modify ens3 ipv4.method manual
Конфигурация IPv6 выполняется по такому же принципу, как IPv4, только названия настроек теперь начинаются с ipv6
.
Добавьте ваши адреса и шлюз:
nmcli connection modify ens3 ipv6.addresses 2001:db8:a:a::a/128
nmcli connection modify ens3 +ipv6.addresses 2001:db8:b:b::b/128
nmcli connection modify ens3 ipv6.gateway 2001:db8:a:a::1
После этого скопируйте эти команды:
nmcli connection modify ens3 ipv6.dns 2606:4700:4700::1111
nmcli connection modify ens3 +ipv6.dns 2606:4700:4700::1001
nmcli connection modify ens3 ipv6.method manual
Проверьте директорию /etc/sysconfig/network-scripts/
, в ней могут быть другие настройки интерфейсов, которые будут конфликтовать с вашими. На чистой установке будет файл ifcfg-ens3
, созданный cloud-init
. Остальные можно проверить этой командой:
ls -a /etc/sysconfig/network-scripts/
Проверьте, что ifcfg-ens3
действительно создан cloud-init
. Он должен начинаться со слов «Created by cloud-init on instance boot automatically»:
head /etc/sysconfig/network-scripts/ifcfg-ens3
Переместите /etc/sysconfig/network-scripts/ifcfg-ens3
в другую директорию, например, в /root/
:
mv /etc/sysconfig/network-scripts/ifcfg-ens3 /root/ifcfg-ens3-backup-$(date +"%Y%m%d")
Чтобы изменения сохранились после перезагрузки сервера, создайте файл /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
:
nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
И пропишите в нем эту строку:
network: {config: disabled}
После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Поэтому разрешаем 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
Перезапустите службу NetworkManager
:
systemctl restart NetworkManager.service
Проверьте, что адреса добавились на интерфейс:
ip addr
После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно.
BitrixVM
В меню Битрикса выберите: 2. Configure localhost settings - 3. Configure network interface manually.
Укажите следующие параметры:
Выберите сетевой интерфейс: например, ens3
.
Enter IP address: новый IP-адрес сервера (можно указать несколько через запятую, без пробелов). Например: 192.0.2.70
.
Enter default gateway address: шлюз по умолчанию. Например: 192.0.2.1
.
Would you like to configure DNS server: y
.
Enter DNS server address: адрес DNS-сервера. Если указывается несколько серверов, разделяйте их пробелами. Например: 1.1.1.1 1.0.0.1
.
Проверить введенные данные и дать согласие на изменение параметров сети сервера (Please confirm changes).
Проверьте, что адреса добавились на интерфейс в меню BitrixVM или при помощи команды:
ip addr
После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно.
Начиная с Debian 12 для cloud-images по умолчанию используется Netplan (см. https://wiki.debian.org/Netplan), так что если у вас Debian 12, то используйте инструкцию для Ubuntu из данной статьи. А то сильно удивитесь увидев, что папки /etc/network не существует))). Timeweb, добавьте пометку в статью, пожалуйста!
Только вместо dhclient6 в Debian 12 в файле /usr/lib/systemd/system/systemd-networkd.service в строке Wants=network.target будет dhcpcd6, всё равно комментируем её.
Добрый день!
Спасибо за замечание! Мы добавили пометки в инструкцию.
У вас указаны в настройках nameservers Cloudflare (1.1.1.1 и 1.0.0.1). Какие nameservers выдаются от DHCP по-умолчанию?
Добрый день! По умолчанию выдаются DNS-серверы:
92.53.116.13
92.53.116.104
Столкнулся с той же самой проблемой - не отключил DHCP-клиент, он "перезатирал" назначенные статически адреса.
Однако остаётся вопрос - как в таком случае хост получит настройки DNS?
Назначение нескольких IP на один интерфейс через DHCP возможно с помощью "option 61 which is the client id option", как это описано тут: https://superuser.com/a/1084209/782675. Для этого, однако, нужна поддержка и со стороны сервера (DHCP).
Разве не для исключения ошибок конфигурирования путём автоматизации создавался IPv6?
Добрый день! DNS настраиваем тоже статически, в этой статье выбраны DNS-серверы 1.1.1.1 и 1.0.0.1. Его можно настроить через конфигуратор сети или вручную в
/etc/resolv.conf
, если его нет.Что касается выдачи нескольких адресов, наш DHCP выдает только первый адрес в описании виртуальной машины.
Почему нужно отключать dhcp? Разве адрес не выдается сам по dhcp?
Добрый день! Когда заканчивается срок аренды адреса, может появиться небольшой промежуток времени, в который сервер остается без сети и ждет ответ от DHCP.
К тому же настроить адреса вручную просто безопаснее — можно не полагаться на отдельную службу в случае, если она вдруг будет недоступна.
Также, DHCP не сможет назначить дополнительные адреса. Их в любом случае придется настраивать статически, потому что DHCP выдает только один IP на один MAC. После настройки нужно обязательно отключить службу DHCP, чтобы она не перезаписывала настройки сети на свои.
То есть для основного адреса также рекомендуется настроить статически? А то статья называется «Добавление дополнительного IP», а ссылка в вашем ответе (https://timeweb.cloud/docs/unix-guides/setting-static-ip) перекидывает тоже сюда (может там и была когда-то jnltkmyfz статья про основной ip).