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

Создаем 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 сервер.