Бесплатная миграция IT-инфраструктуры в облако
На главную
61c46507-12c7-4300-a301-bd8bc30c7c19
Инструкции для серверов

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

Это инструкция для серверов с операционными системами 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

Настройка 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

Примените конфиг 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

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

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

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

Откройте файл /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

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

Откройте файл /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

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

Проверьте директорию /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}

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

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

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

Перезапустите службу 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]

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

Добавьте первый адрес к соединению:

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 в CentOS

Конфигурация 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

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

Проверьте директорию /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}

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

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

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

Перезапустите службу NetworkManager:

systemctl restart NetworkManager.service

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

ip addr

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

BitrixVM

  1. В меню Битрикса выберите: 2. Configure localhost settings - 3. Configure network interface manually

  2. Укажите следующие параметры:

  • Выберите сетевой интерфейс: например, 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.

  1. Проверить введенные данные и дать согласие на изменение параметров сети сервера (Please confirm changes).

  2. Проверьте, что адреса добавились на интерфейс в меню BitrixVM или при помощи команды:

ip addr

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

 

Была ли статья полезна?
Ваша оценка очень важна
Комментарии 4
Антон
11.09.2024, 14:10

Столкнулся с той же самой проблемой - не отключил DHCP-клиент, он "перезатирал" назначенные статически адреса.

Однако остаётся вопрос - как в таком случае хост получит настройки DNS?

Назначение нескольких IP на один интерфейс через DHCP возможно с помощью "option 61 which is the client id option", как это описано тут: https://superuser.com/a/1084209/782675. Для этого, однако, нужна поддержка и со стороны сервера (DHCP).

Разве не для исключения ошибок конфигурирования путём автоматизации создавался IPv6?

Timeweb Cloud
Timeweb Cloud
13.09.2024, 12:46

Добрый день! DNS настраиваем тоже статически, в этой статье выбраны DNS-серверы 1.1.1.1 и 1.0.0.1. Его можно настроить через конфигуратор сети или вручную в /etc/resolv.conf, если его нет.

Что касается выдачи нескольких адресов, наш DHCP выдает только первый адрес в описании виртуальной машины.

Роман
28.08.2024, 18:23

Почему нужно отключать dhcp? Разве адрес не выдается сам по dhcp?

Timeweb Cloud
Timeweb Cloud
29.08.2024, 12:15

Добрый день! Когда заканчивается срок аренды адреса, может появиться небольшой промежуток времени, в который сервер остается без сети и ждет ответ от DHCP.

К тому же настроить адреса вручную просто безопаснее — можно не полагаться на отдельную службу в случае, если она вдруг будет недоступна.

Также, DHCP не сможет назначить дополнительные адреса. Их в любом случае придется настраивать статически, потому что DHCP выдает только один IP на один MAC. После настройки нужно обязательно отключить службу DHCP, чтобы она не перезаписывала настройки сети на свои.