В OpenStack, когда вы создаёте VPS-сервер, за ним фиксируется публичный IP-адрес. Система выбирает его случайным образом из пула адресов, которые доступны для вашей публичной сети. Выбрать конкретный IP-адрес вы не можете. 

Пока VPS-сервер работает, этот случайный IP-адрес закреплён за ним. Но если вы удалите сервер — например, чтобы расширить диск или выбрать другой образ ОС — IP-адрес изменится. Эту проблему как раз и решает плавающий IP.

Плавающий IP (floating IP) — это выделенный IP-адрес, который вы можете закрепить за собой и при необходимости использовать повторно. В этой статье покажем, как его выделить для своего аккаунта и назначить серверу.

Как выделить плавающий IP

Зайдите в панель управления облаком. Перейдите в раздел «Проект – Сеть – Плавающие IP» и нажмите кнопку «Выделить IP проекту».

Кнопка «Выделить IP проекту» в разделе «Проект – Сеть – Плавающие IP»

Во всплывающем окне в поле «Пул» оставьте значение «Public». Это стандартная публичная сеть, из которой и будет выделен IP-адрес. Если нужно, заполните также описание, затем нажмите «Выделить IP».

Выделение внешнего IP в OpenStack Horizon

Вы увидите выделенный IP в списке. Нажмите напротив него кнопку «Назначить».

Кнопка «Назначить» после создания выделенного IP

Заполните поля во всплывающем окне:

  • В поле «IP-адрес» оставьте значение по умолчанию.
  • В поле «Порт для назначения» выберите сервер, которому хотите назначить плавающий IP. Для этого сервер должен находиться в приватной сети.

Затем нажмите «Назначить» внизу и ждите, пока операция закончится.

Назначение выделенного IP-адреса серверу

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

Как создать приватную сеть и маршрутизатор

Как перевести сервер из публичной сети в приватную

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

Перейдите в раздел «Проект – Вычислительные ресурсы – Серверы». В колонке «Actions» выберите из выпадающего списка опцию «Отсоединить интерфейс».

Опция «Отсоединить интерфейс» в колонке «Actions»

Во всплывающем окне выберите публичный IP-адрес, который VPS-сервер использует в данный момент. Затем нажмите «Отсоединить интерфейс».

Отключение интерфейса от сервера в OpenStack Horizon

Вы отсоединили публичную сеть от сервера. Теперь нужно присоединить приватную. Для этого выберите в колонке «Actions» опцию «Подключить интерфейс».

Опция «Подключить интерфейс» в колонке «Actions»

Заполните поля во всплывающем окне:

  • В поле «Способ указания интерфейса» оставьте стандартный вариант.
  • В поле «Сеть» выберите созданную заранее приватную сеть.
  • Поле «Фиксированный IP-адрес» оставьте пустым.

Нажмите кнопку «Подключить интерфейс».

Подключение интерфейса к серверу в OpenStack Horizon

Чтобы изменения вступили в силу, перезагрузите сервер любым удобным способом. Например, выберите «Горячая перезагрузка» в колонке «Actions».

После этого можно назначить IP-адрес по инструкции из первого раздела этой статьи.

Как проверить смену IP на сервере для Linux

Для Linux нужно дополнительно проверить, изменился ли IP на сервере. Для этого подключитесь к серверу в консоли.

Если подключались от имени clouduser, получите оболочку root при помощи команды sudo su. Если сразу подключались под рутом, эту команду вводить не нужно.

Затем используйте такую команду, чтобы вывести на экран текущее сетевое окружение.

ifconfig

Если сразу видите в выдаче адрес из нужной приватной сети — интерфейс заменился.

Результат команды ifconfig в консоли — Вариант 1

Если по какой-то причине в сетевом окружении видно только один локальный адрес 127.0.0.1, как в примере ниже, нужно вручную поменять карту.

Результат команды ifconfig в консоли — Вариант 2

Выполните такую команду, чтобы посмотреть подключённые сетевые карты:

ip l

В результатах отобразятся подключенные карты lo и eth0. В разных дистрибутивах карты могут называться по-разному. Например, не eth0, а ens3. Карта lo нас не интересует, работаем с eth0. У неё указан MAC-адрес fa:16:3e:3a:5b:35.

Результат команды ip l в консоли

Следующий шаг — проверьте текущее udev-правило:

cat /etc/udev/rules.d/70-persistent-net.rules

В выводе команды убедитесь, что в параметре ATTR{address} указан MAC-адрес.

Текущее udev-правило на сервере c Linux

Это правило нужно удалить:

rm /etc/udev/rules.d/70-persistent-net.rules

После этого повторно перезагрузите сервер или выполните команду:

dhclient ens3

Снова используйте команду ifconfig, чтобы проверить, что теперь отображаются все сетевые интерфейсы. Если все сделано правильно, вы увидите IP нужной приватной сети:

Обновлённые сетевые интерфейсы на сервере c Linux

Если имя интерфейса не изменилось, дополнительные изменения в конфигурационных файлах не требуются.

Что дальше

Если вдруг что-то не получается или у вас есть дополнительные вопросы, задайте их в комментариях к статье или напишите в чат в нижнем правом углу экрана. Мы всегда на связи. Будем рады помочь!

Была ли статья полезной?

Спасибо за отзыв!