Статические маршруты
Статическую маршрутизацию можно использовать, если в облачной подсети есть устройство, выполняющее роль маршрутизатора. Например, глобальный роутер, облачный роутер или облачный сервер.
Статические маршруты можно настроить:
- из приватных подсетей;
- подсетей глобального роутера;
- подсетей кросспроектных сетей — только через OpenStack CLI;
- публичных подсетей — только через OpenStack CLI.
Примеры решаемых задач
Доступ в интернет для сети, подключенной к глобальному роутеру
Например, облачная приватная сеть подключена к глобальному роутеру, и при этом нужно:
- настроить доступ в интернет для облачных серверов, которые находятся в этой облачной приватной сети;
- настроить доступ в интернет для приватной сети кластера Managed Kubernetes, чтобы развернуть ноды;
- использовать публичный адрес для облачного сервера или для балансировщика нагрузки в приватной сети;
- использовать облачный роутер в качестве шлюза для доступа в интернет для серверов или хостов из других пулов и услуг.
Отправка трафика через облачный сервер (прокси)
Если нужно отправлять трафик до других сетей, можно использовать облачный сервер как шлюз и настроить статическую маршрутизацию. Например:
- настроить доступ в интернет из подсети;
- настроить связность с внешней инфраструктурой через VPN.
Настроить статическую маршрутизацию
- Создайте статические маршруты.
- Пропишите статические маршруты на облачном сервере.
- Измените файлы конфигурации сети облачного сервера.
- Пропишите статические маршруты на нодах кластера Managed Kubernetes.
- Пропишите статические маршруты в кластере облачных баз данных.
- Опционально: пропишите статические маршруты на облачном балансировщике нагрузки.
Создать статические маршруты
В качестве исходной подсети можно использовать:
- приватную подсеть;
- подсеть глобального роутера;
- подсеть кросспроектных сетей — только через OpenStack CLI;
- публичную подсеть — только через OpenStack CLI.
Для статического маршрута нельзя задать метрику (вес или стоимость маршрута), поэтому невозможно создать два и более маршрута с одинаковыми исходной подсетью и подсетью назначения.
- Панель управления
- OpenStack CLI
- В панели управления перейдите в раздел Облачная платформа → Сеть.
- Откройте вкладку Приватные сети.
- Откройте карточку приватной сети → вкладка Статические маршруты.
- Нажмите Создать маршрут.
- Выберите исходную подсеть. Можно выбрать приватную подсеть или подсеть глобального роутера.
- Введите CIDR подсети назначения — это подсеть, в которую будет направляться трафик.
- Введите шлюз (next-hop) — IP-адрес, через который все облачные серверы из исходной подсети будут направлять трафик в подсеть назначения. Можно ввести любой адрес исходной подсети.
- Нажмите Добавить.
Создайте статический маршрут:
openstack subnet set /
--host-route destination=<destination_subnet_cidr>,gateway=<next_hop_ip> /
<subnet_uuid>Укажите:
<destination_subnet_cidr>
— CIDR подсети назначения, в которую будет направляться трафик;<next_hop_ip>
— шлюз (next-hop) — IP-адрес, через который все облачные серверы из исходной подсети будут направлять трафик в подсеть назначения. Можно ввести любой адрес исходной подсети;<subnet_uuid>
— ID или имя исходной подсети, можно посмотреть с помощьюopenstack subnet list
. Можно выбрать приватную подсеть, подсеть глобального роутера, подсеть кросспроектных сетей и публичную подсеть.
Если вы ранее создавали статический маршрут, хотите его удалить и одновременно прописать новый, используйте параметр
--no-host-route
:openstack subnet set /
--no-host-route /
--host-route destination=<destination_subnet_cidr>,gateway=<next_hop_ip> /
<subnet_id>Проверьте, что статический маршрут добавлен — параметры
destination
(подсеть назначения) иgateway
(шлюз) в выводе команды:openstack subnet show <subnet_id>
Прописать статические маршруты на облачном сервере
Если в исходной подсети есть облачные серверы, после создания статического маршрута нужно обновить правила маршрутизации — прописать маршруты на всех облачных серверах в подсети. Алгоритм зависит от того, включен ли DHCP в исходной подсети.
- Посмотрите, включен ли DHCP исходной подсети. В панели управления перейдите в раздел Облачная платформа → Сеть. Откройте карточку сети → вкладка Подсети → тумблер DHCP.
- Настройте статические маршруты в зависимости от того, включен или выключен DHCP в исходной подсети:
- DHCP включен
- DHCP выключен
Если в исходной подсети включен DHCP, статические маршруты автоматически пропишутся на серверах в течение 24 часов после создания маршрутов.
Прописать маршруты сразу
Вы можете прописать маршруты сразу, используйте один из вариантов:
последовательно выключите и включите облачный сервер;
перезапросите информацию от DHCP-сервера на облачном сервере:
dhclient eth0
Здесь
eth0
— имя интерфейса.Добавятся новые маршруты, при этом старые не удалятся;
выключите, включите порт и перезапросите информацию у DHCP-сервера на облачном сервере:
INTERFACE=eth0; ip link set $INTERFACE down && ip link set $INTERFACE up && dhclient $INTERFACE
Здесь
eth0
— имя интерфейса.Добавятся новые маршруты, при этом старые не удалятся.
Если в исходной подсети выключен DHCP, алгоритм настройки статических маршрутов зависит от того, установлен ли агент cloud-init или cloudbase-init в образах, из которых созданы облачные серверы исходной подсети. Агенты предустановлены во всех готовых образах облачной платформы, а также в самостоятельно загруженных совместимых Linux-образах.
- Cloud-init установлен
- Cloud-init не установлен
Если в образе сервера установлен cloud-init или cloudbase-init, измените файлы конфигурации сети на всех облачных серверах в исходной подсети.
- Если сначала вы настроили статические маршруты для подсети, а затем создали в ней облачные серверы — в конфигурационных файлах серверов автоматически пропишутся все настройки статических маршрутов.
- Если сначала вы создали облачные серверы, а затем настроили статические маршруты, в панели управления перейдите в раздел Облачная платформа → Серверы.
- Откройте страницу облачного сервера → вкладка Порты.
- Если в блоке Настройка портов указан параметр При перезагрузке сервера, последовательно выключите и включите каждый облачный сервер в исходной подсети.
- Если в блоке Настройка портов указан параметр Вручную в файле конфигурации сети на сервере, измените файлы конфигурации сети на всех облачных серверах в исходной подсети.
Изменить файлы конфигурации сети облачного сервера
Прописать статические маршруты вручную на облачном сервере в исходной подсети нужно, если в подсети выключен DHCP и при этом:
- облачный сервер создан из образа без агента cloud-init или cloudbase-init;
- перед созданием статического маршрута в исходной подсети создан облачный сервер из образа с агентом cloud-init или cloudbase-init, при этом в блоке Настройка портов сервера указан параметр Вручную в файле конфигурации сети на сервере.
Если в дальнейшем вы включите DHCP в подсети, то прописанные статические маршруты могут перестать работать — DHCP применяет ко всем серверам собственные настройки.
- Ubuntu
- Debian
- CentOS
- Windows
Откройте CLI.
Отключите конфигурирование сети. Для этого создайте файл
99-disable-network-config.cfg
:echo "network: {config: disabled}" >> /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
Откройте файл конфигурации:
vi /etc/network/interfaces.d/50-cloud-init.cfg
В конце блока с данными соответствующего сетевого интерфейса добавьте нужный маршрут:
up route add -net <ip> netmask <netmask> gw <gateway>
Укажите:
<ip>
— подсеть, до которой нужен маршрут (например,192.168.1.0
);<netmask>
— маска подсети, до которой нужен маршрут (например,255.255.255.0
);<gateway>
— шлюз для подсети текущего сервера, который указан на глобальном роутере.
Если вам нужно прописать несколько маршрутов, добавьте их последовательно в том же блоке.
Откройте CLI.
Откройте файл с настройками сети:
vi /etc/network/interfaces
В конце блока с данными соответствующего сетевого интерфейса добавьте нужный маршрут:
up route add -net <ip> netmask <netmask> gw <gateway>
down route del -net <ip> netmask <netmask> gw <gateway>Укажите:
<ip>
— подсеть, до которой нужен маршрут (например,192.168.1.0
);<netmask>
— маска подсети, до которой нужен маршрут (например,255.255.255.0
);<gateway>
— шлюз для подсети текущего сервера, который указан на глобальном роутере.
Если нужно прописать несколько маршрутов, добавьте их последовательно в том же блоке.
Сохраните файл.
Перезапустите сеть:
sudo /etc/init.d/networking restart
Откройте CLI.
Отключите конфигурирование сети. Для этого создайте файл
99-disable-network-config.cfg
:echo "network: {config: disabled}" >> /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
Добавьте нужный маршрут:
echo "<ip/mask> via <gateway>" > /etc/sysconfig/network-scripts/route-eth0
Укажите:
<ip/mask>
— подсеть, до которой нужен маршрут, с указанием маски (например,192.168.1.0/24
);<gateway>
— шлюз для подсети текущего сервера, который указан на глобальном роутере.
Если нужно добавить несколько маршрутов, укажите их в одной команде. Каждый маршрут указывайте с новой строки, например:
echo "192.168.1.0/24 via 192.168.0.1
192.168.2.0/24 via 192.168.0.1" >> /etc/sysconfig/network-scripts/route-eno2Перезапустите сеть:
systemctl restart network
Добавьте необходимые маршруты по одному:
route -p ADD <ip> MASK <netmask> <gateway> METRIC <x>
Укажите:
<ip>
— подсеть, до которой нужен маршрут (например,192.168.1.0
);<netmask>
— маска подсети, до которой нужен маршрут (например,255.255.255.0
);<gateway>
— шлюз для подсети текущего сервера, который указан на глобальном роутере.<x>
— число, определяющее приоритет указанного шлюза, 1 — наивысший приоритет.
Прописать статические маршруты в кластере Managed Kubernetes
Если в исходной подсети есть ноды кластера Managed Kubernetes, после создания статического маршрута обновите правила маршрутизации — последовательно выключите и включите все ноды кластера.
Прописать статические маршруты в кластере облачных баз данных
Если в исходной подсети есть кластер облачных баз данных, после создания статического маршрута обновите правила маршрутизации:
- создайте тикет;
- или пересоздайте кластер облачных баз данных, например, восстановите его из резервной копии. Подробнее в подразделе Восстановить кластер (пример для PostgreSQL).
Опционально: прописать статические маршруты на облачном балансировщике нагрузки
Если в исходной подсети есть облачные балансировщики нагрузки и статическая маршрутизация нужна для вашей конфигурации сети, после создания статического маршрута обновите правила маршрутизации — выполните аварийное переключение амфоры балансировщика: