Привет, Хабр!

Помните времена, когда «белый» IP-адрес был нормой, а не платной услугой? Когда для доступа к своему серверу хватало простого ssh user@ip_address? Я тоже помню. Но эта эпоха незаметно уходит.

Сегодня мы оказались в новой реальности. Ваша домашняя «Малинка» задыхается за провайдерским NAT, а облачный VPS в Европе кажется далеким и изолированным островом. Как получить доступ к первой или второй?

Мой путь начался с классики: я хотел поднять на домашней Raspberry Pi простой и быстрый WireGuard-сервер. Все мои попытки разбились о глухую стену провайдерского NAT. И в этот момент я понял: игра изменилась. Проблема не в протоколе, а в топологии. Нельзя постучать в дверь, которой для внешнего мира просто не существует.

Это стало моим личным вызовом. Я отправился в путешествие по миру оверлейных сетей, наступил на грабли с DynDNS, но в итоге нашел свое сокровище — простое и почти магическое решение по имени ZeroTier. Решение, которое не только открыло «дверь» к моей домашней «Малинке», но и позволило с такой же легкостью превратить любой VPS в личный VPN-шлюз.

Эта статья — не очередной гайд по VLESS или Shadowsocks для обхода сложных блокировок. Это не "серебряная пуля" против DPI. Это честный гайд по постройке вашей личной, плоской и безопасной L2-сети поверх хаоса современного интернета. Мы соберем VPN-хаб, который не боится NAT, независимо от того, где он будет жить — на скромной «Малинке» дома или на арендованном VPS в другой стране. Мы разберем весь процесс по шагам, от регистрации до настройки полного туннеля, и честно поговорим о компромиссах этого решения.

Грабли №1: Мечты о WireGuard и суровая реальность NAT

Я, как и многие, в первую очередь подумал о классике — WireGuard. Настройка сервера на Pi казалась элементарной: сгенерировать ключи, прописать конфиги, поднять интерфейс. Красота!

Но тут я вспомнил… Мой провайдер. Никаких белых IP, никакого проброса портов. Порты закрыты наглухо, и извне до моей Малинки не достучаться. Все попытки поднять WireGuard-сервер, который бы слушал входящие соединения, разбивались о невидимую стену NAT. Это были те еще танцы с бубном, но результата ноль.

"Что ж, — подумал я, — значит, нужен другой подход. Тот, что не боится NAT."

Секретное оружие: ZeroTier, или как создать VPN-сеть, которая сама находит дорогу

Мое спасение пришло из мира "Zero-Configuration" VPN. Имя ему – ZeroTier. Суть проста, как три рубля: это не просто VPN, это инструмент для создания виртуальной локальной сети, где все устройства общаются друг с другом, как будто они в одной комнате. И что самое важное? Ему плевать на проброс портов!

Лайфхак: ZeroTier прекрасно справляется с CG-NAT, так как все соединения – исходящие. Ваш Raspberry Pi сам "достучится" до ZeroTier-серверов, и ваш телефон тоже. А дальше они уже будут общаться между собой, используя эти "связующие" соединения.

Погнали! Настраиваем ZeroTier на Raspberry Pi и телефоне

Весь процесс занял у меня минут 15-20, не считая кофе-брейка.

Шаг 1: Создаем свою виртуальную штаб-квартиру в ZeroTier Central

Идем на my.zerotier.com и регистрируемся. После регистрации сразу же создаем новую сеть – кнопка Create A Network. Вам выдадут 16-значный Network ID. Это ID вашей личной VPN-империи. Копируем его!

Важно: В настройках сети на ZeroTier Central убедитесь, что в разделе "Access Control" выбрано "Private". Это значит, что вы будете вручную одобрять каждое новое устройство, которое попробует присоединиться к вашей сети. Безопасность — наше всё.

Шаг 2: Моя Малинка присоединяется к VPN-империи

Теперь берем нашу Raspberry Pi. Предполагаю, у вас уже есть к ней SSH-доступ и рабочий интернет по Ethernet или Wi-Fi.

  1. Устанавливаем ZeroTier:

    curl -s 'https://install.zerotier.com' | sudo bash

    Внимание, коллеги! Правило честного компромисса!
    Да, я знаю. Команда curl | sudo bash считается антипаттерном в мире системного администрирования. Это означает, что вы скачиваете скрипт из интернета и тут же выполняете его с правами суперпользователя, не проверяя его содержимое. В теории, это серьезная дыра в безопасности, если источник скрипта окажется скомпрометирован.

    Почему я все-таки использую её здесь?

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

    • Он значительно упрощает процесс, избавляя нас от ручной настройки репозиториев, импорта GPG-ключей и прочих "танцев с бубном", что идеально вписывается в концепцию "без головной боли".

    Если вы параноик (в хорошем смысле!) и хотите сделать всё "по фэншую", можете изучить содержимое скрипта перед выполнением (curl -s 'https://install.zerotier.com' > zerotier_install.sh, потом nano zerotier_install.sh и только потом sudo bash zerotier_install.sh). Или установить из репозитория вручную, как описано в документации ZeroTier. Но для нашего пет-проекта и доверенного источника — сойдет и так.

  2. Малинка просится в сеть: Используем скопированный ранее Network ID.

    sudo zerotier-cli join [ВАШ_NETWORK_ID]

    После команды вы увидите 200 join OK. Это значит, что Малинка отправила запрос.

Теперь возвращаемся в ZeroTier Central (на сайт). В разделе "Members" вы увидите новое устройство с непонятным адресом. Это наша Малинка! Ставим галочку в колонке "Auth?" напротив нее. Через несколько секунд увидите, что Малинка получила свой внутренний IP-адрес (например, 10.242.82.120). Запоминаем его — это её адрес в нашей виртуальной ZeroTier-сети.

Шаг 3: Мобильный клиент на подхвате

Берем в руки телефон (или ноутбук) – то устройство, с которого вы хотите выходить в интернет через домашний IP.

  1. Скачиваем ZeroTier: Идем на zerotier.com/download/ и устанавливаем приложение для вашей ОС (Android, iOS, Windows, macOS).

  2. Клиент просится в сеть: Запускаем приложение и вставляем тот же самый Network ID.

Снова возвращаемся в ZeroTier Central. В разделе "Members" появится еще одно новое устройство. Это ваш телефон/ноутбук! Опять ставим галочку "Auth?" напротив него. Он также получит свой ZeroTier IP (например, 10.242.194.58).

Вот где начинается магия, которая заставит ваш мобильный интернет выходить из домашнего IP.

Шаг 4: Говорим сети ZeroTier, что Малинка — это наш интернет-шлюз

Идем в ZeroTier Central, в настройки вашей сети.
В разделе "Managed Routes" добавляем ОДИН маршрут:

  • Destination: 0.0.0.0/0 (это "весь интернет")

  • Via: [IP_АДРЕС_RASPBERRY_PI_В_ZEROTIER] (тот самый 10.242.82.120)
    Нажимаем "Submit".

Лайфхак: ZeroTier на бесплатном аккаунте позволяет использовать только один "пользовательский" маршрут. Наш 0.0.0.0/0 как раз его и занимает. Не пугайтесь надписи "Max number of routes reached" — это просто уведомление, что вы его использовали, а не ошибка. Системный маршрут 10.242.0.0/16 всегда остается и не учитывается в лимите.

ZeroTier Central - Managed Routes с правилом 0.0.0.0/0
ZeroTier Central - Managed Routes с правилом 0.0.0.0/0

Правило честного компромисса: О чём стоит помнить

  • Скорость: Весь ваш мобильный трафик теперь будет идти через домашний интернет. Это означает, что ваша скорость будет ограничена скоростью upload вашего домашнего интернет-канала. Если у вас низкая скорость отдачи, это будет заметно. Лайфхак: Чтобы замерить реальное влияние на скорость, попробуйте speedtest-cli (если установлен) до и после подключения к ZeroTier:

    speedtest-cli --server 22765 # ID сервера в Москве, или любой другой близкий

    (Или используйте веб-сервисы вроде 2ip.ru/speed на мобильном устройстве.)

  • Обнаружение: Хотя ZeroTier шифрует ваш трафик, он, как и любой VPN, может быть обнаружен системами глубокой инспекции пакетов (DPI), которые используются ТСПУ. ZeroTier не имеет встроенных механизмов обфускации трафика, как некоторые платные VPN-сервисы, которые маскируются под обычный веб-трафик.

  • ZeroTier и "Зависимость от сервера": Здесь есть нюанс. ZeroTier действительно полагается на свои центральные серверы (контроллеры) для управления сетью (control plane): авторизации устройств, обмена ключами, установления связей и маршрутов. То есть, когда вы "авторизуете" новую Малинку, это происходит через серверы ZeroTier. НО! Сам трафик данных (data plane) между вашим телефоном и Raspberry Pi, после того как соединение установлено, пытается идти напрямую (peer-to-peer), минуя центральные серверы ZeroTier. Только если прямой P2P-канал установить не удается (например, из-за особо жесткого NAT), трафик может быть ретранслирован через ретрансляторы ZeroTier, но это уже исключение. Поэтому, да, зависимость есть, но она не в том, что весь ваш трафик постоянно "пролетает" через сторонние серверы.

Шаг 5: Настраиваем Малинку перенаправлять трафик

Малинка получила приказ стать шлюзом, но ей нужны инструкции.

  1. Включаем IP-форвардинг:

    sudo nano /etc/sysctl.conf

    Находим строку #net.ipv4.ip_forward=1, удаляем #, сохраняем (Ctrl+X, Y, Enter) и применяем изменения:

    sudo sysctl -p

    Проверяем: cat /proc/sys/net/ipv4/ip_forward должен вывести 1.

  2. Настраиваем NAT (правила файрволла):
    Здесь мы говорим Малинке: "Трафик, пришедший из ZeroTier, перенаправляй в наш домашний интернет и маскируй его под свой IP".

    Лайфхак: Чтобы точно узнать имя вашего активного интернет-интерфейса (будь то wlan0 или end0), выполните команду:

    ip route show default | awk '{print $5}'

    Результат этой команды (например, wlan0 или end0) будет именем вашего исходящего интерфейса. Используйте его вместо [ВАШ_ИНТЕРФЕЙС_В_ИНТЕРНЕТ] в командах ниже.
    Имя вашего ZeroTier-интерфейса (ztt6j2rt4v) также может отличаться. Проверьте его командой ip a (это тот, у которого IP 10.242.82.120).

    # Очищаем старые правила на всякий случай
    sudo iptables -t nat -F
    sudo iptables -F
    
    # Добавляем новые правила
    # Замените [ВАШ_ИНТЕРФЕЙС_В_ИНТЕРНЕТ] на wlan0 или end0 (полученный из `ip route show default`)
    # Замените ztt6j2rt4v на имя вашего ZeroTier-интерфейса
    sudo iptables -t nat -A POSTROUTING -o [ВАШ_ИНТЕРФЕЙС_В_ИНТЕРНЕТ] -j MASQUERADE
    sudo iptables -A FORWARD -i ztt6j2rt4v -o [ВАШ_ИНТЕРФЕЙС_В_ИНТЕРНЕТ] -j ACCEPT
    sudo iptables -A FORWARD -i [ВАШ_ИНТЕРФЕЙС_В_ИНТЕРНЕТ] -o ztt6j2rt4v -m state --state RELATED,ESTABLISHED -j ACCEPT
  3. Делаем правила постоянными: Чтобы не вводить их после каждой перезагрузки:

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

Это последний, но решающий шаг!

  1. На вашем телефоне (или ноутбуке) откройте приложение ZeroTier.

  2. Зайдите в настройки вашей ZeroTier-сети.

  3. Найдите опцию, которая звучит как "Route via ZeroTier", "Allow Default Route" (это в случае Windows) или "Разрешить маршрут по умолчанию".

  4. ВКЛЮЧИТЕ ЕЁ!

Мобильное приложение.
Мобильное приложение.

Шаг 6: Финальный штрих на клиенте: Включаем "полный туннель"!

Теперь, когда вы подключены к мобильному интернету и к ZeroTier, ваш публичный IP-адрес должен быть тот же, что и у вашего домашнего провайдера! Проверить можно на 2ip.ru. У меня сработало! Теперь все сервисы, которые "думают", что я дома, действительно видят меня дома, где бы я ни был.

Правило честного компромисса: Возможности и ограничения нашего VPN-хаба

Поздравляю! Наша система работает, и "Малинка" доступна из любой точки мира. Но, как и у любого инструмента, у ZeroTier есть свои особенности. Давайте честно разберем, что мы получили и в чем заключаются компромиссы.

1. Скорость: Ваш домашний "upload" — это ваше "бутылочное горлышко"

Весь ваш мобильный трафик теперь проходит через домашний интернет-канал. Это значит, что скорость вашего VPN будет напрямую ограничена скоростью отдачи (upload) вашего домашнего тарифа. Если у вас оптика с симметричными 100 Мбит/с — вы, скорее всего, не заметите разницы. Но если у вас тариф с 5-10 Мбит/с на отдачу, загрузка тяжелых страниц и видео будет ощутимо медленнее.

2. Зависимость от серверов ZeroTier: Управление централизовано, данные — нет

Это ключевой нюанс, который нужно понимать. ZeroTier — не полностью децентрализованная система.

  • Управление (Control Plane): Для "знакомства" устройств, обмена ключами и помощи в обходе NAT, ZeroTier всегда использует свои центральные серверы. Если они недоступны, вы не сможете добавить новое устройство или установить новое соединение.

  • Данные (Data Plane): А вот сам трафик (ваши запросы, переписка) после установки соединения ZeroTier изо всех сил старается пустить напрямую между вашими устройствами (P2P), минуя свои серверы. Ваши личные данные не летят постоянно через инфраструктуру ZeroTier, что является огромным плюсом для приватности.

3. Цель и Возможности: Доступ, а не "Невидимость"

Изначально мы решали проблему доступа к устройству за NAT. Однако, получив полный туннель через удаленный сервер (будь то домашний Pi или VPS в другой стране), вы получаете и его IP-адрес. Это открывает определенные возможности:

  • Доступ к геоблокированным сервисам: Вы можете "присутствовать" в сети так, как будто физически находитесь в локации вашего сервера. Если ваш VPS находится в Германии, для всех сайтов вы будете пользователем из Германии.

  • Стабильность соединения: Если ваш основной провайдер по каким-то причинам "не дружит" с определенными сервисами, играми или протоколами, трафик через туннель может работать стабильнее и без перебоев.

При этом стоит помнить: ZeroTier — не инструмент для "невидимости". Его трафик шифруется, но сам протокол имеет узнаваемые "сигнатуры". Продвинутые системы анализа трафика (DPI) могут его обнаружить и потенциально замедлить. Он не предназначен для активной маскировки, как это делают специализированные протоколы вроде VLESS или Shadowsocks.

4. А что насчет VPS? Другой сценарий, та же магия!

Этот гайд не только про Raspberry Pi. Та же самая логика прекрасно работает для создания защищенной приватной сети между вашими VPS у разных хостеров.

Представьте, у вас есть:

  • Дешевый VPS с большим диском для бэкапов.

  • Мощный VPS для вычислений.

  • Ваш рабочий ноутбук.

Вы можете установить ZeroTier на все эти машины, объединить их в одну приватную сеть и получить:

  • Безопасное общение: Сервисы (например, база данных и веб-сервер на разных VPS) могут общаться друг с другом по внутренним, зашифрованным IP-адресам ZeroTier. Вам больше не нужно выставлять порты базы данных в "белый" интернет!

  • Удобный доступ: Вы можете подключаться по SSH к своим серверам по их статичным и легко запоминаемым ZeroTier IP.

  • "Чистый" интернет-канал: Настроив любой из VPS как шлюз, вы можете выходить в интернет с IP-адреса дата-центра. Это не только решает проблему доступа к геоблокированным ресурсам, но и часто обеспечивает более прямое и стабильное соединение с международными сервисами.

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

А какие "грабли" с сетевой доступностью ваших пет-проектов были у вас? И как вы их решали? Делитесь опытом в комментариях!

P.S. Что дальше? ZeroTier vs Tailscale Конечно, ZeroTier — не единственный игрок в этой лиге. Его главный и очень мощный конкурент — Tailscale, построенный на базе WireGuard. В следующей статье мы устроим им очную ставку: сравним простоту настройки, производительность, модель безопасности и выясним, в каких сценариях один будет удобнее другого. Оставайтесь на связи!

Комментарии (23)


  1. achekalin
    17.07.2025 05:34

    Он вроде детектится легко, скажите, под блокировку не попадали?


    1. staffel
      17.07.2025 05:34

      Увы, по личному опыту через мобильный МТС трафик не ходит. Коннект к ZT есть, но больше ничего. В профильной теме на 4pda такое же пишут за Yota, Билайн и Мегафон.


    1. cyberscoper Автор
      17.07.2025 05:34

      Мне не дано узнать, я живу там где тспу и в помине нет.

      Не было цели обойти блокировки, это и писалось


    1. pol_pot
      17.07.2025 05:34

      А вот хз. В норме он должен только дырявить нат, то есть принимать udp пакеты что бы у клиента на роутере провайдера порт открылся и говорить другому клиенту что вот тут есть временно открытый порт кидай туда свои данные. Как это задетектить и заблокировать?


  1. maasuk
    17.07.2025 05:34

    Статья несомненно хорошая, но увы бессмысленная, ибо ни ZeroTire, ни Tailscale через мобильные операторы более не работают (Мегафон, Yota, за остальные не в курсе).
    Если ZeroTire давненько уже, то Tailscale у меня на Yota отвалился буквально на этой неделе. Помянем.


    1. cyberscoper Автор
      17.07.2025 05:34

      Как давно? Для конкретно обхода у меня есть другая статья с мультихоп соединением


      1. Semy
        17.07.2025 05:34

        Актуально. Ждём.


  1. dorne
    17.07.2025 05:34

    ZT крайне удобен для организации site-to-site VPN для связи удаленных сегментов одной L2 сети через интернет. Достаточно создать L2 мост между ZT интерфейсом и физическим Ethernet. Удобно администрировать малинки-машинки не выставляя их наружу.

    Это работает даже когда сегменты являются не стационарными, используют интернет соединения без белого IP и спрятаны за NAT.

    Однако, к сожалению, на мобильном интернете часто не работает или работает со сбоями из-за ограничений мобильных операторов. Операторы не то чтобы блокируют ZT трафик целенаправленно, а, просто дико его режут по скорости и добавляют задержки и минимальный приоритет. Примерно как трафик торрентов. В итоге, соединение становится нестабильным и проседает/пропадает.

    Однако, на домашних интернатах работает прекрасно.


  1. Lazhu
    17.07.2025 05:34

    Поднимем сервер не за натом, а на белом ip, и будем коннектиться к нему клиентами. Уличная магия!


    1. cyberscoper Автор
      17.07.2025 05:34

      Статика это дополнительные расходы, которых для пет-проекта хочется избежать. Именно здесь и нужна "уличная магия" ZeroTier, чтобы "пробиться" домой без белого IP.


      1. Lazhu
        17.07.2025 05:34

        Уж даже не знаю, то ли я писАть не умею, то ли вы читать


  1. AcckiyGerman
    17.07.2025 05:34

    Платный централизованный сервис? Спасибо, не надо. Есть же всякие оверлейные децентрализованные сети. Yggdrasil, Tor, I2P.


  1. GADzillo
    17.07.2025 05:34

    Хороший сервис, позволяющий поднять выходной узел сети на резидентном IP без лишних телодвижений. Кроме того, снимает нагрузку на центральный узел по сравнению с классическим WG. К сожалению, выше уже высказались, что в РФ имеются проблемы с использованием.


  1. Ingener74
    17.07.2025 05:34

    То что делает ZeroTier, TailScale и остальные такие же, делается бесплатно через WireGuard


    1. cyberscoper Автор
      17.07.2025 05:34

      Да, но стоит вчитаться и понять что проброс портов у меня не возможен и я за нат, в случае домашней малинки.

      Как WireGuard решит эту проблему, расскажите?


      1. Ingener74
        17.07.2025 05:34

        Очень просто, на домашней малинке вы заводите WireGuard клиент(у меня он работает в докере) который всё время подключен к WireGuard серверу(работает на VPS, у которого IP адрес постоянный и белый по сути), и у вас уже есть канал который работает всегда. Всё остальное работает через этот канал, если вас интересует доступ к своему домашнему железу через VPN. У меня через такой канал реализован доступ ко всей домашней под сети + через неё я получаю доступ к своим домашним сервисам(надо только не забывать про безопасность и закрывать их авторизацией).
        А TailScale и прочие это просто удобная обёртка над WireGuard и делает она по сути то что я описал.


        1. cyberscoper Автор
          17.07.2025 05:34

          Понял вашу затею и для кого-тоона будет хорошим вариантом, но у меня нет желания добавлять еще одно звено в виде vps)


          1. Ingener74
            17.07.2025 05:34

            Через ZeroTier вы тоже его добавляете, только скрытно для вас(у них он в их облаке), для вас минус что вы его не держите под контролем.


            1. Hopenolis
              17.07.2025 05:34

              Не, zerotier в большинстве случаев работает напрямую, делает дыру в нате. Он бы заколебался проксировать весь трафик.


      1. pol_pot
        17.07.2025 05:34

        Есть вариант у кинетиков, они позволяют поднять (sstp) впн без белого ип через себя. Нужен любой хоть сколько-нибудь современный роутер keenetic.


  1. Sazonov
    17.07.2025 05:34

    Я правильно понял, что это не self-hosted решение? А что-то типа того что уже давно встроено в тот же NordVPN?


    1. cyberscoper Автор
      17.07.2025 05:34

      Серверы ZeroTier нужны только для того, чтобы твои устройства смогли найти друг друга, но весь твой трафик потом идёт напрямую между ними. Это очень похоже на фичу Meshnet в NordVPN только ZeroTier это конструктор для энтузиастов, а не готовый продукт


  1. pol_pot
    17.07.2025 05:34

    Бесплатный аккаунт разрешает всего 10 девайсов. А подписка от 18$ в месяц, очень дорого для впна который большую часть трафика даже не пропускает через себя.