Публичные IP-адреса
Публичные статические IP-адреса можно подключать к устройствам, чтобы настроить к ним доступ из интернета: к облачному серверу, балансировщику нагрузки, кластеру облачных баз данных.
Для доступа устройство должно находиться в приватной подсети, подключенной к облачному роутеру с выходом во внешнюю сеть, — подробнее в инструкции Подготовить приватную подсеть для подключения публичного IP-адреса. Публичный IP-адрес ассоциируется с приватным IP-адресом устройства, а входящий трафик обрабатывается облачным роутером — он выполняет функцию 1:1 NAT через внешний IP-адрес, который выделяется при подключении роутера к внешней сети. Входящий трафик можно отфильтровать с помощью облачного файрвола или группы безопасности.
При создании публичный IP-адрес выделяется из пула адресов автоматически, его нельзя выбрать. Адрес является плавающим (в API — Floating IP), так как его можно быстро переключать между устройствами в приватных подсетях. При переключении адрес не меняется и не удаляется.
Публичный IP-адрес можно использовать только внутри одного проекта и одного пула.
Для публичных IP-адресов есть ограничения на объем трафика — пропускная способность. Ее можно посмотреть в таблице Пропускная способность.
Работать с публичными IP-адресами можно в панели управления, с помощью OpenStack CLI или Terraform.
Создать публичный IP-адрес
Если вы создаете первый публичный IP-адрес внутри проекта и пула, автоматически создастся приватная сеть nat
и облачный роутер router-nat
.
Панель управления
OpenStack CLI
- В панели управления перейдите в раздел Облачная платформа → Сеть.
- Откройте вкладку Публичные IP-адреса.
- Нажмите Создать IP-адрес.
- Выберите пул, в котором будет создан публичный IP-адрес.
- Укажите количество публичных IP-адресов.
- Нажмите Создать.
-
Создайте публичный IP-адрес:
openstack floating ip create external-network
Подготовить приватную подсеть для подключения публичного IP-адреса
Чтобы настроить доступ в интернет и из интернета через публичный IP-адрес, нужно подключить его к устройству.
Устройство должно находиться в приватной подсети или подсети глобального роутера, которая соответствует требованиям:
- подсеть должна быть подключена к облачному роутеру, подключенному к внешней сети. Если облачный роутер подключен к внешней сети, он выполняет функцию 1:1 NAT для доступа из приватной сети в интернет через внешний адрес роутера и для доступа к устройству в приватной подсети из интернета по публичному IP-адресу;
- приватный IP-адрес облачного роутера должен совпадать с шлюзом по умолчанию в подсети.
Если подсеть не соответствует требованиям, подготовьте ее к подключению публичного IP-адреса:
- Создайте облачный роутер c подключением к внешней сети.
- Подключите приватную подсеть к облачному роутеру.
1. Создать облачный роутер c подключением к внешней сети
Панель управления
OpenStack CLI
- В панели управления перейдите в раздел Облачная платформа → Сеть.
- Откройте вкладку Облачные роутеры.
- Нажмите Создать роутер.
- Выберите пул, в котором будет создан облачный роутер.
- Введите имя роутера.
- Отметьте чекбокс Подключить роутер к внешней сети — для роутера будет выделен внешний IP-адрес.
- Нажмите Создать.
-
Создайте облачный роутер:
openstack router create <router_name>
Укажите
<router_name>
— имя облачного роутера. -
Подключите облачный роутер к внешней сети — для роутера будет выделен внешний IP-адрес:
openstack router set --external-gateway external-network <router>
Укажите
<router>
— ID или имя облачного роутера, можно посмотреть с помощью командыopenstack router list
2. Подключить подсеть к облачному роутеру
Панель управления
OpenStack CLI
-
В панели управления перейдите в раздел Облачная платформа → Сеть.
-
Откройте вкладку Облачные роутеры.
-
Откройте карточку роутера.
-
Нажмите Добавить подсеть.
-
Выберите приватную подсеть или подсеть глобального роутера.
-
Введите IP-адрес роутера. IP-адрес облачного роуте ра должен совпадать с шлюзом по умолчанию приватной подсети. Посмотреть шлюз по умолчанию в приватной подсети можно на вкладке Приватные сети → страница сети → вкладка Подсети → карточка подсети → блок Автоматические сетевые настройки → поле Шлюз подсети.
Если вы подключаете подсеть глобального роутера, IP-адрес облачного роутера должен совпадать со шлюзом по умолчанию подсети глобального роутера и отличаться от IP-адреса глобального роутера, IP-адресов устройств в сети и служебных адресов
.253
и.254
. -
Нажмите Добавить подсеть.
-
Подключите подсеть к облачному роутеру:
openstack router add subnet <router> <subnet>
Укажите:
<router>
— ID или имя облачного роутера, можно посмотреть с помощью командыopenstack router list
;<subnet>
— ID или имя приватной подсети, можно посмотреть с помощью командыopenstack subnet list
Подключить публичный IP-адрес к облачному серверу
Публичный IP-адрес можно подключить при создании облачного сервера или к уже созданному серверу.
Панель управления
OpenStack CLI
- Убедитесь, что облачный сервер находится в подсети, которая соответствует требованиям. Для подготовки подсети используйте инструкцию Подготовить приватную подсеть для подключения публичного IP-адреса. Подсети сервера можно посмотреть в панели управления в разделе Облачная платформа → Серверы → страница сервера → вкладка Порты.
- В панели управления перейдите в раздел Облачная платформа → Серверы.
- Откройте вкладку Серверы → страницу сервера.
- Откройте вкладку Порты.
- В столбце Публичный IP нажмите Подключить.
- Выберите публичный IP-адрес.
-
Посмотрите ID порта облачного сервера:
openstack port list --server <server>
Укажите
<server>
— ID или имя облачного сервера. -
Подключите публичный IP-адрес к порту облачного сервера:
openstack floating ip set --port <port> <public_ip_address>
Укажите:
<port>
— ID порта облачного сервера;<public_ip_address>
— ID или публичный IP-адрес, можно посмотреть с помощью командыopenstack floating ip list
Отключить публичный IP-адрес от облачного сервера
Панель управления
OpenStack CLI
- В панели управления перейдите в раздел Облачная платформа → Серверы.
- Откройте вкладку Серверы → страницу сервера.
- Откройте вкладку Порты.
- В столбце Публичный IP в меню выберите Отключить публичный IP.
- Нажмите Отключить.
-
Отключите публичный IP-адрес от порта облачного сервера:
openstack floating ip unset --port <public_ip_address>
Укажите
<public_ip_address>
— ID или публичный IP-адрес, можно посмотреть с помощью командыopenstack floating ip list
Подключить публичный IP-адрес к балансировщику нагрузки
Статический публичный IP-адрес можно подключить при создании балансировщика или к уже созданному балансировщику.
Панель управления
OpenStack CLI
- Убедитесь, что балансировщик нагрузки находится в подсети, которая соответствует требованиям. Для подготовки подсети используйте инструкцию Подготовить приватную подсеть для подключения публичного IP-адреса. Подсети балансировщика можно посмотреть в панели управления в разделе Облачная платформа → Балансировщики → вкладка Балансировщики → страница балансировщика → поле Сеть.
- В панели управления перейдите в раздел Облачная платформа → Балансировщики.
- Откройте вкладку Балансировщики.
- В карточке балансировщика нажмите Подключить публичный IP.
- Выберите публичный IP-адрес.
- Нажмите Подключить.
-
Посмотрите ID порта балансировщика нагрузки — значение
vip_port_id
из вывода команды:openstack loadbalancer show <loadbalancer>
Укажите
<loadbalancer>
— ID или имя балансировщика. Список можно посмотреть с помощью командыopenstack loadbalancer list
-
Подключите публичный IP-адрес к порту балансировщика нагрузки:
openstack floating ip set --port <port> <public_ip_address>
Укажите:
<port>
— ID порта балансировщика нагрузки;<public_ip_address>
— ID или публичный IP-адрес, можно посмотреть с помощью командыopenstack floating ip list
Отключить публичный IP-адрес от балансировщика нагрузки
Панель управления
OpenStack CLI
- В панели управления перейдите в раздел Облачная платформа → Балансировщики.
- Откройте вкладку Балансировщики.
- В карточке балансировщика у публичного IP-адреса нажмите .
- Выберите Отключить публичный IP-адрес.
- Нажмите Сохранить.
-
Отключите публичный IP-адрес от порта балансировщика нагрузки:
openstack floating ip unset --port <public_ip_address>
Укажите
<public_ip_address>
— ID или публичный IP-адрес, можно посмотреть с помощью командыopenstack floating ip list
Подключить публичный IP-адрес к кластеру облачных баз данных
Публичный IP-адрес можно подключить при создании кластера баз данных (пример для PostgreSQL) или к уже созданному кластеру.
Панель управления
- Убедитесь, что кластер облачных баз данных находится в подсети, которая соответствует требованиям. Для подготовки подсети используйте инструкцию Подготовить приватную подсеть для подключения публичного IP-адреса. Подсети кластера можно посмотреть в панели управления в разделе Облачная платформа → Базы данных → страница кластера → вкладка Настройки → поле Сеть кластера.
- В панели управления перейдите в раздел Облачная платформа → Базы данных.
- Отк ройте страницу кластера баз данных → вкладка Настройки.
- В блоке Адреса и статусы нод откройте вкладку Публичные IP-адреса.
- В строке с нужной нодой нажмите .
- Выберите Новый публичный IP-адрес.
- Нажмите .
Отключить публичный IP-адрес от кластера облачных баз данных
Панель управления
- В панели управления перейдите в раздел Облачная платформа → Базы данных.
- Откройте страницу кластера баз данных → вкладка Настройки.
- В блоке Адреса и статусы нод откройте вкладку Публичные IP-адреса.
- В строке с нужной нодой нажмите .
- Выберите Без публичного IP-адреса.
- Нажмите .
Настроить NAT
Чтобы настроить NAT, нужно пробросить порт (port forwarding) — настроить перенаправление трафика с одного порта на другой порт. Например, можно настроить проброс по рта на публичном IP-адресе на любой порт в приватной подсети — в этом случае доступ к приватному порту будет организован без создания дополнительного публичного IP-адреса.
Публичный IP-адрес перед началом настройки проброса портов не должен быть ассоциирован с облачным сервером, балансировщиком нагрузки и другими устройствами.
В Selectel по умолчанию заблокированы некоторые TCP/UDP-порты, трафик через них заблокирован.
OpenStack CLI
-
Настройте проброс портов:
openstack floating ip port forwarding create \
--internal-ip-address <internal_ip_address> \
--port <port> \
--internal-protocol-port <internal_protocol> \
--external-protocol-port <external_protocol> \
--protocol <protocol> \
<public_ip_address>Укажите:
<internal_ip_address>
— IP-адрес порта в приватной подсети, на который будет осуществляться проброс;<port>
— ID или имя порта в приватной сети, на который будет осуществляться проброс, можно посмотреть с помощью командыopenstack port list
;<internal_protocol>
— протокол порта в приватной подсети;<external_protocol>
— протокол порта публичного IP-адреса, порт которого пробрасывается;<protocol>
— протокол:tcp
илиudp
;<public_ip_address>
— ID или публичный IP-адрес, порт которого пробрасывается. Можно посмотреть с помощью командыopenstack floating ip list
Пример команды:
openstack floating ip port forwarding create \
--internal-ip-address 192.168.0.2 \
--port ed010217-9f78-4002-8703-2112da3fef1f \
--internal-protocol-port 80 \
--external-protocol-port 80 \
--protocol tcp \
192.0.2.7
Удалить публичный IP-адрес
После удаления публичный IP-адрес вернется в пул публичных адресов.
Панель управления
OpenStack CLI
- В панели управления перейдите в раздел Облачная платформа → Сеть.
- Откройте вкладку Публичные IP-адреса.
- В карточке публичного IP-адреса нажмите .
- Введите IP-адрес для подтверждения удаления.
- Нажмите Удалить.
-
Удалите публичный IP-адрес:
openstack floating ip delete <public_ip_address>
Укажите
<public_ip_address>
— ID или публичный IP-адрес, можно посмотреть с помощью командыopenstack floating ip list