---
title: 'Пример настройки второго публичного плавающего IP-адреса на облачном сервере'
sidebar_label: 'Пример настройки второго публичного плавающего IP-адреса на облачном сервере'
sidebar_position: 12
description: 'Как настроить второй публичный плавающий IP-адрес на облачном сервере⁠'
---

import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import CreatePublicFloatingIp from '@site/docs/_partials/cloud-servers/cloud-networks/create-public-floating-ip.mdx'
import Formbricks from '@theme/MDXComponents/Formbricks'

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

## Цель настройки \{#purpose}

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

## Что нужно для настройки \{#what-is-required}

В примере для настройки мы использовали [облачный сервер](/cloud-servers/create/), который создан из [готового образа](/cloud-servers/images/about-images.mdx#default-images) Ubuntu 24.04 LTS 64-bit.

Сервер находится в [приватной подсети](/cloud-servers/cloud-networks/private-networks-and-subnets.mdx) `192.168.0.0/24` с шлюзом по умолчанию `192.168.0.1`. Приватный IP-адрес облачного сервера — `192.168.0.2`.

Приватная подсеть сервера подключена к [облачному роутеру](/cloud-servers/cloud-networks/cloud-routers.mdx) с доступом в интернет. Приватный IP-адрес облачного роутера совпадает с шлюзом приватной подсети.

К облачному серверу подключен один [публичный плавающий IP-адрес](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx) `203.0.113.10`.

## Результат настройки \{#result}

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

## Шаги настройки \{#customization-steps}

1. [Добавьте порт в приватную подсеть](#add-port-to-subnet).
2. [Создайте публичный плавающий IP-адрес](#create-public-floating-ip).
3. [Подключите публичный плавающий IP-адрес к порту в приватной подсети](#assign-ip-to-port-in-private-subnet).
4. [Измените файл конфигурации сети облачного сервера](#edit-cloud-server-network-configuration-file).
5. Опционально: [проверьте доступ в интернет и из интернета](#check-internet-access).

## 1. Добавить порт в приватную подсеть \{#add-port-to-subnet}

<Tabs queryString="add-port-to-private-subnet">
  <TabItem value="panel" default>
    <TabItemLabel>
      Панель управления
    </TabItemLabel>

    1. В [панели управления](https://my.selectel.ru/vpc/default/networks/) в верхнем меню нажмите **Продукты** и выберите **Облачные серверы**.
    2. Перейдите в раздел **Сеть** → вкладка **Приватные сети**.
    3. Откройте страницу сети → вкладка **Порты**.
    4. Нажмите **Добавить порт**.
    5. Выберите подсеть, в примере — `192.168.0.0/24`.
    6. Введите новый приватный IP-адрес порта, в примере — `192.168.0.3`.
    7. Выберите облачный сервер, к которому нужно добавить порт.
    8. Нажмите **Добавить**.
  </TabItem>

  <TabItem value="openstack">
    <TabItemLabel>
      OpenStack CLI
    </TabItemLabel>

    1. Откройте [OpenStack CLI](/cloud-servers/tools/openstack-cli/).
    2. Создайте порт в подсети:

       ```bash
       openstack port create \
         --network <network> \
         --fixed-ip subnet=<subnet>,ip-address=<port_ip_address> \
         <port_name>
       ```

       Укажите:

       * `<network>` — ID или имя приватной сети, можно посмотреть с помощью команды `openstack network list`;
       * `<subnet>` — ID или имя подсети, можно посмотреть с помощью команды `openstack subnet list`;
       * `<port_ip_address>` — новый приватный IP-адрес порта, в примере — `192.168.0.3`;
       * `<port_name>` — имя порта.
  </TabItem>
</Tabs>

## 2. Создать публичный плавающий IP-адрес \{#create-public-floating-ip}

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

<CreatePublicFloatingIp />

## 3. Подключить публичный плавающий IP-адрес к порту в приватной подсети \{#assign-ip-to-port-in-private-subnet}

<Tabs queryString="assign-ip-to-port-in-private-subnet">
  <TabItem value="panel" default>
    <TabItemLabel>
      Панель управления
    </TabItemLabel>

    1. В [панели управления](https://my.selectel.ru/vpc/default/networks/) в верхнем меню нажмите **Продукты** и выберите **Облачные серверы**.
    2. Перейдите в раздел **Сеть** → вкладка **Приватные сети**.
    3. Откройте страницу сети → вкладка **Порты**.
    4. В карточке порта облачного сервера нажмите **Публичный IP**.
    5. Выберите публичный плавающий IP-адрес, который вы [создали на этапе 2](#create-public-floating-ip), в примере — `198.51.100.13`.
    6. Нажмите **Подключить**.
  </TabItem>

  <TabItem value="openstack">
    <TabItemLabel>
      OpenStack CLI
    </TabItemLabel>

    1. Откройте [OpenStack CLI](/cloud-servers/tools/openstack-cli/).
    2. Подключите публичный плавающий IP-адрес к порту:

       ```bash
       openstack floating ip set --port <port> <floating_ip_address>
       ```

       Укажите:

       * `<port>` — ID порта облачного сервера, можно посмотреть с помощью команды `openstack port list`;
       * `<floating_ip_address>` — ID или публичный плавающий IP-адрес, который вы [создали на этапе 2](#create-public-floating-ip), в примере — `198.51.100.13`. Можно посмотреть с помощью команды `openstack floating ip list`.
  </TabItem>
</Tabs>

## 4. Изменить файл конфигурации сети облачного сервера \{#edit-cloud-server-network-configuration-file}

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

1. [Подключитесь к серверу](/cloud-servers/manage/connect-to-server.mdx) по первому публичному плавающему IP-адресу, в примере — `203.0.113.10`.

2. Если облачный сервер создан из образа с cloud-init, то при перезагрузке сервера cloud-init автоматически применяет сетевые настройки, которые указаны в [панели управления](https://my.selectel.ru/servers/servers/) на странице сервера на вкладке **Порты**.
   Изменения, которые вы внесли вручную в настройки сети сервера, не сохранятся.

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

   ```bash
   echo "network: {config: disabled}" >> /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
   ```

3. Посмотрите MAC-адрес порта, который вы [добавили на этапе 1](#add-port-to-subnet). Для этого выведите информацию о сетевых интерфейсах сервера:

   ```bash
   ip link show
   ```

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

   ```bash
   vi /etc/netplan/50-cloud-init.yaml
   ```

5. Измените конфигурационный файл утилиты `netplan`:

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

   ```bash
   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. После блока с данными первого сетевого интерфейса добавьте второй сетевой интерфейс и маршруты для него:

   ```bash
   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`.

   <details>
     <summary>Пример конфигурационного файла утилиты `netplan`</summary>

     ```bash
     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
     ```
   </details>

6. Проверьте синтаксис файла:

   ```bash
   sudo netplan try
   ```

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

   ```bash
   sudo netplan apply
   ```

## 5. Опционально: проверить доступ в интернет и из интернета \{#check-internet-access}

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

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

   ```bash
   ping 198.51.100.13
   ```

   Здесь `198.51.100.13` — публичный плавающий IP-адрес, который вы [создали на этапе 2](#create-public-floating-ip).

3. [Подключитесь к серверу](/cloud-servers/manage/connect-to-server.mdx) по любому из двух публичных плавающих IP-адресов сервера.

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

   ```bash
   ping 8.8.8.8
   ```

<Formbricks />
