Облачная платформаEvolution

Маршрутизация к изолированной подсети с помощью виртуальных IP


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

Схема отказоустойчивой маршрутизации к изолированной подсети с использованием виртуального IP

Вы будете использовать следующие сервисы:

  • VPC — изолированная виртуальная сеть для создания безопасной инфраструктуры.

  • «Подсети» — сервис, позволяющий создавать подсети для размещения в них облачных ресурсов.

  • «Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.

  • «Публичные IP» — сервис для организации доступа виртуальных машин в интернет.

  • «Группы безопасности» — сервис для контроля трафика виртуальных машин.

  • «Виртуальные IP» — сервис для инфраструктурной поддержки отказоустойчивых решений.

Шаги:

Перед началом работы

Если вы уже зарегистрированы, войдите под своей учетной записью.

1. Создайте VPC и подсети

На этом шаге вы подготовите две маршрутизируемые подсети в VPC и одну изолированную подсеть.

  1. Создайте VPC-сеть с названием VPC-1.

  2. Убедитесь, что на странице сервиса Evolution VPC отображается VPC-сеть VPC-1 в статусе «Создана».

  3. Создайте подсеть со следующими параметрами:

    • Названиеsubnet-1.

    • VPCVPC-1.

    • Зона доступностиru.AZ-1.

    • Адрес10.0.0.0/24.

  4. Создайте подсеть со следующими параметрами:

    • Названиеsubnet-2.

    • VPCVPC-1.

    • Зона доступностиru.AZ-1.

    • Адрес10.0.1.0/24.

    • DNS-серверы8.8.8.8.

  5. Создайте подсеть со следующими параметрами:

    • Названиеisolated-subnet.

    • Включите опцию Локальная подсеть (трафик замкнут).

    • Зона доступностиru.AZ-1.

    • Адрес10.0.2.0/24.

  6. Убедитесь, что на странице сервиса «Подсети» отображаются подсети subnet-1, subnet-2, isolated-subnet в статусе «Создана».

2. Создайте виртуальные машины

На этом шаге вы создадите одну виртуальную машину в изолированной подсети и три виртуальных машины в VPC:

  • две для master и backup-узлов;

  • одну для клиента, с которого будут отправляться запросы к виртуальной машине в изолированной подсети.

  1. Создайте виртуальную машину со следующими параметрами:

    • Названиеisolated_vm.

    • Зона доступностиru.AZ-1.

    • ОбразПубличныеUbuntu 22.04.

    • Гарантированная доля vCPU10%.

    • vCPU1.

    • RAM1.

    • Сетевой интерфейс — выберите тип Подсеть.

    • VPCИзолированные подсети.

    • Подсеть10.0.2.0/24 (subnet-2).

    • Внутренний IPАвтоматически.

    • Группы безопасностиSSH-access_ru.AZ-1.

    • Метод аутентификацииПароль.

    • Пароль — задайте пароль пользователя.

    • Имя хостаisolated_vm.

  2. Создайте виртуальную машину со следующими параметрами:

    • Названиеvrrp_master.

    • Зона доступностиru.AZ-1.

    • ОбразПубличныеUbuntu 22.04.

    • Гарантированная доля vCPU10%.

    • vCPU1.

    • RAM1.

    • Сетевой интерфейс — выберите тип Подсеть с публичным IP.

    • VPCVPC-1.

    • Подсеть10.0.1.0/24 (subnet-2).

    • Внутренний IPАвтоматически.

    • Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.

    • Группы безопасностиSSH-access_ru.AZ-1.

    • Метод аутентификацииПароль.

    • Пароль — задайте пароль пользователя.

    • Имя хостаvrrp_master.

  3. Создайте виртуальную машину со следующими параметрами:

    • Названиеvrrp_backup.

    • Зона доступностиru.AZ-1.

    • ОбразПубличныеUbuntu 22.04.

    • Гарантированная доля vCPU10%.

    • vCPU1.

    • RAM1.

    • Сетевой интерфейс — выберите тип Подсеть с публичным IP.

    • VPCVPC-1.

    • Подсеть10.0.1.0/24 (subnet-2).

    • Внутренний IPАвтоматически.

    • Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.

    • Группы безопасностиSSH-access_ru.AZ-1.

    • Метод аутентификацииПароль.

    • Пароль — задайте пароль пользователя.

    • Имя хостаvrrp_backup.

  4. Создайте виртуальную машину со следующими параметрами:

    • Названиеclient.

    • Зона доступностиru.AZ-1.

    • ОбразПубличныеUbuntu 22.04.

    • Гарантированная доля vCPU10%.

    • vCPU1.

    • RAM1.

    • Сетевой интерфейс — выберите тип Подсеть.

    • VPCVPC-1.

    • Подсеть10.0.0.0/24 (subnet-1).

    • Внутренний IPАвтоматически.

    • Группы безопасностиSSH-access_ru.AZ-1.

    • Метод аутентификацииПароль.

    • Пароль — задайте пароль пользователя.

    • Имя хостаclient.

  5. Убедитесь, что в личном кабинете на странице сервиса «Виртуальные машины» отображаются виртуальные машины isolated_vm, client, vrrp_master, vrrp_backup в статусе «Запущена».

3. Настройте сетевые интерфейсы

На этом шаге вы настроите сетевые интерфейсы для виртуальных машин vrrp_master и vrrp_backup. Повторите инструкцию для каждой виртуальной машины.

  1. Добавьте сетевой интерфейс со следующими параметрами:

    • Опция Подсеть.

    • VPCИзолированные подсети.

    • Подсеть10.0.2.0/24 (isolated-subnet).

    • Внутренний IPАвтоматически.

    • Группы безопасностиSSH-access_ru.AZ-1.

  2. Выполните команду:

    ip address

    В ответе отобразится список всех сетевых интерфейсов и информация о них, например:

    ...
    2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc fq_codel state UP group default qlen 1000
    link/ether fa:16:3e:8c:2a:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.4/24 metric 100 brd 10.0.0.255 scope global dynamic enp3s0
    valid_lft 43174sec preferred_lft 43174sec
    inet6 fe80::f816:3eff:fe8c:2a8d/64 scope link
    valid_lft forever preferred_lft forever
    3: enp4s0: <BROADCAST,MULTICAST> mtu 9000 qdisc noop state DOWN group default qlen 1000
    link/ether fa:16:3e:c7:1e:57 brd ff:ff:ff:ff:ff:ff
  3. Проверьте, назначен ли IP-адрес интерфейсу для изолированной подсети. В приведенном примере на интерфейс enp3s0 назначен IP-адрес 10.0.1.4, но для интерфейса enp4s0 для изолированной подсети IP-адрес отсутствует.

  4. Если интерфейсу не назначен IP-адрес, выполните команду:

    sudo ip ad add <ip_address>/24 dev <interface>

    Где:

    • <ip_address> — внутренний IP-адрес в изолированной подсети, указан в сетевых параметрах виртуальной машины.

    • <interface> — название интерфейса для изолированной подсети.

  5. Убедитесь, что все сетевые интерфейсы активированы (state UP):

    ip address
  6. Выполните команду:

    ip route

    В ответе отобразится список маршрутов и информация о них.

  7. Удалите маршрут по умолчанию, в котором в качестве Next Hop указан адрес из диапазона изолированной подсети isolated-subnet:

    sudo ip route delete default via 10.0.2.1
  8. Чтобы удаленный маршрут не восстановился после перезагрузки виртуальной машины, установите запрет на обработку маршрутов по DHCP:

    1. В каталоге /etc/netplan/ откройте конфигурационный файл 50-cloud-init.yaml от имени суперпользователя:

      sudo nano /etc/netplan/50-cloud-init.yaml
    2. В настройках сетевого интерфейса, подключенного к изолированной подсети, после параметра dhcp4: true добавьте правило:

      dhcp4-overrides:
      use-routes: false
    3. Сохраните изменения.

  9. Разрешите маршрутизацию трафика:

    sudo sysctl -w net.ipv4.ip_forward=1
  10. Откройте конфигурационный файл /etc/sysctl.conf от имени суперпользователя:

    sudo nano /etc/sysctl.conf
  11. Удалите # перед параметром net.ipv4.ip_forward.

  12. Сохраните изменения.

4. Создайте и настройте виртуальные IP

На этом шаге вы настроите виртуальные IP на виртуальных машинах vrrp_master и vrrp_backup.

  1. Проверьте, что в сервисе «Подсети» в параметрах сетевых интерфейсов виртуальных машин vrrp_master и vrrp_backup включена опция Проверка адреса источника/назначения.

  2. Создайте виртуальный IP со следующими параметрами:

    • Названиеvip-1.

    • Тип подсетиVirtualization.

    • ОпцияМаршрутизируемая подсеть.

    • VPCVPC-1.

    • Подсеть10.0.1.0/24 (subnet-2).

    • Виртуальный IP-адрес10.0.1.100.

    • Интерфейсы виртуальных машин — интерфейсы vrrp_master и vrrp_backup.

  3. Создайте виртуальный IP со следующими параметрами:

    • Названиеvip-2.

    • Тип подсетиVirtualization.

    • ОпцияИзолированная подсеть.

    • Подсеть10.0.2.0/24 (isolated-subnet).

    • Виртуальный IP-адрес10.0.2.100.

    • Интерфейсы виртуальных машин — интерфейсы vrrp_master и vrrp_backup.

  4. Убедитесь, что на странице сервиса «Виртуальные IP» отображаются виртуальные IP vip-1 и vip-2 в статусе «Создан».

  5. На виртуальных машинах vrrp_master и vrrp_backup настройте сервис Keepalived:

    1. Установите сервис Keepalived, выполнив команду:

      sudo apt update && sudo apt install keepalived -y
    2. Создайте конфигурационный файл:

      sudo nano /etc/keepalived/keepalived.conf
    3. В конфигурационном файле укажите параметры для каждой виртуальной машины соответственно:


      vrrp_instance VIP1 {
      state MASTER
      interface <interface_routed>
      virtual_router_id 1
      priority 100
      advert_int 1
      virtual_ipaddress {
      10.0.1.100
      }
      preempt
      }
      vrrp_instance VIP2 {
      state MASTER
      interface <interface_isolate>
      virtual_router_id 10
      priority 100
      advert_int 1
      virtual_ipaddress {
      10.0.2.100
      }
      preempt
      }

      Где:

      • <interface_routed> — название интерфейса для маршрутизируемой подсети subnet-2.

      • <interface_isolate> — название интерфейса для изолированной подсети isolated-subnet.

    4. Перезапустите сервис Keepalived:

      sudo systemctl restart keepalived.service
    5. Проверьте статус сервиса Keepalived:

      sudo systemctl status keepalived.service

5. Настройте группы безопасности

На этом шаге вы настроите группы безопасности, чтобы разрешить прохождение трафика.

  1. Перейдите в сервис «Группы безопасности».

  2. Откройте группу безопасности SSH-access_ru.AZ-1.

  3. Создайте правила для входящего трафика с параметрами:

    Протокол

    Тип источника

    Источник

    Любой

    IP-адрес

    10.0.0.0/24

    Любой

    IP-адрес

    10.0.1.0/24

    Любой

    IP-адрес

    10.0.2.0/24

6. Настройте маршрутизацию

На этом шаге вы настроите маршрутизацию к изолированной подсети.

  1. Перейдите в сервис Evolution VPC.

  2. В VPC-1 создайте пользовательский маршрут со следующими параметрами:

    • Адрес назначения — IP-адрес виртуальной машины isolated_vm в формате CIDR, например 10.0.2.1/32.

    • Next Hop TypeВиртуальный IP.

    • Виртуальный IP10.0.1.100.

  3. Подключитесь через серийную консоль к виртуальной машине isolated_vm.

  4. Выполните команду:

    ip route

    В ответе отобразится список маршрутов и информация о них.

  5. Удалите маршрут по умолчанию:

    sudo ip route delete default via 10.0.2.1
  6. Создайте маршрут по умолчанию, указав в качестве Next Hop vip-2:

    sudo ip route add default via 10.0.2.100
  7. Чтобы удаленный маршрут не восстановился после перезагрузки виртуальной машины, установите запрет на обработку маршрутов по DHCP:

    1. В каталоге /etc/netplan/ откройте конфигурационный файл 50-cloud-init.yaml от имени суперпользователя:

      sudo nano /etc/netplan/50-cloud-init.yaml
    2. В конфигурационный файл после параметра dhcp4: true добавьте правило:

      dhcp4-overrides:
      use-routes: false
    3. Сохраните изменения.

7. Проверьте работу и удалите неиспользуемые ресурсы

На этом шаге вы проверите маршрутизацию трафика.

  1. Подключитесь через серийную консоль к виртуальной машине client.

  2. Проверьте маршрутизацию к изолированной посети командой:

    ping <ip_address>

    Где <ip_address> IP-адрес виртуальной машины isolated_vm.

  3. Если виртуальным машинам vrrp_master и vrrp_backup больше не требуется доступ в интернет, отвяжите публичные IP от виртуальных машин и откажитесь от аренды, чтобы остановить тарификацию.

Результат

Вы настроили маршрутизацию к изолированной подсети с помощью виртуальных IP и пользовательских маршрутов.