Настройка сети для Data Proc
Согласно концепции сети в Yandex.Cloud, хосты без публичных IP-адресов в кластере Data Proc не имеют доступа к ресурсам, находящимся за пределами виртуальной сети VPC. Чтобы взаимодействовать с узлами других сетей, интерфейсами сервисов Yandex.Cloud или узлами в интернете необходимо настроить публичный IP-адрес для хоста или воспользоваться NAT в интернет для нужной подсети.
NAT в интернет
Возможность настроить NAT в интернет для подсетей VPC находится на стадии Preview. Если эта функция вам пока недоступна, консоль управления предложит вам заполнить заявку, чтобы запросить доступ.
Чтобы включить NAT для подсети:
- Войдите в консоль управления.
- Выберите сервис VPC в нужном каталоге.
- Нажмите на строку нужной виртуальной сети.
- Нажмите значок в строке подсети и выберите пункт Включить NAT в интернет.
Использование NAT-инстанса и статических маршрутов
При использовании NAT-инстанса весь трафик проходит через дополнительную виртуальную машину, NAT-инстанс:
- Вы можете контролировать весь исходящий трафик, и при необходимости развернуть не только NAT, но и VPN между подсетью Yandex.Cloud и нужными ресурсами.
- При этом возникают дополнительные затраты на NAT-инстанс, и может оказаться существенным ограничение в пропускной способности одного порта виртуальной машины.
Чтобы воспользоваться NAT-конфигурацией, вам понадобится две виртуальных подсети: одна с кластерами Data Proc, и вторая с виртуальной машиной, которой присвоен публичный IP-адрес.
Примеры подсетей:
dataproc-net
- подсеть с кластерами Data Proc, с CIDR192.168.1.0/24
.dataproc-nat-net
- подсеть для NAT-инстанса, с CIDR192.168.100.0/24
.
Чтобы из подсети dataproc-net
появился доступ к внешним ресурсам:
-
Создайте в сети
dataproc-nat-net
виртуальную машину на основе образа NAT-инстанс, с публичным IP-адресом. -
Скопируйте внутренний IP-адрес созданной машины.
-
На странице сети, в которой находятся подсети, создайте таблицу маршрутизации с именем
nat
. -
В таблицу маршрутизации добавьте статический маршрут:
- Префикс назначения —
0.0.0.0/0
- Next hop — внутренний IP-адрес NAT-инстанса.
- Префикс назначения —
-
На странице сети привяжите таблицу маршрутизации
nat
к подсетиdataproc-net
. -
Включите маршрутизацию на NAT-инстансе, дописав следующие строки в файл
/etc/sysctl.conf
:net.ipv4.ip_forward = 1 net.ipv4.conf.all.accept_redirects = 1 net.ipv4.conf.all.send_redirects = 1
-
Включите исполнение
/etc/rc.local
на запуске, выполнив команды:$ sudo systemctl enable rc-local $ sudo touch /etc/rc.local $ sudo chmod 755 /etc/rc.local
-
В файл
/etc/rc.local
допишите следующий код:#!/bin/sh iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
-
Перезапустите виртуальную машину:
$ sudo reboot -f
Чтобы проверить, правильно ли настроен NAT, выполните на NAT-инстансе следующую команду:
$ curl ifconfig.co
При корректной конфигурации команда выведет публичный IP-адрес NAT-инстанса.