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