Перейти к основному содержимому

Пример настройки второго публичного плавающего IP-адреса на облачном сервере

Цель настройки

Настроить второй публичный плавающий IP-адрес на облачном сервере, чтобы обращаться к серверу по двум публичным IP-адресам.

Что нужно для настройки

В примере для настройки мы использовали облачный сервер, который создан из готового образа Ubuntu 24.04 LTS 64-bit.

Сервер находится в приватной подсети 192.168.0.0/24 с шлюзом по умолчанию 192.168.0.1. Приватный IP-адрес облачного сервера — 192.168.0.2.

Приватная подсеть сервера подключена к облачному роутеру с доступом в интернет. Приватный IP-адрес облачного роутера совпадает с шлюзом приватной подсети.

К облачному серверу подключен один публичный плавающий IP-адрес 203.0.113.10.

Результат настройки

К облачному серверу добавлен второй порт в приватной подсети 192.168.0.0/24 с IP-адресом 192.168.0.3. К этому порту подключен второй публичный плавающий IP-адрес 198.51.100.13. Сервер принимает входящий трафик на оба публичных плавающих IP-адреса — первый 203.0.113.10 и второй 198.51.100.13.

Шаги настройки

  1. Добавьте порт в приватную подсеть.
  2. Создайте публичный плавающий IP-адрес.
  3. Подключите публичный плавающий IP-адрес к порту в приватной подсети.
  4. Измените файл конфигурации сети облачного сервера.
  5. Опционально: проверьте доступ в интернет и из интернета.

1. Добавить порт в приватную подсеть

  1. В панели управления в верхнем меню нажмите Продукты и выберите Облачные серверы.
  2. Перейдите в раздел Сеть → вкладка Приватные сети.
  3. Откройте страницу сети → вкладка Порты.
  4. Нажмите Добавить порт.
  5. Выберите подсеть, в примере — 192.168.0.0/24.
  6. Введите новый приватный IP-адрес порта, в примере — 192.168.0.3.
  7. Выберите облачный сервер, к которому нужно добавить порт.
  8. Нажмите Добавить.

2. Создать публичный плавающий IP-адрес

Создайте один публичный плавающий IP-адрес в одной локации с облачным сервером.

  1. В панели управления в верхнем меню нажмите Продукты и выберите Облачные серверы.
  2. Перейдите в раздел Сеть → вкладка Публичные плавающие IP-адреса.
  3. Нажмите Создать IP-адрес.
  4. Выберите локацию, в которой будет создан публичный плавающий IP-адрес.
  5. Укажите количество публичных плавающих IP-адресов.
  6. Нажмите Создать.

3. Подключить публичный плавающий IP-адрес к порту в приватной подсети

  1. В панели управления в верхнем меню нажмите Продукты и выберите Облачные серверы.
  2. Перейдите в раздел Сеть → вкладка Приватные сети.
  3. Откройте страницу сети → вкладка Порты.
  4. В карточке порта облачного сервера нажмите Публичный IP.
  5. Выберите публичный плавающий IP-адрес, который вы создали на этапе 2, в примере — 198.51.100.13.
  6. Нажмите Подключить.

4. Изменить файл конфигурации сети облачного сервера

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

  1. Подключитесь к серверу по первому публичному плавающему IP-адресу, в примере — 203.0.113.10.

  2. Если облачный сервер создан из образа с cloud-init, то при перезагрузке сервера cloud-init автоматически применяет сетевые настройки, которые указаны в панели управления на странице сервера на вкладке Порты. Изменения, которые вы внесли вручную в настройки сети сервера, не сохранятся.

    Чтобы отключить применение настроек из панели управления при перезагрузке сервера, отключите управление сетью через cloud-init:

    echo "network: {config: disabled}" >> /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
  3. Посмотрите MAC-адрес порта, который вы добавили на этапе 1. Для этого выведите информацию о сетевых интерфейсах сервера:

    ip link show
  4. Откройте конфигурационный файл утилиты netplan текстовым редактором vi:

    vi /etc/netplan/50-cloud-init.yaml
  5. Измените конфигурационный файл утилиты netplan:

    5.1. В конце блока с данными первого сетевого интерфейса добавьте маршруты:

    routes:
    - to: 0.0.0.0/0
    via: 192.168.0.1
    - to: 192.168.0.0/24
    table: 102
    - to: 0.0.0.0/0
    via: 192.168.0.1
    table: 102
    routing-policy:
    - from: 192.168.0.2/32
    table: 102

    Здесь:

    • 0.0.0.0/0 — подсеть по умолчанию для отправки интернет-трафика;
    • 192.168.0.1 — шлюз приватной подсети облачного сервера;
    • 192.168.0.0/24 — подсеть облачного сервера с маской /24;
    • 102 — идентификатор таблицы маршрутизации для первого интерфейса, уникальное число от 1 до 252;
    • 192.168.0.2/32 — приватный IP-адрес облачного сервера с маской /32.

    5.2. После блока с данными первого сетевого интерфейса добавьте второй сетевой интерфейс и маршруты для него:

    eth1:
    match:
    macaddress: 00:00:5e:00:53:01
    set-name: eth1
    addresses:
    - 192.168.0.3/24
    routes:
    - to: 192.168.0.0/24
    table: 103
    - to: 0.0.0.0/0
    via: 192.168.0.1
    table: 103
    routing-policy:
    - from: 192.168.0.3/32
    table: 103

    Здесь:

    • 00:00:5e:00:53:01 — MAC-адрес порта, который вы получили на шаге 3;
    • 192.168.0.3/24 — приватный IP-адрес облачного сервера с маской /24;
    • 192.168.0.0/24 — подсеть облачного сервера с маской /24;
    • 103 — идентификатор таблицы маршрутизации для второго интерфейса, уникальное число от 1 до 252;
    • 0.0.0.0/0 — подсеть по умолчанию для отправки интернет-трафика;
    • 192.168.0.1 — шлюз приватной подсети облачного сервера;
    • 192.168.0.3/32 — приватный IP-адрес облачного сервера с маской /32.
    Пример конфигурационного файла утилиты netplan
    network:
    version: 2
    renderer: networkd
    ethernets:
    # Первый сетевой интерфейс с приватным IP-адресом 192.168.0.2
    eth0:
    match:
    macaddress: 00:00:5e:00:53:00
    set-name: eth0
    addresses:
    - 192.168.0.2/24
    nameservers:
    addresses:
    - 188.93.16.19
    - 188.93.17.19
    routes:
    # Маршрут по умолчанию
    - to: 0.0.0.0/0
    via: 192.168.0.1
    # Маршруты для таблицы маршрутизации 102
    - to: 192.168.0.0/24
    table: 102
    - to: 0.0.0.0/0
    via: 192.168.0.1
    table: 102
    # Исходящий трафик с 192.168.0.2 идет через таблицу маршрутизации 102
    routing-policy:
    - from: 192.168.0.2/32
    table: 102
    # Второй сетевой интерфейс с приватным IP-адресом 192.168.0.3
    eth1:
    match:
    macaddress: 00:00:5e:00:53:01
    set-name: eth1
    addresses:
    - 192.168.0.3/24
    # Маршруты для таблицы маршрутизации 103
    routes:
    - to: 192.168.0.0/24
    table: 103
    - to: 0.0.0.0/0
    via: 192.168.0.1
    table: 103
    # Исходящий трафик с 192.168.0.3 идет через таблицу маршрутизации 103
    routing-policy:
    - from: 192.168.0.3/32
    table: 103
  6. Проверьте синтаксис файла:

    sudo netplan try
  7. Примените настройки:

    sudo netplan apply

5. Опционально: проверить доступ в интернет и из интернета

  1. Откройте CLI.

  2. Проверьте доступность сервера по новому публичному плавающему IP-адресу:

    ping 198.51.100.13

    Здесь 198.51.100.13 — публичный плавающий IP-адрес, который вы создали на этапе 2.

  3. Подключитесь к серверу по любому из двух публичных плавающих IP-адресов сервера.

  4. Проверьте с сервера доступность любого публичного IP-адреса, например:

    ping 8.8.8.8