С помощью этого руководства вы настроите маршрутизацию к изолированной подсети через виртуальные IP. Приведенная схема маршрутизации подходит, например, если трафик на пути в изолированную подсеть должен проходить через средства фильтрации, для которых обеспечена отказоустойчивость с помощью виртуального IP.
Вы будете использовать следующие сервисы:
VPC — изолированная виртуальная сеть для создания безопасной инфраструктуры.
«Подсети» — сервис, позволяющий создавать подсети для размещения в них облачных ресурсов.
«Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.
«Публичные IP» — сервис для организации доступа виртуальных машин в интернет.
«Группы безопасности» — сервис для контроля трафика виртуальных машин.
«Виртуальные IP» — сервис для инфраструктурной поддержки отказоустойчивых решений.
Шаги:
Если вы уже зарегистрированы, войдите под своей учетной записью.
На этом шаге вы подготовите две маршрутизируемые подсети в VPC и одну изолированную подсеть.
Создайте VPC-сеть с названием VPC-1.
Убедитесь, что на странице сервиса Evolution VPC отображается VPC-сеть VPC-1 в статусе «Создана».
Создайте подсеть со следующими параметрами:
Название — subnet-1.
VPC — VPC-1.
Зона доступности — ru.AZ-1.
Адрес — 10.0.0.0/24.
Создайте подсеть со следующими параметрами:
Название — subnet-2.
VPC — VPC-1.
Зона доступности — ru.AZ-1.
Адрес — 10.0.1.0/24.
DNS-серверы — 8.8.8.8.
Создайте подсеть со следующими параметрами:
Название — isolated-subnet.
Включите опцию Локальная подсеть (трафик замкнут).
Зона доступности — ru.AZ-1.
Адрес — 10.0.2.0/24.
Убедитесь, что на странице сервиса «Подсети» отображаются подсети subnet-1, subnet-2, isolated-subnet в статусе «Создана».
На этом шаге вы создадите одну виртуальную машину в изолированной подсети и три виртуальных машины в VPC:
две для master и backup-узлов;
одну для клиента, с которого будут отправляться запросы к виртуальной машине в изолированной подсети.
Создайте виртуальную машину со следующими параметрами:
Название — isolated_vm.
Зона доступности — ru.AZ-1.
Образ — Публичные → Ubuntu 22.04.
Гарантированная доля vCPU — 10%.
vCPU — 1.
RAM — 1.
Сетевой интерфейс — выберите тип Подсеть.
VPC — Изолированные подсети.
Подсеть — 10.0.2.0/24 (subnet-2).
Внутренний IP — Автоматически.
Группы безопасности — SSH-access_ru.AZ-1.
Метод аутентификации — Пароль.
Пароль — задайте пароль пользователя.
Имя хоста — isolated_vm.
Создайте виртуальную машину со следующими параметрами:
Название — vrrp_master.
Зона доступности — ru.AZ-1.
Образ — Публичные → Ubuntu 22.04.
Гарантированная доля vCPU — 10%.
vCPU — 1.
RAM — 1.
Сетевой интерфейс — выберите тип Подсеть с публичным IP.
VPC — VPC-1.
Подсеть — 10.0.1.0/24 (subnet-2).
Внутренний IP — Автоматически.
Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.
Группы безопасности — SSH-access_ru.AZ-1.
Метод аутентификации — Пароль.
Пароль — задайте пароль пользователя.
Имя хоста — vrrp_master.
Создайте виртуальную машину со следующими параметрами:
Название — vrrp_backup.
Зона доступности — ru.AZ-1.
Образ — Публичные → Ubuntu 22.04.
Гарантированная доля vCPU — 10%.
vCPU — 1.
RAM — 1.
Сетевой интерфейс — выберите тип Подсеть с публичным IP.
VPC — VPC-1.
Подсеть — 10.0.1.0/24 (subnet-2).
Внутренний IP — Автоматически.
Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.
Группы безопасности — SSH-access_ru.AZ-1.
Метод аутентификации — Пароль.
Пароль — задайте пароль пользователя.
Имя хоста — vrrp_backup.
Создайте виртуальную машину со следующими параметрами:
Название — client.
Зона доступности — ru.AZ-1.
Образ — Публичные → Ubuntu 22.04.
Гарантированная доля vCPU — 10%.
vCPU — 1.
RAM — 1.
Сетевой интерфейс — выберите тип Подсеть.
VPC — VPC-1.
Подсеть — 10.0.0.0/24 (subnet-1).
Внутренний IP — Автоматически.
Группы безопасности — SSH-access_ru.AZ-1.
Метод аутентификации — Пароль.
Пароль — задайте пароль пользователя.
Имя хоста — client.
Убедитесь, что в личном кабинете на странице сервиса «Виртуальные машины» отображаются виртуальные машины isolated_vm, client, vrrp_master, vrrp_backup в статусе «Запущена».
На этом шаге вы настроите сетевые интерфейсы для виртуальных машин vrrp_master и vrrp_backup. Повторите инструкцию для каждой виртуальной машины.
Добавьте сетевой интерфейс со следующими параметрами:
Опция Подсеть.
VPC — Изолированные подсети.
Подсеть — 10.0.2.0/24 (isolated-subnet).
Внутренний IP — Автоматически.
Группы безопасности — SSH-access_ru.AZ-1.
Подключитесь через серийную консоль к виртуальной машине.
Выполните команду:
ip address
В ответе отобразится список всех сетевых интерфейсов и информация о них, например:
...2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc fq_codel state UP group default qlen 1000link/ether fa:16:3e:8c:2a:8d brd ff:ff:ff:ff:ff:ffinet 10.0.1.4/24 metric 100 brd 10.0.0.255 scope global dynamic enp3s0valid_lft 43174sec preferred_lft 43174secinet6 fe80::f816:3eff:fe8c:2a8d/64 scope linkvalid_lft forever preferred_lft forever3: enp4s0: <BROADCAST,MULTICAST> mtu 9000 qdisc noop state DOWN group default qlen 1000link/ether fa:16:3e:c7:1e:57 brd ff:ff:ff:ff:ff:ff
Проверьте, назначен ли IP-адрес интерфейсу для изолированной подсети. В приведенном примере на интерфейс enp3s0 назначен IP-адрес 10.0.1.4, но для интерфейса enp4s0 для изолированной подсети IP-адрес отсутствует.
Если интерфейсу не назначен IP-адрес, выполните команду:
sudo ip ad add <ip_address>/24 dev <interface>
Где:
<ip_address> — внутренний IP-адрес в изолированной подсети, указан в сетевых параметрах виртуальной машины.
<interface> — название интерфейса для изолированной подсети.
Убедитесь, что все сетевые интерфейсы активированы (state UP):
ip address
Выполните команду:
ip route
В ответе отобразится список маршрутов и информация о них.
Удалите маршрут по умолчанию, в котором в качестве Next Hop указан адрес из диапазона изолированной подсети isolated-subnet:
sudo ip route delete default via 10.0.2.1
Чтобы удаленный маршрут не восстановился после перезагрузки виртуальной машины, установите запрет на обработку маршрутов по DHCP:
В каталоге /etc/netplan/ откройте конфигурационный файл 50-cloud-init.yaml от имени суперпользователя:
sudo nano /etc/netplan/50-cloud-init.yaml
В настройках сетевого интерфейса, подключенного к изолированной подсети, после параметра dhcp4: true добавьте правило:
dhcp4-overrides:use-routes: false
Сохраните изменения.
Разрешите маршрутизацию трафика:
sudo sysctl -w net.ipv4.ip_forward=1
Откройте конфигурационный файл /etc/sysctl.conf от имени суперпользователя:
sudo nano /etc/sysctl.conf
Удалите # перед параметром net.ipv4.ip_forward.
Сохраните изменения.
На этом шаге вы настроите виртуальные IP на виртуальных машинах vrrp_master и vrrp_backup.
Проверьте, что в сервисе «Подсети» в параметрах сетевых интерфейсов виртуальных машин vrrp_master и vrrp_backup включена опция Проверка адреса источника/назначения.
Создайте виртуальный IP со следующими параметрами:
Название — vip-1.
Тип подсети — Virtualization.
Опция — Маршрутизируемая подсеть.
VPC — VPC-1.
Подсеть — 10.0.1.0/24 (subnet-2).
Виртуальный IP-адрес — 10.0.1.100.
Интерфейсы виртуальных машин — интерфейсы vrrp_master и vrrp_backup.
Создайте виртуальный IP со следующими параметрами:
Название — vip-2.
Тип подсети — Virtualization.
Опция — Изолированная подсеть.
Подсеть — 10.0.2.0/24 (isolated-subnet).
Виртуальный IP-адрес — 10.0.2.100.
Интерфейсы виртуальных машин — интерфейсы vrrp_master и vrrp_backup.
Убедитесь, что на странице сервиса «Виртуальные IP» отображаются виртуальные IP vip-1 и vip-2 в статусе «Создан».
На виртуальных машинах vrrp_master и vrrp_backup настройте сервис Keepalived:
Установите сервис Keepalived, выполнив команду:
sudo apt update && sudo apt install keepalived -y
Создайте конфигурационный файл:
sudo nano /etc/keepalived/keepalived.conf
В конфигурационном файле укажите параметры для каждой виртуальной машины соответственно:
vrrp_instance VIP1 {state MASTERinterface <interface_routed>virtual_router_id 1priority 100advert_int 1virtual_ipaddress {10.0.1.100}preempt}vrrp_instance VIP2 {state MASTERinterface <interface_isolate>virtual_router_id 10priority 100advert_int 1virtual_ipaddress {10.0.2.100}preempt}
Где:
<interface_routed> — название интерфейса для маршрутизируемой подсети subnet-2.
<interface_isolate> — название интерфейса для изолированной подсети isolated-subnet.
Перезапустите сервис Keepalived:
sudo systemctl restart keepalived.service
Проверьте статус сервиса Keepalived:
sudo systemctl status keepalived.service
На этом шаге вы настроите группы безопасности, чтобы разрешить прохождение трафика.
Перейдите в сервис «Группы безопасности».
Откройте группу безопасности SSH-access_ru.AZ-1.
Создайте правила для входящего трафика с параметрами:
Протокол | Тип источника | Источник |
|---|---|---|
Любой | IP-адрес | 10.0.0.0/24 |
Любой | IP-адрес | 10.0.1.0/24 |
Любой | IP-адрес | 10.0.2.0/24 |
На этом шаге вы настроите маршрутизацию к изолированной подсети.
Перейдите в сервис Evolution VPC.
В VPC-1 создайте пользовательский маршрут со следующими параметрами:
Адрес назначения — IP-адрес виртуальной машины isolated_vm в формате CIDR, например 10.0.2.1/32.
Next Hop Type — Виртуальный IP.
Виртуальный IP — 10.0.1.100.
Подключитесь через серийную консоль к виртуальной машине isolated_vm.
Выполните команду:
ip route
В ответе отобразится список маршрутов и информация о них.
Удалите маршрут по умолчанию:
sudo ip route delete default via 10.0.2.1
Создайте маршрут по умолчанию, указав в качестве Next Hop vip-2:
sudo ip route add default via 10.0.2.100
Чтобы удаленный маршрут не восстановился после перезагрузки виртуальной машины, установите запрет на обработку маршрутов по DHCP:
В каталоге /etc/netplan/ откройте конфигурационный файл 50-cloud-init.yaml от имени суперпользователя:
sudo nano /etc/netplan/50-cloud-init.yaml
В конфигурационный файл после параметра dhcp4: true добавьте правило:
dhcp4-overrides:use-routes: false
Сохраните изменения.
На этом шаге вы проверите маршрутизацию трафика.
Подключитесь через серийную консоль к виртуальной машине client.
Проверьте маршрутизацию к изолированной посети командой:
ping <ip_address>
Где <ip_address> IP-адрес виртуальной машины isolated_vm.
Если виртуальным машинам vrrp_master и vrrp_backup больше не требуется доступ в интернет, отвяжите публичные IP от виртуальных машин и откажитесь от аренды, чтобы остановить тарификацию.
Вы настроили маршрутизацию к изолированной подсети с помощью виртуальных IP и пользовательских маршрутов.