Обзор ZeroTier. VPN и SD-WAN в одном флаконе
Проблема унификации сетевых соединений обычно актуальна в больших корпоративных сетях. Но и некоторые домашние пользователи могут столкнуться с похожей проблемой.
ZeroTier — сервис, который помогает объединить устройства в различных сетях в единую виртуальную локальную сеть.
Приложение доступно для Windows, macOS, Android, iOS, Linux, FreeBSD и NAS.
Зачем нужно
Прежде чем рассказывать о самом ZeroTier, стоит разобраться, зачем нужны виртуальные локальные сети и что такое SD-WAN.
Для домашних пользователей всё просто. Допустим, вы хотите поиграть с другом по локальной сети, но вы, естественно, находитесь в разных сетях. Если создать между вами виртуальную локальную сеть и подключиться к ней, то игра будет думать, что вы действительно находитесь в одной сети.
Аналогично решается проблема прямой передачи файлов или подключения устройств, когда требуется локальное соединение, но по факту его нет.
Для корпоративных пользователей решается вообще ряд глобальных проблем. При использовании единой виртуальной сети можно быстро унифицировать весь «зоопарк» соединений: VPN, VLAN, SD-WAN и прочее. Также можно интегрировать облачные устройства, управлять удалённым доступом, даже создавать 5G P2P-сети. При этом будет ускорение и упрощение сетевого общения, более безопасная работа.
Всё это, кстати, ZeroTier умеет делать «из коробки».
Настройка
Сразу разочарую корпоративных читателей сайта. Про все ваши фишки я не буду рассказывать. Во-первых, они платные, во-вторых, я домашний пользователь, и ни физически, ни умственно не способен настроить подобные вещи.
Начальная настройка очень простая и делается буквально в одно нажатие в админке ZeroTier через веб-интерфейс. Нужно просто нажать кнопку «Create A Network».
После этого сервис выдаст ID и имя вашей виртуальной сети. В целом, на этом всё. Для подключения к сети достаточно поделиться ID и ввести его на всех устройствах в клиенте ZeroTier.
Конечно, если открыть сеть в админке, вы сможете изменить практически любой параметр. Из простого — можно изменить имя и доступность сети: частная или публичная. А из сложного — можно настроить маршрутизацию, параметры IPv6 и DNS.
Задать собственные параметры фаервола, управлять пользователями и многое другое.
Подключение к сети
Как я написал выше, для подключения достаточно знать ID сети и просто ввести его в приложении-клиенте.
Независимо от операционной системы, приложения по своей сути работают одинаково. Поэтому расписывать процесс подключения для каждого из них или рассматривать возможности клиентов по отдельности нет смысла.
В параметрах сети можно получить информацию о текущем подключении.
Качество сети
Качество работы мне проверить не удалось. Во-первых, потому что у меня нет устройств в разных сетях, а из дома выходить нельзя. Во-вторых, для качественной работы сети нужно как минимум два устройства.
Возможно, именно поэтому у меня возникли проблемы с подключением к ZeroTier на этих самых двух устройствах. Windows- и Android-клиенты не смогли успешно подключиться с первой попытки.
Стоимость
Стоимость ZeroTier зависит от количества нод и админов. Также на бесплатном тарифе нет поддержки, кроме сообщества. А профессиональный тариф не даёт возможность использования SLA.
В целом, базового бесплатного тарифа с головой хватит для домашнего использования.
На первый взгляд, ZeroTier — это отличная замена LogMein Hamachi. По факту здесь придётся немного повозиться с настройками, даже если вам ничего не нужно, кроме простого объединения устройств в виртуальную локальную сеть.
С другой стороны, даже на бесплатном тарифе есть возможность настройки сети под себя. Конечно, в этом случае надо обладать хотя бы базовыми знаниями в настройках сетевого оборудования. Если вы не знаете, что такое ноды, маршруты, DNS и тому подобное, вы не справитесь.
Zerotier¶
os-zerotier — условно-бесплатная виртуальная частная сеть. Для подключения устройств используются сетевые контроллеры zerotier.com Бесплатная версия предусматривает подключение до 100 устройств и неограниченное число сетей.
Перед использованием плагина необходимо зарегистрироваться на портале https://my.zerotier.com Выбрать тарифный план и на вкладке Networks создать свою сеть. Документация доступна по адресу https://www.zerotier.com/manual.shtml
Установка
Пройдите в раздел Система -> Прошивка -> Обновления. На вкладке Плагины нажмите на кнопку + напротив плагина os-zerotier для его установки.
Настройка функционала
Настройка функционала осуществляется в разделе VPN: Zerotier: Настройки.
В строке Включен необходимо установить галочку
API Access Token — Используется для надстроек над плагином, значение можно получить на портале https://my.zerotier.com — в разделе Account необходимо нажать на ссылку Create Access Token. Не обязательное значение.
local.conf settings — Конфигурационный файл в формате JSON для изменения предопределенных параметров, более подробно описание можно найти по адресу https://www.zerotier.com/manual.shtm. Не обязательное значение.
Нажимаем кнопку Применить после этого доступна вкладка Сети
На вкладке Сети под столбцом Команды нажимаем на кнопку +
В появившемся окне Редактировать сеть Zerotier в поле ID сети вводим значение Network ID, полученное на портале https://my.zerotier.com в разделе Networks -> My Networks
Параметр Local Description — описание данной сети.
Нажимаем Сохранить изменения
Для присоединения устройства к сети необходимо установить галочку в колонке Включено. Для отключения устройства галочку необходимо убрать.
Далее на портале https://my.zerotier.com необходимо авторизовать подключенное устройство — в разделе Networks -> My Networks в секции Members установить галочку в колонке Auth в строке с подключенным устройством
В меню VPN: Zerotier: Обзор на вкладках Information, Сети и Peers можно посмотреть текущую информацию о состоянии сервиса Zerotier, подключенных сетях и подключенных пирах.
Статический IP-адрес и маршрутизация
Автоматическое назначение IP-адресов для узлов контролируется на портале Zerotier. В случае если необходимо назначить статический IP-адрес, например, чтобы пир настроил маршрут на нашу сеть, следует на портале Zerotier в меню Networks -> My Networks установить галочку Do Not Auto-Asigne IPs для данного устройства.
В меню Интерфейсы: Назначения портов на TING добавить новый интерфейс
Затем в настройках интерфейса прописать статический IP-адрес из сети Zerotier. Параметр Предотвращение удаления интерфейса должен быть включен.
Zerotier использует порт 9993 протокол udp, не забудьте добавить разрешение в правила межсетевого экрана.*
Создание программно-определяемой сети и VPN с помощью ZeroTier One
В наши дни все больше и больше программных проектов создаются командами, члены которых работают в разных городах или даже странах. Такой рабочий процесс имеет много очевидных преимуществ, однако бывают случаи, когда подобным командам нужно связать свои компьютеры через Интернет так, как если бы они находились в одной комнате. Например, чтобы протестировать распределенные системы, такие как Kubernetes, или создавать сложные мультисервисные приложения. Иногда это просто улучшает производительность. А еще вы не рискуете открыть незащищенным сервисам доступ в Интернет. Эта парадигму можно построить с помощью Software-Defined Networking (SDN), относительно новой технологии, которая предоставляет динамическую сетевую структуру, которая полностью состоит из программного обеспечения.
ZeroTier One – это открытое приложение, которое использует некоторые из последних разработок SDN, что позволяет пользователям создавать безопасные, управляемые сети и обрабатывать подключенные устройства так, как если бы они находились в одном и том же физическом местоположении. ZeroTier предлагает веб-консоль для управления сетью и программное обеспечение конечной точки для клиентов. Это зашифрованная технология Peer-to-Peer (равноправных субъектов) – в отличие от традиционных решений VPN, связь не проходит через центральный сервер или маршрутизатор, сообщения отправляются напрямую с хоста на хост. Это очень эффективно и обеспечивает минимальную задержку. Среди других преимуществ – простой процесс развертывания и настройки ZeroTier, простое обслуживание, возможность централизованной регистрации и управления авторизованными нодами через веб-консоль.
Этот мануал поможет вам настроить простую сеть типа «точка-точка». Поскольку программно-определяемая сеть не использует традиционный дизайн «клиент-сервер», в установке и настройке не будет центрального VPN-сервера; это упрощает развертывание инструмента и добавление дополнительных нод. После установления соединения вы сможете использовать возможности ZeroTier VPN и некоторые умные функции Linux, чтобы перенаправить трафик из сети ZeroTier с вашего сервера и настроить клиент для отправки трафика в этом направлении.
Требования
- Сервер Ubuntu 16.04, настроенный по этому мануалу.
- Аккаунт ZeroTier One, который можно создать здесь. Для этого мануала подойдет и бесплатная версия.
- Локальный компьютер, который можно подключить к SDN в качестве клиента. В этом мануале сервер и компьютер используют Ubuntu Linux. полный список поддерживаемых клиентов вы найдете здесь.
1: Создание программно-определяемой сети с помощью ZeroTier One
Платформа ZeroTier предоставляет центральную точку управления программно-определенной сетью. Здесь вы можете авторизовать и деактивировать клиентов, выбрать схему адресации и создать сетевой Network ID, на который можно направить клиентов при настройке.
Войдите в свою учетную запись ZeroTier, нажмите Networks в верхней части экрана и нажмите Create. Появится автоматически созданное имя сети. Кликните по нему, чтобы просмотреть конфигурации сети. Запишите Network ID, выделенный желтым цветом, поскольку вам нужно будет ссылаться на него позже.
Если вы предпочитаете указать более описательное сетевое имя, отредактируйте имя в левой части экрана; вы также можете добавить описание, если хотите. Все внесенные вами изменения будут сохранены и применены автоматически.
Затем укажите, для какого IPv4-диапазона будет использоваться SDN. В правой части экрана в области IPv4 Auto-Assign выберите диапазон адресов, в который будут попадать ваши ноды. Для целей данного мануала можно использовать любой диапазон, но важно оставить флажок Auto-Assign from Range.
Убедитесь, что Access Control слева установлен на Certificate (Private Network). Это гарантирует, что к вашей сети смогут подключаться только одобренные машины, а не любой, кто знает ваш Network ID.
Основа программно-определяемой сети ZeroTier готова. Теперь нужно установить программное обеспечение ZeroTier на сервере и клиентских компьютерах, чтобы они могли подключаться к SDN.
2: Установка клиента ZeroTier One на сервер и локальный компьютер
Поскольку ZeroTier One является относительно новой программой, он еще не включен в основные репозитории программного обеспечения Ubuntu. Потому ZeroTier предоставляет сценарий, который можно использовать для установки. Эта команда является подписанным GPG скриптом. Этот сценарий состоит из четырех основных частей:
- curl -s ‘https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61’ – импортирует открытый ключ ZeroTier из MIT.
- gpg –import – добавляет открытый ключ ZeroTier в локальную цепочку доверенных ключей. Следующая часть команды будет выполнена только в случае, если импорт GPG пройдет успешно.
- if z=$(curl -s ‘https://install.zerotier.com/’ | gpg); then echo “$z” – эта часть делает несколько вещей. В целом, если криптографически подписанный сценарий установки, загруженный с ZeroTier.com, проходит через GPG и не отклоняется как неподписанный, эта команда выведет информацию на экран.
- sudo bash; fi – эта часть берет проверенный только что сценарий и выполняет его.
Важно! Ни в коем случае нельзя скачивать что-то из Интернета и перенаправлять в другую программу, если вы не уверены в надежности источника. Если хотите, вы можете проверить программное обеспечение ZeroTier, просмотрев исходный код на официальной странице проекта на GitHub.
Подключитесь к своему серверу и выполните следующую команду в качестве обычного пользователя (разбор команды приведен ниже). Убедитесь, что вы не запускаете его как root, так как сценарий автоматически запрашивает пароль для повышения уровня привилегий, и не забудьте оставить консоль ZeroTier открытой в браузере, чтобы вы могли взаимодействовать с ней, когда это необходимо.
Как только скрипт завершит работу, вы увидите примерно такие две строки вывода. Запишите свой адрес ZeroTier (без квадратных скобок) и имя системы, сгенерировавшей этот адрес, оба значения вам понадобятся позже:
*** Waiting for identity generation.
*** Success! You are ZeroTier address [ 916af8664d ].
Повторите этот шаг на локальном компьютере, если используете Ubuntu. Если вы пользуетесь другой системой, выполните соответствующие действия для вашей ОС (их можно найти на сайте ZeroTier). Опять же, не забудьте записать адрес ZeroTier и систему, сгенерировавшую этот адрес. Эта информация понадобится на следующем этапе этого мануала.
3: Подключение к сети ZeroTier
Теперь ПО ZeroTier есть на сервере и на клиенте, и вы можете подключить эти машины к сети через веб-консоль ZeroTier.
Используйте следующую команду, чтобы клиент запрашивал доступ к сети ZeroTier через платформу. Исходный запрос клиента будет отклонен и оставлен висящим, но скоро мы исправим это. Обязательно замените NetworkID своим идентификатором сети, который вы записали ранее.
sudo zerotier-cli join NetworkID
200 join OK
Вы получите сообщение 200 join OK, если сервис ZeroTier выполнил ее успешно. Если вы не получили такой ответ, проверьте свой Network ID.
Поскольку вы создали не общедоступную сеть, к которой может присоединиться любой пользователь, а закрытую сеть, теперь вам нужно авторизовать своих клиентов. Перейдите в веб-консоль ZeroTier и прокрутите страницу вниз до части, где находится раздел Members. Вы должны найти две записи, помеченные как Online, с теми же адресами, которые вы записали ранее.
В первом столбце поставьте флажок Auth?, чтобы разрешить им присоединиться к сети. Контроллер Zerotier присвоит серверу и клиенту IP-адрес из выбранного диапазона в следующий раз, когда они вызовут SDN.
Выделение IP-адресов может занять некоторое время. Во время ожидания вы можете указать краткое имя (Short Name) и описание (Description) нод в разделе Members.
Итак, вы подключили в программно-определяемую сеть две системы.
Вы ознакомились с панелью управления ZeroTier, использовали интерфейс командной строки для загрузки и установки ZeroTier, а также подключили сервер и клиент к этой сети. Теперь нужно убедиться, что все было сделано правильно.
4: Проверка соединения
На этом этапе важно подтвердить, что обе ноды могут взаимодействовать друг с другом. Хотя хосты утверждают, что подключены к сети, есть вероятность, что они не могут общаться.
Легкий способ узнать IP-адрес ZeroTier для каждого хоста – посмотреть в раздел Members веб-консоли ZeroTier. Возможно, вам придется обновить страницу после авторизации сервера и клиента. Кроме того, для поиска этих адресов вы можете использовать командную строку Linux. Используйте следующую команду на обеих машинах – вам нужно будет использовать первый IP-адрес, указанный в списке. В приведенном ниже примере это 203.0.113.0.
ip addr sh zt0 | grep ‘inet’
inet 203.0.113.0/24 brd 203.0.255.255 scope global zt0
inet6 fc63:b4a9:3507:6649:9d52::1/40 scope global
inet6 fe80::28e4:7eff:fe38:8318/64 scope link
Чтобы проверить соединение между хостами, запустите ping с одного хоста и укажите IP-адрес второго. На клиенте команда будет выглядеть так:
А на сервере – так:
Если с противоположного хоста возвращаются ответы (как показано ниже), то ноды успешно обмениваются данными по SDN.
PING 203.0.113.0 (203.0.113.0) 56(84) bytes of data.
64 bytes from 203.0.113.0: icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 203.0.113.0: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 203.0.113.0: icmp_seq=3 ttl=64 time=0.043 ms
Вы можете добавить в эту конфигурацию столько машин, сколько захотите, повторив описанные выше процессы установки ZeroTier и добавления машины в сеть.
Теперь, когда вы убедились, что ваш сервер и клиент могут взаимодействовать друг с другом, вы можете попробовать настроить сеть, чтобы обеспечить выходной шлюз и создать собственный VPN.
5: Настройка функции ZeroTier VPN
Как упоминалось во введении, ZeroTier можно использовать в качестве инструмента VPN. Если вы не планируете использовать ZeroTier как VPN-средство, вам не нужно следовать этому разделу. Просто перейдите к разделу 6.
VPN скрывает источник ваших сообщений. Это позволяет обойти фильтры и ограничения, которые могут существовать в используемой вами сети. В сети Интернет вы будете просматриваться с общедоступного IP-адреса своего сервера. Чтобы использовать ZeroTier в качестве инструмента VPN, вам нужно внести еще несколько изменений в конфигурацию сервера и клиента.
Включение трансляции сетевых адресов и IP-форвардинга
Трансляция сетевых адресов, или просто NAT – это метод, с помощью которого маршрутизатор принимает пакеты, помеченные IP-адресом отправителя, на одном интерфейсе и затем свопирует этот адрес к адресу маршрутизатора. Запись этого свопа хранится в памяти маршрутизатора, так что когда трафик возвращается обратно, маршрутизатор может преобразовать IP в исходный адрес. NAT обычно используется, чтобы несколько компьютеров могли работать за одним публичным IP-адресом, что очень удобно для VPN. Примером NAT на практике является внутренний маршрутизатор, который ваш интернет-провайдер дал вам, чтобы подключить все устройства в вашем доме к Интернету. Ваш ноутбук, телефон, планшеты и любые другие устройства с поддержкой Интернета, похоже, имеют общий внешний IP-адрес в Интернете, потому что ваш маршрутизатор поддерживает NAT.
Хотя NAT обычно выполняется маршрутизатором, сервер также может ее выполнять. На данном этапе нужно использовать эту функциональность на своем сервере ZeroTier, чтобы включить возможности VPN.
IP-форвардинг – это функция, выполняемая маршрутизатором или сервером, благодаря которой трафик перенаправляется с одного интерфейса на другой, если эти IP-адреса находятся в разных зонах. Если маршрутизатор был подключен к двум сетям, то IP-форвардинг позволяет ему пересылать трафик между ними. Эта функция может показаться простой, но ее на удивление сложно реализовать успешно. Однако в данном мануале для ее поддержки нужно отредактировать нескольких файлов конфигурации.
Включив IP- форвардинг, вы направите VPN-трафик клиента в сети ZeroTier на интерфейс ZeroTier сервера. Без этих изменений конфигурации ядро Linux (по умолчанию) будет сбрасывать все пакеты, не предназначенные для интерфейса, на который они идут. Это нормальное поведение ядра Linux, поскольку обычно поступающие на интерфейс пакеты, целевой адрес которых находится в другой сети, вызваны неправильной конфигурацией маршрутизации в другой точке сети.
IP-форвардинг следует рассматривать как способ сообщит ядру Linux, что пакеты, направляемые на разные интерфейсы, можно принимать. По умолчанию эта функция отключена – это значение 0. Чтобы включить ее, нужно изменить значение на 1.
Чтобы просмотреть текущую конфигурацию, введите:
sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
Чтобы включить переадресацию IP, отредактируйте файл /etc/sysctl.conf на своем сервере и добавьте в него нужную строку. Этот файл позволяет администратору переопределять настройки ядра по умолчанию и всегда применяется после перезагрузки, поэтому вам не нужно будет перенастраивать его снова. Используйте nano или другой текстовый редактор, чтобы добавить следующую строку в конец файла.
sudo nano /etc/sysctl.conf
. . .
net.ipv4.ip_forward = 1
Сохраните и закройте файл, а затем запустите следующую команду, чтобы обновить настройки ядра.
Сервер применит новые директивы в файле немедленно, без перезагрузки. Выполните ту же команду, что и раньше, и вы увидите, что IP-форвардинг теперь включен.
sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Теперь, когда IP-форвардинг включен, вы можете предоставить серверу новые правила маршрутизации. Поскольку в ядре Linux уже встроена сетевая функция маршрутизации, все, что вам нужно сделать – это добавить некоторые правила, чтобы сообщить встроенному брандмауэру и маршрутизатору, что новый трафик не нужно сбрасывать.
Чтобы добавить эти правила из командной строки, вам сначала нужно узнать имена, которые система Ubuntu присвоила интерфейсу Zerotier и обычным интернет-интерфейсам. Обычно это zt0 и eth0 соответственно, однако это не всегда так.
Чтобы узнать имена этих интерфейсов, используйте команду ip link show. Эта утилита командной строки является частью iproute2, коллекции утилит, которая по умолчанию устанавливается на Ubuntu:
В выводе этой команды имена интерфейсов находятся непосредственно рядом с номерами, которые определяют уникальный интерфейс в списке. Эти имена интерфейсов ниже выделены красным. Если у вас используются другие интерфейсы, замените имя интерфейса.
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 72:2d:7e:6f:5e:08 brd ff:ff:ff:ff:ff:ff
3: zt0: mtu 2800 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether be:82:8f:f3:b4:cd brd ff:ff:ff:ff:ff:ff
Теперь используйте iptables для включения nat и IP-маскарадинга:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Включите переадресацию трафика и отслеживание активных соединений:
sudo iptables -A FORWARD -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
Затем разрешите переадресацию трафика от zt0 на eth0. Обратное правило не требуется, поскольку в этом мануале предполагается, что клиент всегда вызывается через сервер, а не наоборот:
sudo iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
Важно помнить, что правила iptables автоматически не сохраняются при перезагрузке. Вам нужно будет сохранить эти правила, чтобы они возвращались в действие после перезагрузки. Для этого на сервере выполните приведенные ниже команды, следуя инструкциям на экране, чтобы сохранить текущие правила IPv4 (IPv6 не требуется).
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
После запуска команды sudo netfilter-persistent save может возникнуть необходимость перезагрузить сервер, чтобы проверить сохранность правил iptables. Простым способом проверки является команда sudo iptables-save, которая сбрасывает текущую конфигурацию, загруженную в память, в терминал. Если вы видите правила маскарадинга, форвардинга и интерфейса zt0, значит, ваши новые правила сохранены.
sudo iptables-save
# Generated by iptables-save v1.6.0 on Tue Apr 17 21:43:08 2018
. . .
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
. . .
-A FORWARD -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i zt0 -o eth0 -j ACCEPT
COMMIT
. . .
Теперь, когда эти правила работают на сервере, он может управлять трафиком между сетью ZeroTier и Интернетом. Тем не менее, VPN не будет работать, если сеть ZeroTier не знает о том, что сервер можно использовать в качестве шлюза.
Настройка сервера для управления глобальными маршрутами
Чтобы сервер обрабатывал трафик любого клиента, нужно убедиться, что другие клиенты в сети ZeroTier знают, что свой трафик нужно отправлять на него. Это можно сделать, установив глобальный маршрут в консоли ZeroTier (также это называется Default Route). Сюда любой клиент сможет отправлять трафик по умолчанию, то есть любой трафик, который не должен попасть в какое-либо другое конкретное расположение.
Перейдите в верхнюю правую часть страницы Networks в консоли ZeroTier и добавьте новый маршрут со следующими параметрами. IP-адрес ZeroTier можно найти в разделе Members на странице конфигурации Network ZeroTier. В поле network/bits введите 0.0.0.0/0, в поле (LAN) введите IP-адрес вашего сервера ZeroTier.
Когда данные будут на месте, нажмите «+», и вы увидите, что новое правило появится ниже существующего. В нем будет оранжевый глобус, что указывает на глобальный маршрут.
Осталось только настроить клиент.
Настройка клиентов Linux
Примечание: Команды в этом разделе применимы только для клиентов Linux. Инструкции по настройке клиентов Windows или macOS приведены в следующем разделе.
Если ваш клиент работает на Linux, вам нужно будет вручную внести изменения в файл /etc/sysctl.conf. Это нужно для изменения представления ядра о допустимом пути возврата клиентского трафика. Поскольку теперь работает VPN, трафик, возвращающийся с сервера на клиентскую машину, иногда может отправляться с другого сетевого адреса, а не с того, на который он был отправлен. По умолчанию ядро Linux рассматривает такой трафик как недопустимый и сбрасывает его.
Откройте файл /etc/sysctl.conf:
sudo nano /etc/sysctl.conf
Сохраните и закройте файл. Теперь запустите эту команду, чтоб применить изменения:
Затем сообщите программе ZeroTier Client, что вашей сети разрешено переносить трафик default route. Это меняет маршрутизацию клиента и потому считается привилегированной функцией, ее необходимо активировать вручную. Команда выведет структуру конфигурации. Убедитесь, что в начале есть строка allowDefault=1:
sudo zerotier-cli set NetworkID allowDefault=1
Если позже вы решите прекратить использование ZeroTier VPN, установите allowDefault=0:
sudo zerotier-cli set NetworkID allowDefault=0
При каждом перезапуске ZeroTier на клиенте значение allowDefault=1 будет сбрасываться до 0, поэтому не забудьте повторно обновить его, чтобы активировать функции VPN.
По умолчанию сервис ZeroTier запускается автоматически при загрузке как на клиентах Linux, так и на сервере. Если вы хотите удалить сервис из автозагрузки, вы можете сделать это с помощью следующей команды.
sudo systemctl disable zerotier-one
Если вы хотите использовать другие операционные системы в своей сети ZeroTier, читайте следующий раздел. В противном случае перейдите к разделу «Управление потоками».
Другие клиенты (не Linux)
Клиентское программное обеспечение ZeroTier доступно для многих систем, не только для ОС Linux – поддерживаются даже смартфоны. ZeroTier предлагает клиенты для Windows, MacOS, Android, iOS и даже для специализированных операционных систем, таких как QNAP, Synology и WesternDigital NAS
Чтобы подключить клиентов MacOS и Windows к сети, запустите инструмент ZeroTier и введите свой NetworkID в указанное поле, а затем нажмите Join. Не забудьте поставить в консоли ZeroTier флажок в Allow для авторизации нового хоста в сети.
Обязательно поставьте галочку в поле Route all traffic through ZeroTier. Если вы этого не сделаете, клиент будет подключен к сети ZeroTier, но не будет отправлять через нее свой трафик.
Используйте средство проверки IP-адресов, например ICanHazIP, чтобы убедиться, что трафик появляется в Интернете с IP-адреса вашего сервера. Чтобы проверить это, вставьте следующий URL-адрес в адресную строку браузера. На этом веб-сайте будет показан IP-адрес, который вы используете для доступа к сайту:
После этого вы сможете использовать свою сеть VPN.
6: Управление потоками (опционально)
Одним из преимуществ программно-определяемой сети является централизованный контроллер. В контексте ZeroTier это пользовательский веб-интерфейс. Из этого интерфейса можно писать правила потока, которые определяют, какой трафик может или не может отправлять сеть. Например, вы можете закрыть определенные сетевые порты, несущие трафик по сети, ограничить взаимодействие между хостами и даже перенаправить трафик.
Это чрезвычайно эффективная функция, которая вступает в силу почти мгновенно, поскольку любые изменения, внесенные в таблицу потоков, передаются членам сети и вступают в силу всего через несколько секунд. Чтобы изменить правила потока, вернитесь в веб-интерфейс ZeroTier, перейдите во вкладку Networking и прокрутите страницу вниз, пока не увидите поле Flow Rules (возможно, его нужно будет развернуть). Вы увидите текстовое поле, в котором можно указать любые правила. Полное руководство доступно в консоли ZeroTier (чуть ниже поля Flow Rules, называется Rules Engine Help).
Вот несколько примеров правил, которые помогут вам изучить эту функциональность.
Чтобы заблокировать любой трафик, связанный с DNS-сервером Google 8.8.8.8, добавьте это правило:
Чтобы перенаправить трафик общедоступного DNS-сервера Google на одну из нод ZeroTier, добавьте следующее правило.
redirect NetworkID
ipdest 8.8.8.8/32
;
Если сеть имеет особые требования к безопасности, вы можете отключить FTP-порты, Telnet и незашифрованный HTTP, добавив это правило:
drop
dport 80,23,21,20
;
Добавив все необходимые правила, нажмите Save Changes.
Заключение
В этом мануале вы познакомились с Software-Defined Networking и получили некоторое представление о преимуществах этой технологии и ZeroTier. Также вы знаете, как с помощью этого инструмента настроить VPN. VPN дает вам более глубокое представление о том, как работает маршрутизация в такой сети. Также вы узнали кое-что о правилах потоков.
Теперь, когда у вас сеть «точка-точка», вы можете расширить ее функции, например, настроить общий доступ к файлам. Если у вас есть NAS или файловый сервер, вы можете связать его с ZeroTier и получить быстрый доступ к нему. Если вы хотите поделиться файлами со своими друзьями, вы можете присоединить их к вашей сети ZeroTier. Сотрудники, живущие в разных частях планеты, могут использовать в сети централизованные места хранения данных.
Zerotier что это
сеть
связь снами
+7 (499) 322-96-38
Установка своего ZeroTier контроллера на Debian 10.
ZTNCUI — пользовательский интерфейс сетевого контроллера ZeroTier
ZeroTier предоставляет виртуальное сетевое решение, удачно названное Global Area Networking . Это позволяет устройствам подключаться друг к другу через Интернет (и частные сети), как если бы они были подключены к одной локальной сети (LAN). Его очень просто развернуть — просто установитепрограммное обеспечение ZeroTier One и подключитесь к сети ZeroTier, используя 16-значный сетевой идентификатор.
Сети ZeroTier устанавливаются и настраиваются на сетевом контроллере ZeroTier . Вы можете использовать сетевые контроллеры, размещенные на ZeroTier, или настроить свой собственный автономный сетевой контроллер . Настройка контроллера автономной сети достаточно просто — достаточно просто установить ZeroTier Одно программное обеспечение и следуйте инструкциям по установке ниже , чтобы установить ZTNCUI на машине Linux.
Скачать дистрибутив и установить без графической оболочки, установить только утелиты и SSH Server.
Далее подключаемся по SSH через PuTTy логинемся под пользователем.
Повышаем права до root? командой su и пароль ( от root ).
Устанавливаем необходимые пакеты
apt-get install -y apt-transport-https gnupg mc iftop
С помощью PGP
curl -s ‘https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg’ | gpg —import && if z=$(curl -s ‘https://install.zerotier.com/’ | gpg); then echo «$z» | bash; fi
или HTTPS
curl -s https://install.zerotier.com | sudo bash
Устанавливаем систему управления ZeroTier Controller — ZTNCUI
curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.7.1_amd64.deb
apt-get install ./ztncui_0.7.1_amd64.deb
Устанавливаем порт подключения 3443, или любой свой.
sh -c «echo ‘HTTPS_PORT=3443’ > /opt/key-networks/ztncui/.env»
sh -c «echo ‘NODE_ENV=production’ >> /opt/key-networks/ztncui/.env»
Перезагружаем контроллер
systemctl restart ztncui
Если по каким-то причинам ztncui не запускаеться
sh -c «echo ‘HTTPS_HOST=IP.XX.XX.XX’ > /opt/key-networks/ztncui/.env»
usermod -aG zerotier-one username
chmod g+r /var/lib/zerotier-one/authtoken.secret
Подключаемся через web
Логин пользователь admin и пароль password.
https://ipaddress:3443
Далее переходим к настройкам контроллера
Настройка контроллера
Add network -> Название сети
Easy setup of network ->
Network address in CIDR notation 192.168.20.0/24
Start of IP assignment pool 192.168.20.1
End of IP assignment pool 192.168.20.255
Для подключения только авторизованным хостам
Private -> Enable access control
Описываем маршруты для доступа в локальные сети
ipAssignmentPools и v4AssignMode автоматическая раздача адресов
v6AssignMode не настраиваем
DNS -> Ставим IP вашего DNS Сервера или 127.0.0.1
Подключаем контроллер к сети Zerotier-one и CLI все действия по SSH
systemctl start zerotier-one
Подключить его к существующей сети ZeroTier — eb964b2e6d778687
/sbin/zerotier-cli join eb964b2e6d778687
Не обязательно
Разрешите переопределение маршрута по умолчанию на устройствах
/sbin/zerotier-cli set eb964b2e6d778687 allowDefault=1
Дополнительные комманды
/sbin/zerotier-cli -j listnetworks
/sbin/zerotier-cli listnetworks
/sbin/zerotier-cli info -j
/sbin/zerotier-cli listpeers
/sbin/zerotier-cli peers
Удалить узел из сети можно командой в CLI этого узла.
/sbin/zerotier-cli leave eb964b2e6d778687
Как все пишут мы не делаем .
Команду отключения управление IP-адресами и маршрутами ZeroTier:
Не вносит информацию в ip route
/sbin/zerotier-cli set eb964b2e6d778687 allowManaged=0
Может понадобиться
zerotier-cli set network_id allowDNS=true
zerotier-cli set network_id allowDefault=true
zerotier-cli set network_id allowGlobal=true
zerotier-cli set network_id allowManaged=true
Перезагрузить интерфейс
systemctl restart ztncui
Посмотрим что получилось на интерфейсах, внимание в новых линуксах изменились команды.
ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens18: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 1e:6d:f8:c0:e6:fa brd ff:ff:ff:ff:ff:ff
inet 192.168.0.71/24 brd 192.168.0.255 scope global dynamic ens18
valid_lft 86070sec preferred_lft 86070sec
inet6 fe80::1c6d:f8ff:fec0:e6fa/64 scope link
valid_lft forever preferred_lft forever
3: ztyx5tzkhk: mtu 2800 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 86:6d:e1:26:00:26 brd ff:ff:ff:ff:ff:ff
inet 192.168.20.1/24 brd 192.168.20.255 scope global ztyx5tzkhk
valid_lft forever preferred_lft forever
inet6 fe80::ec31:d4ff:fe41:3790/64 scope link
valid_lft forever preferred_lft forever
Есть два варианта DHCP или Static IP, где ens18 наш сетевой интерфейс, у вас может быть другой.
mcedit /etc/network/interfaces
allow-hotplug ens18
iface ens18 inet dhcp
allow-hotplug ens18
iface ens18 inet static
address 192.168.0.71
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
Первым делом включим маршрутизацию пакетов между сетевыми интерфейсами. Для этого редактируем конфиг /etc/sysctl.conf:
Смотрим маршруты для роутинга.
ip route
192.168.0.0/24 dev ens18 proto kernel scope link src 192.168.0.71
192.168.3.0/24 via 192.168.0.71 dev ens18 proto static
192.168.9.0/24 via 192.168.0.71 dev ens18 proto static
192.168.20.0/24 dev ztyx5tzkhk proto kernel scope link src 192.168.20.1
Для просмотра активности сетевого интерфейса, запускаем утилиту, указывая необходимый ключ:
/sbin/iftop -i ens18
/sbin/iftop -i ztyx5tzkhk
Чтобы увидеть порты, по которым идет трафик, добавляем ключ -P:
/sbin/iftop -i ztyx5tzkhk -P
Еще одна полезныя программа iptraf
И напоследок iptables.
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -p tcp -i eth0 —dport 22 -j ACCEPT
iptables -A INPUT -p udp -i eth0 —dport 9993 -j ACCEPT
iptables -A INPUT -i ztyx5tzkhk -j ACCEPT
iptables -A FORWARD -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.22.0/24 -j MASQUERADE
или
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Внести в rc.local
iptables -L -n -t nat
iptables -L
Добавим ARP-PROXY
apt-get update
apt-get install parprouted
Где ens18 сетевой адаптер локальной сети, а zt3qvjhgx2 сети ZeroTier
echo 1 > /proc/sys/net/ipv4/conf/ens18/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/zt3qvjhgx2/proxy_arp
Добавим интерфейсы для мониторинга
parprouted ens18 zt3qvjhgx2
Вот и все, Вы стали обладателем своего контроллера.
поделиться в соц.сетях
Понедельник, 30 Октября 2023
Multimedia Opportunisties
© prochor.ru