С помощью этого руководства вы настроите виртуальную машину в качестве маршрутизатора и с ее помощью организуете доступ в интернет для других машин в подсети.
Маршрутизатор позволяет перенаправлять трафик от одного сетевого интерфейса к другому. Принцип его работы состоит в следующем:
На сетевой интерфейс маршрутизатора приходит трафик от других машин подсети.
При прохождении трафика через маршрутизатор в заголовках IP-пакетов происходит подмена адреса источника.
Виртуальные машины в подсети получают доступ в интернет с помощью публичного IP-адреса, который назначен на сетевой интерфейс маршрутизатора.
Таким образом можно полностью контролировать трафик, не используя SNAT-шлюзы и другие облачные инструменты.
Вы будете использовать следующие сервисы:
Виртуальные машины — сервис, в рамках которого предоставляется виртуальная машина.
Шаги:
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
Убедитесь, что для вашей учетной записи достаточно прав на проект. При необходимости настройте права или запросите их у администратора.
1. Разверните ресурсы в облаке
На этом шаге вы создадите две виртуальные машины: маршрутизатор и клиент. Маршрутизатор будет принимать трафик от других ВМ в подсети. Клиентская виртуальная машина без публичного IP-адреса будет получать доступ в интернет через маршрутизатор.
Создайте виртуальную машину со следующими параметрами:
Название — vm-router.
Зона доступности — ru.AZ-1.
Образ — публичный образ Ubuntu 22.04.
Сетевой интерфейс — выберите тип Подсеть с публичным IP.
VPC — Default.
Подсеть — Default_ru.AZ-1.
Скопируйте и сохраните адрес подсети: он потребуется для дальнейшей настройки.
Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.
Логин — router.
Метод аутентификации — Пароль.
Пароль — задайте пароль пользователя.
В строке ВМ vm-router скопируйте и сохраните адрес из столбца Внутренний IP: он потребуется для дальнейшей настройки.
Создайте виртуальную машину со следующими параметрами:
Название — vm-client.
Зона доступности — ru.AZ-1.
Образ — публичный образ Ubuntu 22.04.
Сетевой интерфейс — выберите тип Подсеть.
VPC — Default.
Подсеть — Default_ru.AZ-1.
Логин — client.
Метод аутентификации — Пароль.
Пароль — задайте пароль пользователя.
2. Настройте маршрутизатор
На маршрутизаторе необходимо настроить правила, по которым он управляет трафиком.
Нажмите на название виртуальной машины vm-router.
Перейдите на вкладку Серийная консоль.
Введите логин и пароль пользователя, указанные при создании ВМ.
Включите маршрутизацию пакетов в параметрах ядра.
Проверьте текущий статус параметра. Выполните команду:
cat /proc/sys/net/ipv4/ip_forwardРезультат выполнения команды:
1 — параметр включен, можно переходить к п. 5;
0 — параметр выключен, нужно внести изменения в файле /etc/sysctl.conf.
Откройте файл /etc/sysctl.conf для редактирования:
sudo nano /etc/sysctl.confНайдите строку #net.ipv4.ip_forward=1 и удалите знак # в начале. Сохраните изменения.
Примените изменения:
sudo sysctl -p /etc/sysctl.conf
Создайте правило маршрутизации, которое при передаче трафика подменяет IP-адрес виртуальных машин в подсети на IP-адрес маршрутизатора:
sudo iptables -t nat -A POSTROUTING -o enp3s0 -s <subnet_address> -j SNAT --to <internal_router_ip>Где:
<subnet_address> — адрес подсети Default_ru.AZ-1.
<internal_router_ip> — внутренний IP-адрес виртуальной машины vm-router.
Сохраните правило:
sudo mkdir /etc/iptables && touch /etc/iptables/iptables.rules && iptables-save > /etc/iptables/iptables.rules
3. Настройте сетевой интерфейс маршрутизатора
На сетевом интерфейсе маршрутизатора необходимо отключить проверку адресов источника и назначения.
На странице сервиса «Виртуальные машины» выберите виртуальную машину vm-router.
Перейдите на вкладку Сетевые параметры.
В правом верхнем углу блока нужного сетевого интерфейса нажмите
и выберите Свойства.
Отключите опцию Проверка адреса источника/назначения.
Подтвердите отключение.
4. Настройте клиентскую ВМ
После настройки маршрутизатора нужно изменить статические маршруты на клиентской ВМ.
На странице сервиса «Виртуальные машины» выберите виртуальную машину vm-client.
Перейдите на вкладку Серийная консоль.
Введите логин и пароль пользователя, указанные при создании ВМ.
Удалите маршрут по умолчанию:
sudo ip r delete defaultДобавьте новый маршрут по умолчанию, который указывает на vm-router:
sudo ip r add default via <internal_router_ip> dev enp3s0Где <internal_router_ip> — внутренний IP-адрес виртуальной машины vm-router.
Измените маршруты к DNS-серверам на vm-client:
sudo ip r add 8.8.8.8 via <internal_router_ip> dev enp3s0sudo ip r add 8.8.4.4 via <internal_router_ip> dev enp3s0Проверьте доступ в интернет с помощью команды ping:
ping -c 10 cloud.ruУбедитесь, что пакеты возвращаются. Пример ответа команды:
PING cloud.ru (185.71.64.201) 56(84) bytes of data.64 bytes from 185.71.64.201 (185.71.64.201): icmp_seq=1 ttl=57 time=5.55 ms64 bytes from 185.71.64.201 (185.71.64.201): icmp_seq=2 ttl=57 time=2.53 ms64 bytes from 185.71.64.201 (185.71.64.201): icmp_seq=3 ttl=57 time=1.82 ms64 bytes from 185.71.64.201 (185.71.64.201): icmp_seq=4 ttl=57 time=1.88 ms64 bytes from 185.71.64.201 (185.71.64.201): icmp_seq=5 ttl=57 time=1.71 ms64 bytes from 185.71.64.201 (185.71.64.201): icmp_seq=6 ttl=57 time=1.79 ms64 bytes from 185.71.64.201 (185.71.64.201): icmp_seq=7 ttl=57 time=1.67 ms64 bytes from 185.71.64.201 (185.71.64.201): icmp_seq=8 ttl=57 time=1.58 ms64 bytes from 185.71.64.201 (185.71.64.201): icmp_seq=9 ttl=57 time=1.65 ms64 bytes from 185.71.64.201 (185.71.64.201): icmp_seq=10 ttl=57 time=1.97 ms--- cloud.ru ping statistics ---10 packets transmitted, 10 received, 0% packet loss, time 13059ms
Теперь трафик с vm-client передается в интернет через vm-router.
Результат
Вы научились настраивать виртуальную машину в качестве маршрутизатора и управлять через нее доступом в интернет для других виртуальных машин в подсети.
- Перед началом работы
- 1. Разверните ресурсы в облаке
- 2. Настройте маршрутизатор
- 3. Настройте сетевой интерфейс маршрутизатора
- 4. Настройте клиентскую ВМ
- Результат