fbpx
Перейти к содержимому

Создаем VPN сеть с ZeroTier

В этой статье мы рассмотрим с вами как использовать ZeroTier для построения VPN сети. Советуем вам ознакомиться с нашей статьей Введение в ZeroTier в ней подробно рассказано про установку и настройку ZeroTier.

В качестве узла VPN у нас будет выступать сервер под управлением операционной системы Ubuntu. Подобных узлов у вас может быть большое количество и при необходимости вы сможете выполнять переключение между VPN узлами меня маршрутизацию в сети ZeroTier.

Настройка сервера

Для того чтобы сервер мог выступать в качестве VPN узлам нам необходимо включить на сервере NAT и перенаправление пакетов. Чтобы проверить активировано ли у вас перенаправление портов необходимо выполнить следующую команду:

sudo sysctl net.ipv4.ip_forward

Если в выводе команды вы получите net.ipv4.ip_forward = 0 это означает что перенаправление пакетов между сетевыми интерфейсами у вас выключен и для его активации необходимо отредактировать файл /etc/sysctl.conf в котором нужно добавить или раскомментировать строку

net.ipv4.ip_forward = 1

После сохранения изменения в файле выполняем следующую команду

sudo sysctl -p

Чтобы наш сервер позволял выполнят переадресацию между интерфейсами нам необходимо добавить несколько правил в файрвол.

Сперва узнаем имя ZeroTier интерфейса для этого выполняем команду

ip link show

В выводе мы увидим все сетевые интерфейсы которые доступные в системе

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether ff:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
3: zt2lrt5nfx: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether ff:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff

Нас интересует сетевой интерфейс который начинается на zt — это и есть интерфейс ZeroTier, в примере выше это zt2lrt5nfx.

Теперь добавим правила в iptables. Первое правило добавляет преобразование сетевых адресов и масТеперь добавим правила в iptables. Первое правило включает NAT на нашем сервере

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Вторым правилом разрешаем перенаправление трафика и отслеживание активных интерфейсов

sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

И последнее правило разрешает перенаправление трафика с интерфейса ZeroTier на главный сетевой интерфейс

sudo iptables -A FORWARD -i zt2lrt5nfx -o eth0 -j ACCEPT

Все внесенные правила iptables после перезагрузки будут удалены и для того чтобы их сохранить нам необходимо будет установить дополнительный пакет iptables-persistent

sudo apt-get install iptables-persistent
sudo netfilter-persistent save

Для того чтобы проверить все активные правила iptables можно выполнить команду

sudo iptables-save

На этом настройка на стороне сервера завершена. Нам остается настроить правила маршрутизации в панели ZeroTier. Переходим по адресу https://my.zerotier.com/network и в блоке Managed Routes добавляем новый маршрут

В Add Routes вписываем 0.0.0.0/0, а в (Via) внутренний IP адрес сервера который вы настраивали для работы в качестве VPN в данном примере это 10.144.164.26.

По-умолчанию правила маршрутизации не применяются при подключении к сети и чтобы они начали действовать их необходимо активировать на стороне клиента.

Настройка клиента в Linux с Default Route

В файл /etc/sysctl.conf необходимо внести следующую строку

sudo /etc/sysctl.conf
net.ipv4.conf.all.rp_filter=1

Сохраним файл и запустим команду которая применит внесенные изменения.

sudo sysctl -p

И теперь для того чтобы подключить наш сервер к сети ZireTier с применением маршрутов выполняем команду заменив в ней NetworkID на ваш ID сети.

sudo zerotier-cli set NetworkID allowDefault=1

Настройка остальных клиентов ZeroTier с Default Route

Чтобы активировать Default Route в клиентах которые установлены в Windows, macOS, Android и iOS необходимо в настройках подключения включить опцию Allow Default Route.

Widnows / macOS
Android / iOS

После активации данной опции необходимо выполнить переподключение к сети ZeroTier. И теперь, если вы проверите ваш внешний IP адрес на сайте http://icanhazip.com то вы увидите IP адрес сервера ZeroTier который был настроен как VPN сервер.