Tutorial

Начало работы с программно-конфигурируемой сетью и создание VPN с помощью ZeroTier One

Published on January 24, 2020
Русский
Начало работы с программно-конфигурируемой сетью и создание VPN с помощью ZeroTier One

Введение

Сегодня все больше и больше проектов разработки программного обеспечения реализуются командами, участники которых работают вместе из разных географических мест. Хотя у такого рабочего процесса есть много видимых преимуществ, существуют ситуации, когда таким командам может потребоваться соединить свои компьютеры через Интернет и рассматривать их так, будто они находятся в одной комнате. Например, вы можете заниматься тестированием распределенных систем, например Kubernetes, и созданием мультисервисных приложений. Иногда можно повысить продуктивность, если вы можете рассматривать компьютеры так, будто они находятся рядом с друг другом, поскольку вам не нужно будет рисковать тем, что ваши незавершенные службы попадут в Интернет. Эта парадигма может быть реализована через программно-конфигурируемую сеть (Software-Defined Networking, SDN) — сравнительно новую технологию, которая предоставляет динамическую сетевую систему, чье существование полностью опирается на программное обеспечение.

ZeroTier One — это приложение с открытым исходным кодом, использующее некоторые из последних разработок в SDN, которое позволяет пользователям создавать защищенные, управляемые сети и рассматривать связанные устройства так, будто они находятся в одном физическом месте. ZeroTier предоставляет клиентам веб-консоль для управления сетью и программным обеспечением на конечных устройствах. Данный инструмент использует пиринговую технологию, а это значит, что, в отличие от традиционных VPN-решений, в процессе коммуникации не используется центральный сервер или маршрутизатор, а сообщения пересылаются напрямую из хоста к хосту. Результатом этого является высокая эффективность и минимальное время задержки. Среди других преимуществ следует отметить простоту процесса развертывания и конфигурации ZeroTier, удобство поддержки и возможность централизованной регистрации и управления авторизованными узлами через веб-консоль.

Следуя указаниям данного руководства, вы сможете создать подключение клиента и сервера через простую сеть с двухточечным соединением. Так как программно-конфигурируемая сеть не использует традиционную схему клиент/сервер, нет необходимости в установке и настройке центрального сервера VPN. Это упрощает развертывание инструмента и добавление дополнительных узлов. После установки подключения у вас появится возможность использовать VPN-возможности ZeroTier с помощью ряда полезных функций Linux, чтобы разрешить трафику покидать вашу сеть ZeroTier через ваш сервер и дать клиенту указания по отправке своего трафика в этом направлении.

Предварительные требования

Прежде чем переходить к выполнению данного руководства, вам потребуются следующие ресурсы:

  • Сервер на базе Ubuntu 16.04. На этом сервере вам также потребуется пользователь без прав root с привилегиями sudo, которого можно настроить с помощью нашего руководства по начальной настройке сервера Ubuntu 16.04.

  • Учетная запись в ZeroTier One, которую вы можете создать, посетив My ZeroTier. Для настоящего руководства вы можете использовать бесплатную версию данного сервиса, которая не потребует расходов или обязательств.

  • Локальный компьютер для подключения к SDN в качестве клиента. В примерах в данном руководстве и сервер, и локальный компьютер работают под управлением Ubuntu Linux, но любую операционную систему, перечисленную в списке на странице загрузки ZeroTier, можно использовать для клиента.

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

Шаг 1 — Создание программно-конфигурируемой сети с помощью ZeroTier One

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

Выполните вход в учетную запись ZeroTier, нажмите Networks (Сети) в верхней части экрана, а затем нажмите Create (Создать). Появится название автоматически сгенерированной сети. Нажмите на нее, чтобы просмотреть экран конфигурации вашей сети. Запишите Network ID​​​​​ (Идентификатор сети), выделенный желтым цветом, поскольку он потребуется вам позднее.

Если вы захотите изменить имя сети на что-то более информативное, измените имя в левой части экрана. Вы можете добавить описание, если хотите. Любые изменения, которые вы вносите, сохраняются и применяются автоматически.

Затем выберите адресное пространство IPv4, в котором будет работать SDN. С правой стороны экрана в области под названием IPv4 Auto-Assign (Автоматическое присвоение IPv4), выберите диапазон адресов, в котором будут находиться узлы. Для целей данного руководства можно использовать любое адресное пространство, но важно поставить галочку в поле Auto-Assign from Range (Автоматическая привязка из адресного пространства).

Убедитесь, что для параметра Access Control (Контроль доступа) слева установлено значение Certificate (Private Network) (Сертификат (Частная сеть)). Это гарантирует, что только одобренные компьютеры смогут подключиться к сети, а не каждый, кто будет знать ваш идентификатор сети!

После завершения настройки ваши параметры должны выглядеть примерно следующим образом:

Конфигурация настроек ZeroTier

К данному моменту вы успешно создали фундамент программно-конфигурируемой сети ZeroTier. Далее вам нужно будет установить программное обеспечение ZeroTier на сервер и клиентские компьютеры, чтобы они могли подключиться к вашей SDN.

Шаг 2 — Установка клиента ZeroTier One на сервер и локальный компьютер

Поскольку ZeroTier One является относительно недавно разработанным программным обеспечением, он еще не включен в основные репозитории программного обеспечения Ubuntu. По этой причине ZeroTier предоставляет скрипт установки, который мы будем использовать для установки программного обеспечения. Эта команда является скриптом с подписью GPG, что означает, что код, который вы загружаете, будет проверяться при публикации ZeroTier. Скрипт имеет четыре основные части, а ниже представлено подробное описание каждой из них:

  • 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 и не отклоняется как неподписанный ZeroTier, необходимо вставить эту информацию на экран”.
  • sudo bash; fi — данная часть использует прошедший валидацию скрипт установщика и выполняет его перед окончанием процесса.

Предупреждение: никогда не загружайте что-либо из Интернета и не добавляйте это в другую программу, если вы не уверены в надежности источника. По желанию вы можете проверить программное обеспечение ZeroTier, изучив исходный код на официальной странице проекта на GitHub.

Воспользуйтесь консолью SSH для подключения к недавно созданному серверу и запустите следующую команду с помощью обычного пользователя (объяснение команды приведено ниже). Убедитесь, что вы не используете его как пользователя с правами root, поскольку скрипт автоматически запрашивает пароль для повышения уровня привилегий, а также обязательно оставьте консоль ZeroTier открытой в браузере, чтобы вы могли взаимодействовать с ней при необходимости.

  1. curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

После завершения работы скрипта вы увидите две строки вывода, аналогичные представленным ниже. Запишите адрес ZeroTier (без квадратных скобок) и имя системы, которая генерирует адрес, потому что эти данные потребуются вам позднее:

Output
*** Waiting for identity generation... *** Success! You are ZeroTier address [ 916af8664d ].

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

Шаг 3 — Подключение к сети ZeroTier

Теперь, когда на сервере и на клиенте установлено и запущено программное обеспечение ZeroTier, вы можете подключить их к сети, которую вы создали в веб-консоли ZeroTier.

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

  1. sudo zerotier-cli join NetworkID
Output
200 join OK

Вы получите сообщение 200 join OK, подтверждающее, что служба ZeroTier на вашем сервере приняла команду. В ином случае еще раз проверьте идентификатор сети ZeroTier, который вы ввели.

Поскольку вы создали не публичную сеть, к которой может подключиться любой пользователь в мире, вам нужно будет авторизовать клиентов. Перейдите в веб-консоль ZeroTier и прокрутите до самого конца до раздела Members (Участники). Вы должны найти две записи, помеченные Online (Онлайн), с теми же адресами, которые вы записали ранее.

В первом столбце, помеченном **Auth? **(Авторизация?), поставьте галочки, чтобы разрешить им подключиться к сети. Контроллер ZeroTier будет выделять IP-адрес для сервера и клиента из адресного пространства, которое вы выбрали ранее. Этот адрес они будут использовать при следующем вызове SDN.

Выделение IP-адресов может занять определенное время. Во время ожидания вы можете указать Short Name (Короткое имя) и Description (Описание) для ваших узлов в разделе Members (Участники).

В результате этих действий вы сможете подключить две системы к вашей программно-конфигурируемой сети.

К настоящему моменту вы кратко познакомились с панелью управления ZeroTier, использовали интерфейс командной строки для загрузки и установки ZeroTier, а затем подключили сервер и клиент к этой сети. Далее вам необходимо проверить, что все было применено корректно, выполнив тест подключения.

Шаг 4 — Проверка подключения

На данном этапе важно подтвердить, что оба хоста могут общаться друг с другом. Есть вероятность, что хотя хосты утверждают, что подключение к сети установлено, на самом деле они не могут общаться. Выполнив проверку подключения сейчас, вам не нужно будет беспокоиться о базовых проблемах сетевого взаимодействия, которые могут возникнуть позднее.

Найти IP-адрес каждого хоста ZeroTier проще всего в разделе Members (Участники) в веб-консоли ZeroTier. Вам может потребоваться обновить его после авторизации сервера и клиента, прежде чем их IP-адреса появятся в данном разделе. Кроме того, вы можете воспользоваться командной строкой Linux для поиска этих адресов. Используйте следующую команду на обоих компьютерах — первый IP-адрес в списке будет адресом, который необходимо использовать. В представленном ниже примере это адрес 203.0.113.0.

  1. ip addr sh zt0 | grep 'inet'
Output
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-адрес другого хоста. Например, это может выглядеть так на компьютере-клиенте:

  1. ping your_server_ip

И так на сервере:

  1. ping your_client_ip

Если от противоположного хоста будет получен ответ (как показано в выводе ниже), можно считать, что оба узла успешно передают данные через SDN.

Output
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 — Активация функции VPN в ZeroTier

Как было отмечено во введении, вы можете использовать ZeroTier в качестве инструмента VPN. Если вы не планируете использовать ZeroTier в качестве решения для организации VPN, вы можете пропустить этот шаг и перейти сразу к шагу 6.

Использование VPN скрывает источник вашей коммуникации с веб-сайтами в Интернете. Это позволяет вам обойти фильтры и ограничения, которые могут существовать в сети, которую вы используете. В отношении более широкого Интернета, вы сможете использовать публичный IP-адрес вашего сервера. Чтобы использовать ZeroTier в качестве инструмента VPN, вам придется внести ряд дополнительных изменений в конфигурацию вашего сервера и клиента.

Активация преобразования сетевых адресов и IP-передачи

Преобразование сетевых адресов, обычно именуемое NAT (Network Address Translation), — это метод, с помощью которого маршрутизатор принимает пакеты на одном интерфейсе с IP-адресом отправителя, а затем меняет этот адрес на адрес маршрутизатора. Запись этой замены сохраняется в памяти маршрутизатора, чтобы при возвращении трафика, идущего в противоположном направлении, маршрутизатор смог перевести IP-адрес обратно на первоначальный. NAT обычно используется, чтобы позволить нескольким компьютерам использовать один общедоступный IP-адрес, что очень удобно при использовании VPN. Примером использования NAT на практике является домашний роутер, который ваш интернет-провайдер предоставляет вам для подключения всех устройств в вашем доме к сети Интернет. Ваш ноутбук, телефон, планшет и любые другие устройства с поддержкой сети Интернет, скорее всего, используют один открытый IP-адрес в Интернете, поскольку ваш маршрутизатор использует NAT.

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

IP-передача — это функция, выполняемая маршрутизатором или сервером, когда трафик перенаправляется с одного интерфейса на другой, если IP-адреса находятся в разных зонах. Если маршрутизатор подключен к двум сетям, передача IP-адреса позволяет ему пересылать трафик между этими сетями. Это может показаться простым, но успешно реализовать этот функционал может быть очень сложно. В нашем случае нам необходимо будет лишь изменить ряд файлов конфигурации.

С помощью активации передачи IP-адреса VPN трафик вашего клиента в сети ZeroTier будет направляться на интерфейс ZeroTier на сервере. Без этих изменений конфигурации ядро Linux будет (по умолчанию) удалять любые пакеты, которые не предназначены для интерфейса, на который они прибывают. Это нормальное поведение для ядра Linux, поскольку, как правило, любые пакеты, которые будут прибывать на интерфейс, имеющие в качестве адреса назначения адрес другой сети, могут быть вызваны некорректной конфигурацией в других местах сети.

Полезно рассматривать передачу IP-адреса как информирование ядра Linux о том, что оно может пересылать пакеты между интерфейсами. Настройка по умолчанию 0, что является эквивалентом значения “Выкл”. Вы должны задать значение 1, что является эквивалентом значения “Вкл”.

Для просмотра текущей конфигурации запустите следующую команду:

  1. sudo sysctl net.ipv4.ip_forward
Output
net.ipv4.ip_forward = 0

Чтобы активировать передачу IP-адреса, измените файл /etc/sysctl.conf на вашем сервере и добавьте необходимую строку. Этот файл конфигурации позволяет администратору переопределять параметры ядра по умолчанию и будет всегда применяться после перезагрузки, поэтому вам не придется беспокоиться о том, чтобы настраивать его снова. Используйте nano или свой любимый текстовый редактор, чтобы добавить следующую строку внизу файла.

  1. sudo nano /etc/sysctl.conf
/etc/sysctl.conf
. . .
net.ipv4.ip_forward = 1

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

  1. sudo sysctl -p

Сервер будет принимать любые новые директивы конфигурации внутри файла и немедленно применять без перезагрузки. Запустите ту же команду, что и ранее, и вы увидите, что функция передачи IP-адреса активирована.

  1. sudo sysctl net.ipv4.ip_forward
Output
net.ipv4.ip_forward = 1

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

Чтобы добавить эти правила из командной строки, вам сначала нужно узнать имена, которые Ubuntu присвоила вашему интерфейсу ZeroTier и вашему интерфейсу локальной сети с выходом в Интернет. Как правило, это zt0 и eth0 соответственно, хотя это не всегда так.

Чтобы найти имена этих интерфейсов, используйте команду ip link show​​​. Эта утилита командной строки является частью iproute2, набора утилит пользовательского пространства, которые будут устанавливаться в Ubuntu по умолчанию:

  1. ip link show

В выводе этой команды имена интерфейсов находятся рядом с номерами, которые определяют уникальный интерфейс в списке. Эти имена интерфейсов выделены в следующем примере вывода. Если ваши имена отличаются от имен, представленных в данном примере, замените ваши имена на соответствующие для использования в данном руководстве.

Output
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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, чтобы активировать преобразование сетевых адресов и IP-маскарадинг.

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

Разрешите перенаправление трафика и отслеживание активных соединений:

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

Далее разрешите перенаправление трафика с zt0 на eth0. Обратное правило не требуется, поскольку в рамках данного руководства предполагается, что клиент всегда вызывается через сервер, а не наоборот:

  1. sudo iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT

Важно помнить, что правила iptables, которые вы задали для сервера, не сохраняются автоматически между перезагрузками. Вам нужно будет отдельно сохранить эти правила, чтобы они продолжали действовать после перезагрузки сервера. Запустите перечисленные ниже команды на сервере, следуя кратким инструкциям на экране, чтобы сохранить текущие правила для IPv4, правила для IPv6 не требуются.

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

После запуска sudo netfilter-persistent save рекомендуется перезагрузить ваш сервер, чтобы подтвердить, что правила iptables были сохранены корректно. Самым удобным способом проверки является запуск команды sudo iptables-save, которая будет выводить текущую конфигурацию, загруженную в память, на терминал. Если вы увидите правила, аналогичные правилам ниже, действующие в отношении маскарадинга, перенаправления и интерфейса zt0, это значит, что они были сохранены корректно.

  1. sudo iptables-save
Output
# 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. Люди, которые знакомы с компьютерными сетями, также могут использовать термин маршрут по умолчанию. Это маршрут, куда любой клиент отправляет трафик по умолчанию, т. е. любой трафик, который не имеет другого конкретного получателя.

Перейдите в верхнюю часть страницы сети ZeroTier и добавьте новый маршрут со следующими параметрами. Вы можете найти IP-адрес вашего сервера в сети ZeroTier в разделе Members (Участники) на странице конфигурации сети ZeroTier. В поле network/bits (сеть/биты) введите значение 0.0.0.0/0, а в поле (LAN) (Локальная сеть) введите IP-адрес вашего сервера ZeroTier.

Когда все данные будут сохранены, нажмите символ “+”, после чего вы увидите новое правило под существующим правилом. Правило будет иметь оранжевый глобус, который служит сигналом о том, что это глобальный маршрут:

Правило глобального маршрута

Теперь, когда ваша сеть ZeroTier готова к работе, осталось добавить только одну конфигурацию, чтобы VPN заработал. Это конфигурация клиентов.

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

Примечание: команды в данном разделе применяются только для клиентов Linux. Инструкции по настройке клиентов Windows или macOS содержатся в следующем разделе.

Если ваш клиент работает в операционной системе Linux, вам нужно будет вручную внести изменения в файл /etc/sysctl.conf. Это изменение конфигурации необходимо, чтобы поменять представление ядра о приемлемом пути возвращения вашего клиентского трафика. Из-за того, как настроен VPN в ZeroTier, иногда может казаться, что трафик, который ваш сервер возвращает клиенту, имеет другой сетевой адрес, чем адрес, на который он был отправлен. По умолчанию ядро Linux рассматривает это как ошибку и отклоняет трафик, что делает необходимым переопределение такого поведения.

Откройте /etc/sysctl.conf на клиентском компьютере:

  1. sudo nano /etc/sysctl.conf

А затем добавьте следующую строку:

Output
. . . net.ipv4.conf.all.rp_filter=2

Сохраните и закройте файл, а затем запустите команду sudo sysctl -p, чтобы принять изменения.

  1. sudo sysctl -p

Далее укажите программному обеспечению клиента ZeroTier, что в вашей сети разрешен маршрут по умолчанию для трафика. Это изменяет маршрутизацию клиента и рассматривается как привилегированная функция, поэтому ее нужно активировать вручную. Команда будет выводить структуру конфигурации. Проверьте это, чтобы убедиться, что она отображает allowDefault=1 в верхней части:

  1. sudo zerotier-cli set NetworkID allowDefault=1

Если вы в какой-либо момент времени захотите прекратить использование ZeroTier в качестве VPN со всей вашей маршрутизацией трафика, задайте обратно значение 0 для allowDefault:

  1. sudo zerotier-cli set NetworkID allowDefault=0

При каждом перезапуске службы ZeroTier на клиентском компьютере значение allowDefault=1 будет сбрасываться до 0. Не забывайте повторно указать его, чтобы активировать функции VPN.

По умолчанию для службы ZeroTier задается автоматический запуск при загрузке как для клиента Linux, так и для сервера. Если вы не хотите, чтобы служба запускалась автоматически, вы можете отключить стандартный процесс запуска с помощью следующей команды.

  1. sudo systemctl disable zerotier-one

Если вы хотите использовать другие операционные системы в сети ZeroTier, перейдите к следующему разделу. В противном случае перейдите в раздел управления потоками.

Настройка работающих не под Linux клиентов

Программное обеспечение ZeroTier доступно для многих систем, а не только для Linux. Поддерживаются даже смартфоны. Существуют клиенты для Windows, macOS, Android, iOS и даже таких специализированных операционных систем, как QNAP, Synology и WesternDigital NAS.

Чтобы подключить к системе клиенты на базе macOS и Windows, запустите инструмент ZeroTier (который вы установили на шаге 1) и введите ваш сетевой идентификатор в доступное поле, а затем нажмите Join (Подключиться). Не забудьте зайти в консоль и поставить галочку Allow (Разрешить), чтобы авторизовать новый хост в вашей сети.

Также необходимо обязательно проставить галочку в поле Route all traffic through ZeroTier (Направлять весь трафик через ZeroTier). Если вы не сделаете этого, ваш клиент будет подключен к вашей сети ZeroTier, но не будет пытаться пересылать свой интернет-трафик через эту сеть.

Используйте инструмент для проверки IP, например, ICanHazIP, чтобы убедиться, что ваш трафик отправляется в сеть Интернет через IP-адрес вашего сервера. Чтобы проверить это, вставьте следующий URL-адрес в адресную строку браузера. Этот веб-сайт отображает IP-адрес, который его сервер (и остальной Интернет) видит, когда вы заходите на сайт:

http://icanhazip.com

После выполнения этих действий вы сможете начать использование VPN, когда захотите. Следующий дополнительный раздел описывает технологию, которая опирается на ZeroTier SDN и называется “правила потока”, но она не является необходимой для работы VPN.

Шаг 6 — Управление потоками (дополнительно)

Одним из преимуществ программно-конфигурируемой сети является централизованный контроллер. В ZeroTier централизованный контроллер — это пользовательский веб-интерфейс, который располагается поверх всей службы ZeroTier SDN. С помощью данного интерфейса вы можете задавать правила, известные как правила потока. Эти правила определяют, какой трафик допускается в сети, а какой нет. Например, вы можете задать полный запрет на использование определенных сетевых портов, передающих трафик по всей сети, ограничить, какие хосты могут общаться друг с другом, и даже перенаправлять трафик.

Это очень мощный инструмент, который дает результат почти мгновенно, поскольку любые изменения в таблице потока передаются участникам сети и вступают в силу в считанные секунды. Чтобы изменить правила потока, вернитесь в пользовательский веб-интерфейс ZeroTier, нажмите вкладку Networking (Сеть) и прокрутите до поля Flow Rules (Правила потока) (оно может быть свернуто и вам потребуется развернуть его). В результате откроется текстовое поле, где вы можете ввести любые правила, какие захотите. Полное руководство доступно в консоли ZeroTier в поле, расположенном непосредственно под полем для ввода Flow Rules (Правила потока), которое называется Rules Engine Help (Справка для обработчика правил).

Ниже представлен ряд примеров, которые помогут вам изучить данный функционал.

Чтобы заблокировать любой трафик, идущий с DNS-сервера Google 8.8.8.8, добавьте следующее правило:

drop
	ipdest 8.8.8.8/32
;

Чтобы перенаправить любой трафик, идущий с открытого DNS-сервера Google, на один из узлов ZeroTier, добавьте следующее правило. Это отличный способ перехвата любых переопределенных DNS-поисков:

redirect NetworkID
	ipdest 8.8.8.8/32
;

Если у вашей сети есть особые требования безопасности, вы можете запретить любую активность через FTP-порты, Telnet и незашифрованный HTTP-протокол, добавив следующее правило:

drop
	dport 80,23,21,20
;

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

Заключение

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

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

Теперь, когда существует сеть с двухточечным соединением, вы можете объединить ее с другим функционалом, например совместным доступом к файлам. Если у вас есть NAS или файловый сервер, вы можете подключить его к ZeroTier и получать к нему доступ без каких-либо проблем и сложностей. Если вы захотите поделиться им с друзьями, вам нужно будет только показать им, как подключиться к сети ZeroTier. Сотрудники, работающие в самых разных физических точках, могут даже подключаться к одному центральному хранилищу. Для начала создания общего файлового ресурса для любого из этих примеров ознакомьтесь с руководством Настройка файлообменника Samba для небольшой организации на Ubuntu 16.04.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar
Sam Cater

author


Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.