One place for hosting & domains

      ZeroTier

      Начало работы с программно-конфигурируемой сетью и создание 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 открытой в браузере, чтобы вы могли взаимодействовать с ней при необходимости.

      • 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 на идентификатор сети, представленный в окне конфигурации сети, который вы записали ранее.

      • 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.

      • 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-адрес другого хоста. Например, это может выглядеть так на компьютере-клиенте:

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

      Если от противоположного хоста будет получен ответ (как показано в выводе ниже), можно считать, что оба узла успешно передают данные через 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, что является эквивалентом значения “Вкл”.

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

      • sudo sysctl net.ipv4.ip_forward

      Output

      net.ipv4.ip_forward = 0

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

      • sudo nano /etc/sysctl.conf

      /etc/sysctl.conf

      . . .
      net.ipv4.ip_forward = 1
      

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

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

      • sudo sysctl net.ipv4.ip_forward

      Output

      net.ipv4.ip_forward = 1

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

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

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

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

      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-маскарадинг.

      • 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, это значит, что они были сохранены корректно.

      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 на клиентском компьютере:

      • sudo nano /etc/sysctl.conf

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

      Output

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

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

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

      • sudo zerotier-cli set NetworkID allowDefault=1

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

      • sudo zerotier-cli set NetworkID allowDefault=0

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

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

      • 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.



      Source link

      Dar los primeros pasos con redes definidas por software y crear una VPN con ZeroTier One


      Introducción

      Actualmente, cada vez se crean más proyectos de software a través de equipos cuyos miembros trabajan juntos desde ubicaciones geográficas apartadas. Aunque este flujo de trabajo ofrece muchas ventajas claras, existen casos en los cuales los equipos pueden desear vincular sus computadoras a través de Internet y tratarlas como si estuviesen en la misma habitación. Por ejemplo, es posible que pruebe sistemas distribuidos como Kubernetes o compilando una aplicación multiservicio compleja. A veces, contribuye a la productividad la posibilidad de tratar las máquinas como si estuviesen juntas, ya que no se debe correr el riesgo de exponer servicios inacabados a Internet. Este paradigma se puede lograr mediante la redes definidas por software (SDN), una tecnología relativamente nueva que proporciona una trama de red dinámica completamente integrada por software.

      ZeroTier One es una aplicación de código abierto que utiliza algunos de los últimos desarrollos en materia de SDN para permitir a los usuarios crear redes seguras y manejables, y tratar los dispositivos conectados como si estuviesen en la misma ubicación física. ZeroTier proporciona una consola web para software de administración de redes y de extremos para los clientes. Es una tecnología punto a punto cifrada, lo cual significa que a diferencia de lo que sucede con las soluciones de VPN tradicionales, las comunicaciones no tienen que pasar a través de un servidor o enrutador central; los mensajes se envían directamente de host a host. En consecuencia, es muy eficiente y garantiza una latencia mínima. Entre otros beneficios, se incluyen el proceso de implementación y configuración sencillo de ZeroTier, su fácil mantenimiento y el hecho de que permite registrar y administrar de forma centraliza los nodos autorizados a través de la consola web.

      Siguiendo este tutorial, conectará un cliente y un servidor juntos en una red punto a punto simple. Debido a que la red definida por software no utiliza el diseño tradicional de cliente y servidor, no se debe instalar ni configurar un servidor VPN central; esto agiliza la implementación de la herramienta y la adición de nodos complementarios. Una vez establecida la conectividad, tendrá la oportunidad de utilizar la capacidad VPN de ZeroTier empleando algunas funcionalidades inteligentes de Linux para permitir que el tráfico salga de su red ZerTier desde su servidor e indicar a un cliente que envíe su tráfico en esa dirección.

      Requisitos previos

      Antes de realizar este tutorial, necesitará los siguientes recursos:

      • Un servidor con Ubuntu 16.04. En este servidor, también necesitará un usuario no root con privilegios sudo que se pueda configurar usando nuestra guía de configuración inicial para servidores de Ubuntu 16.04.

      • Una cuenta con ZeroTier One, que puede configurar visitando MyZeroTier. Para realizar este tutorial, puede usar la versión gratuita de este servicio, sin costo ni compromisos.

      • Una computadora local para que se una a su SDN como cliente. En los ejemplos de este tutorial, tanto el servidor como el equipo local cuentan con Ubuntu Linux, pero cualquier sistema operativo listado en la página de descarga de ZeroTier funcionará en el cliente.

      Una vez cumplidos esos requisitos previos, estará listo para configurar redes definidas por software para su servidor y su equipo local.

      Paso 1: Crear una red definida por software usando ZeroTier One

      La plataforma ZeroTier proporciona el punto central de control para su red definida por software. En ella, podrá autorizar y desautorizar clientes, elegir un esquema de dirección y crear un ID de red al cual puede dirigir a sus clientes cuando los configure.

      Inicie sesión en su cuenta de ZerTier, haga clic en Networks en la parte superior de la pantalla y luego seleccione Create. Aparecerá un nombre de red generado automáticamente. Haga clic para ver la pantalla de configuración de su red. Tome nota del parámetro Network ID que aparece en amarillo, ya que necesitará consultarlo más tarde.

      Si prefiere cambiar el nombre de la red por algo más descriptivo, edite el nombre en el lado izquierdo de la pantalla; también puede añadir una descripción, si lo desea. Cualquier cambio que realice se guardará y se aplicará automáticamente.

      A continuación, seleccione el rango de dirección IPv4 en el que funcionará la SDN. En el lado derecho de la pantalla, en el área titulada IPv4 Auto-Assign, seleccione un rango de direcciones al que pertenecerán sus nodos. A los efectos de este tutorial, puede utilizarse cualquier rango, pero es importante dejar seleccionada la casilla Auto-Assign from Range.

      Asegúrese de que quede marcado el parámetro Certificate (Private Network) en Access Control, a la izquierda. Esto garantiza que solo las computadoras aprobadas puedan conectarse a su red, y que no lo haga cualquiera que conozca el ID de esta.

      Una vez que termine, sus ajustes deben tener un aspecto similar a este:

      Configurar ZeroTier

      En este punto, habrá creado con éxito los elementos básicos de una red definida por software de ZeroTier. A continuación, instalará el software de ZeroTier en su servidor y en más máquinas clientes para permitirles establecer conexión con su SDN.

      Paso 2: Instalar el cliente de ZeroTier One en su servidor y su máquina local

      Debido a que ZeroTier One es un software relativamente nuevo, aún no se ha incluido en los repositorios de software centrales de Ubuntu. Por este motivo, ZeroTier ofrece una secuencia de comandos de instalación que usaremos para instalar el software. Este comando es una secuencia de comandos con firma GPG, lo cual significa que el código que descargue se verificará como publicado por ZeroTier. Esta secuencia de comandos tiene cuatro partes principales. A continuación, se muestra una explicación de cada una de ellas:

      • curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61': esto importa la clave pública de ZeroTier de MIT.
      • gpg --import: esta sección del comando añade la clave pública de ZeroTier a su cadena de claves local de autoridades de confianza para los paquetes que intente instalar. La siguiente parte del comando solo se ejecutará si la importación de GPG se completa de forma correcta.
      • if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z": en esta sección tienen lugar varios eventos. No obstante, el concepto es básicamente el siguiente: “Si GPG admite la secuencia de comandos de instalación con firma criptográfica descargada de ZeroTier.com y esta no se rechaza por no estar, en apariencia, firmada por ZeroTier, se debe pegar esa información en la pantalla”.
      • sudo bash; fi: esta sección toma la secuencia de comandos del instalador recién validado y lo ejecuta realmente antes de finalizar la rutina.

      Advertencia: Nunca debe descargar algo de Internet y asignarlo a otro programa a menos que esté seguro de que proviene de una fuente confiable. Si lo desea, puede inspeccionar el software de ZeroTier revisando el código fuente en la página oficial de GitHub del proyecto.

      Utilice una consola SSH para establecer conexión con su servidor recién creado y ejecute el siguiente comando como usuario normal (a continuación, verá una explicación del comando). Asegúrese de no ejecutarlo como root, ya que la secuencia de comandos solicita automáticamente su contraseña para elevar su nivel de privilegios, y recuerde mantener la consola de ZeroTier abierta en su navegador para poder interactuar con ella cuando sea necesario.

      • 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

      Una vez que la secuencia de comandos se complete, verá dos líneas de resultado similares a las que se muestran a continuación. Tome nota de su dirección de ZeroTier (sin los corchetes) y del nombre del sistema que generó esa dirección; los necesitará más tarde.

      Output

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

      Repita este paso en su computadora local si utiliza Ubuntu, o siga los pasos pertinentes para su sistema operativo en la página de descargas del sitio web de ZeroTier. Una vez más, asegúrese de anotar la dirección de ZeroTier y la máquina que generó dicha dirección. Necesitará esta información en el siguiente paso de este tutorial cuando una su servidor y cliente a la red.

      Paso 3: Unirse a su red ZeroTier

      Ahora que tanto el servidor como el cliente tienen activo el software de ZeroTier, estará listo para conectarlos a la red que creó en la consola web de ZeroTier.

      Utilice el siguiente comando para indicar a su cliente que solicite acceso a la red ZeroTier a través de su plataforma. La solicitud inicial del cliente se rechazará y quedará pendiente, pero solucionaremos eso en un momento. Asegúrese de sustituir NetworkID por el ID de red que indicó anteriormente desde la ventana de configuración de su red.

      • sudo zerotier-cli join NetworkID

      Output

      200 join OK

      Recibirá un mensaje 200 join OK, lo cual confirmará que el servicio ZeroTier de su servidor pudo interpretar el comando. Si no lo hace, compruebe el ID de red de ZeroTier que introdujo.

      Debido a que no creó una red pública a la que pueda unirse cualquier persona en el mundo, deberá autorizar sus clientes. Vaya a la consola web de ZeroTier y desplácese hasta la parte inferior donde se encuentra la sección de miembros. Debería ver dos entradas marcadas como Online, con las mismas direcciones indicadas anteriormente.

      En la primera columna marcada como Auth?, seleccione las casillas para autorizarlas a unirse a la red. El controlador de ZeroTier asignará una dirección IP al servidor y el cliente del rango que seleccionó la próxima vez que invoquen a la SDN.

      Asignar las direcciones IP tomará un momento. Mientras espera, podría proporcionar un nombre corto y una descripción para sus nodos en la sección de miembros.

      De esta menra, habrá conectado dos sistemas a su red definida por software.

      Hasta ahora, se familiarizó con el panel de control de ZeroTier, usó la interfaz de la línea de comandos para descargar e instalar ZeroTier y luego conectó el servidor y el cliente a esa red. A continuación, comprobará que todo se haya aplicado correctamente realizando una prueba de conectividad.

      Paso 4: Verificar la conectividad

      En esta etapa, es importante validar que los dos hosts puedan comunicarse. Existe la posibilidad de que aún cuando parezca que los host se unieron a la red no puedan comunicarse. Al verificar la conectividad, no tendrá que preocuparse por problemas básicos de interconexión que podrían causar problemas posteriormente.

      Una alternativa sencilla para encontrar la dirección IP de ZeroTier de cada host es buscar en la sección de miembros de la consola web de ZeroTier. Es posible que necesite actualizarla tras autorizar al servidor y al cliente antes de que aparezcan sus direcciones IP. También puede usar la línea de comandos de Linux para buscar estas direcciones. Utilice el siguiente comando en ambos equipos; la primera dirección IP de la lista es la que debe usar. En el ejemplo que se muestra a continuación, esa dirección es 203.0.113.0.

      • 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

      Para probar la conectividad entre los hosts, ejecute el comando ping desde un host seguido de la dirección del otro. Por ejemplo, en el cliente:

      Y en el servidor:

      Si el host opuesto muestra una respuesta (como se muestra en el resultado, a continuación), significa que los dos nodos se comunican correctamente a través de la 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

      Puede añadir tantos equipos como lo desee a esta configuración repitiendo los procesos de instalación e incorporación para ZeroTier anteriormente descritos. Recuerde que no es necesario que estos equipos estén cerca uno de otro.

      Ahora que confirmó que su servidor y cliente pueden comunicarse entre sí, continúe leyendo para aprender a configurar la red de modo que proporcione una puerta de enlace de salida y construir su propia VPN.

      Paso 5: Habilitar la capacidad VPN de ZeroTier

      Como se mencionó en la introducción, es posible usar ZeroTier como herramienta de VPN. Si no planea usar ZeroTier como una solución de VPN, no necesita seguir este paso y puede ir directo al 6.

      El uso de una VPN oculta el origen de sus comunicaciones con sitios web en Internet. Le permite omitir filtros y restricciones que puedan existir en la red que usa. Para Internet en general, parecerá que navega desde la dirección IP pública de su servidor. Para usar ZeroTier como herramienta de VPN, deberá aplicar algunos cambios más a las configuraciones de su servidor y cliente.

      Habilitar la traducción de la dirección de red y el reenvío de IP

      La traducción de direcciones de red, más comúnmente conocida como “NAT”, es un método por el cual un enrutador acepta paquetes en una interfaz etiquetada con la dirección IP del remitente y luego cambia esa dirección por la del enrutador. Se conserva un registro de este cambio en la memoria del enrutador para que cuando el tráfico de retorno vuelva en la dirección opuesta, el enrutador pueda traducir el IP de vuelta para su dirección original. La NAT se utiliza normalmente para permitir que varias computadoras funcionen detrás de una dirección IP públicamente expuesta, lo cual es útil para un servicio de VPN. Un ejemplo de la NAT en la práctica es el enrutador doméstico que su proveedor de servicios de Internet le proporcionó para conectar todos los dispositivos de su hogar a Internet. Su portátil, su teléfono, sus tabletas y cualquier otro dispositivo habilitado para Internet aparecerán para compartir la misma dirección IP pública en Internet, porque su enrutador aplica NAT.

      Aunque el enrutador normalmente aplica NAT, un servidor también puede hacerlo. A lo largo de este paso, utilizará esta funcionalidad en su servidor ZeroTier para habilitar sus capacidades de VPN.

      El reenvío de IP es una función que realiza un router o un servidor. Mediante esta se reenvía el tráfico de una interfaz a otra si las direcciones IP están en zonas diferentes. Si un enrutador se conectó a dos redes, el reenvío de IP le permite reenviar el tráfico entre ellas. Esto puede parecer sencillo, pero su implementación correcta puede ser un proceso sorprendentemente complejo. Sin embargo, en el caso de este tutorial, bastará con editar algunos archivos de configuración.

      Si se habilita el reenvío de IP, el tráfico de la VPN desde su cliente en la red ZeroTier llegará a la interfaz de ZeroTier del servidor. Sin estos cambios en la configuración, el kernel de Linux (por defecto) desechará cualquier paquete no destinado a la interfaz a la que llegan. Este es un comportamiento normal para el kernel de Linux, ya que normalmente cualquier paquete que llegue a una interfaz que tenga una dirección de destino para otra red podría ser el resultado de una mala configuración del direccionamiento en cualquier otra parte de la red.

      Resulta útil concebir el reenvío de IP como un proceso mediante el cual se notifica al kernel de Linux que es aceptable reenviar paquetes entre las interfaces. El ajuste predeterminado es 0, que equivale a “inhabilitado”. Lo cambiará a 1, equivalente a “habilitado”.

      Para ver la configuración actual, ejecute el siguiente comando:

      • sudo sysctl net.ipv4.ip_forward

      Output

      net.ipv4.ip_forward = 0

      Para habilitar el reenvío de IP, modifique el archivo /etc/sysctl.conf en su servidor y añada la línea requerida. Este archivo de configuración permite que un administrador anule los ajustes predeterminados del kernel y siempre se aplicará después de los reinicios para que no tenga que preocuparse por configurarlos de nuevo. Utilice nano o su editor de texto favorito para añadir la siguiente línea a la parte inferior del archivo.

      • sudo nano /etc/sysctl.conf

      /etc/sysctl.conf

      . . .
      net.ipv4.ip_forward = 1
      

      Guarde y cierre el archivo, y luego ejecute el siguiente comando para activar la adopción del kernel de la nueva configuración

      El servidor adoptará cualquier directiva nueva de configuración en el archivo y la aplicará de inmediato, sin necesidad de un reinicio. Ejecute el mismo comando que aplicó antes; verá que el reenvío de IP está habilitado.

      • sudo sysctl net.ipv4.ip_forward

      Output

      net.ipv4.ip_forward = 1

      Ahora que el reenvío de IP está habilitado, podrá aprovecharlo al máximo proporcionando al servidor algunas reglas de direccionamiento básicas. Debido a que el kernel de Linux ya tiene una capacidad de direccionamiento de red integrada, lo único que debe hacer es añadir algunas reglas para indicar al firewall integrado y al enrutador que el nuevo tráfico que verá es aceptable y mostrarle el destino de este.

      Para añadir estas reglas desde la línea de comandos, primero necesitará saber los nombres que Ubuntu asignó a su interfaz de ZeroTier y a su interfaz ethernet regular para Internet. Normalmente, son zt0 y eth0 respectivamente, aunque no siempre es así.

      Para encontrar estos nombres de interfaces, utilice el comando ip link show. Esta utilidad de línea de comandos es parte de iproute2, un conjunto de utilidades del espacio de usuario que viene instalada en Ubuntu por defecto:

      En el resultado de este comando, los nombres de las interfaces se encuentran directamente junto a los números que identifican una interfaz única en la lista. Estos nombres de interfaces se resaltan en el siguiente resultado de ejemplo. Si el suyo difiere de los nombres que se muestran en el ejemplo, sustituya el nombre de su interfaz de forma correspondiente a lo largo de esta guía.

      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

      Con esa información, utilice iptables para habilitar la traducción de direcciones de red y el enmascaramiento de IP:

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

      Permita el reenvío de tráfico y el seguimiento de las conexiones activas:

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

      A continuación, permita el reenvío de tráfico de zt0 a eth0. No es necesaria una regla inversa, ya que en este tutorial se supone que el cliente siempre realiza la invocación a través del servidor, y no al revés:

      • sudo iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT

      Es importante recordar que las reglas de iptables que estableció para el servidor no persisten automáticamente entre los reinicios. Deberá guardar estas reglas para garantizar que se vuelvan a implementar si el servidor se reinicia. En su servidor, ejecute los comandos siguientes usando como guía las breves instrucciones en la pantalla para guardar las reglas IPv4 actuales; no se requiere IPv6.

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

      Tras ejecutar sudo netfilter-persistent save, puede resultarle conveniente reiniciar su servidor para validar el almacenamiento correcto de las reglas de iptables. Una forma sencilla de verificar esto es ejecutar sudo iptables-save, que volcará la configuración actual cargada en la memoria a su terminal. Si ve reglas similares a las que se muestran a continuación en relación con el enmascaramiento, el reenvío y la interfaz zt0, significa que se guardaron correctamente.

      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 . . .

      Ahora que estas reglas se aplicaron a su servidor, está listo para alternar el tráfico entre la red de ZeroTier y la Internet pública. Sin embargo, la VPN no funcionará a menos que la red ZeroTier esté informada de que el servidor está listo para utilizarse como una puerta de enlace.

      Habilitar su servidor para administrar la ruta global

      Para que su servidor procese el tráfico de cualquier cliente, debe asegurarse de que otros clientes de la red de ZeroTier puedan enviar su tráfico a él. Esto puede hacerse estableciendo una ruta global en la consola de ZeroTier. Aquellos que están familiarizados con las redes informáticas pueden describir esto como una Ruta predeterminada. Es donde cualquier cliente envía su tráfico predeterminado; es decir, cualquier tráfico que no debería ir a ninguna otra ubicación específica.

      Vaya a la parte superior derecha de su página de redes de ZeroTier y añada una nueva ruta con los parámetros siguientes. Puede encontrar el IP de ZeroTier para su servidor en la sección de miembros de su página de configuración de red de ZeroTier. En el campo network/bits, introduzca 0.0.0.0/0 y en el campo (LAN) la dirección IP de su servidor ZeroTier.

      Cuando se implementen los detalles, haga clic en el símbolo “+”; verá aparecer una nueva regla debajo de la existente. Un globo naranja en ella indicará que es de hecho una ruta global:

      Regla de ruta global

      Con su red de ZeroTier lista, solo queda configurar un aspecto para que la VPN funcione: los clientes.

      Configurar clientes de Linux

      Nota: Los comandos de esta sección solo se aplican a clientes de Linux. En la siguiente sección se proporcionan instrucciones para configurar clientes de Windows o macOS.

      Si su cliente cuenta con Linux, deberá realizar un cambio manual en su archivo /etc/sysctl.conf. Este cambio de configuración es necesario para modificar la perspectiva del kernel respecto de lo que es una ruta de retorno aceptable para el tráfico de su cliente. Debido a la forma en que se encuentra configurada la VPN de ZeroTier, a veces puede parecer que el tráfico que regresa de su servidor a su cliente proviene de una dirección de red diferente de aquella a la que se envió. Por defecto, el kernel de Linux considera que no son válidas y las desactiva, lo que hace necesario anular este comportamiento.

      Abra /etc/sysctl.conf en su máquina cliente:

      • sudo nano /etc/sysctl.conf

      A continuación, añada la siguiente línea:

      Output

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

      Guarde y cierre el archivo, y luego ejecute sudo sysctl -p para aplicar los cambios.

      A continuación, informe al software del cliente de ZerTier que su red tiene permiso para llevar tráfico de ruta predeterminado. Esto modifica el direccionamiento del cliente y, por tanto, se considera como una función privilegiada, por lo que debe habilitarse manualmente. El comando imprimirá una estructura de configuración en el resultado. Compruebe esto para confirmar que muestre allowDefault=1 en la parte superior:

      • sudo zerotier-cli set NetworkID allowDefault=1

      Si en cualquier momento desea dejar de usar ZeroTier como VPN con todo el enrutamiento de su tráfico a través de ella, fije allowDefault de nuevo en 0.

      • sudo zerotier-cli set NetworkID allowDefault=0

      Cada vez que se reinicia el servicio ZeroTier en el cliente, el valor allowDefault=1 vuelve a fijarse en 0. Por lo tanto, recuerde volver a ejecutarlo para activar la funcionalidad de VPN.

      Por defecto, el servicio de ZeroTier se establece para que se inicie automáticamente en el arranque para el cliente y el servidor de Linux. Si no desea que esto sea así, puede deshabilitar la rutina de inicio con el comando siguiente.

      • sudo systemctl disable zerotier-one

      Si desea usar otros sistemas operativos en su red ZeroTier, lea la siguiente sección. De lo contrario, continúe directamente con la sección “Administrar flujos”.

      Configurar clientes que no tengan Linux

      El software cliente de ZeroTier está disponible para muchos sistemas operativos, no solo para Linux; incluso es compatible con teléfonos inteligentes. Existen clientes para Windows, macOS, Android, iOS e incluso sistemas operativos especializados como QNAP, Synology y sistemas NAS de WesternDigital.

      Para unir clientes macOS y Windows a la red, inicie la herramienta ZeroTier (que instaló en el paso 1) e introduzca su ID de red en el campo proporcionado antes de hacer clic en Join. Recuerde volver a la consola de ZeroTier para seleccionar el botón Allow a fin de autorizar un nuevo host en su red.

      Asegúrese de seleccionar la casilla con la etiqueta Route all traffic through ZeroTier. Si no lo hace, su cliente se adjuntará a su red de ZeroTier, pero no intentará enviar su tráfico de Internet a través de ella.

      Utilice una herramienta de verificación de IP, como ICanHazIP para verificar que su tráfico aparezca a Internet desde la IP de su servidor. Para comprobarlo, pegue la siguiente URL en la barra de direcciones de su navegador. Este sitio web mostrará la dirección IP que su servidor (y el resto de Internet) ve que usted usa para acceder al sitio:

      http://icanhazip.com
      

      Una vez completados estos pasos, podrá comenzar a usar su VPN como lo desee. En la siguiente sección opcional, se abarca una tecnología integrada en la SDN de ZeroTier y conocida con la denominación “reglas de flujo”; no obstante, estas no son necesarias para que la funcionalidad de VPN se aplique.

      Paso 6: Administrar flujos (opcional)

      Uno de los beneficios de una red definida por software es el controlador centralizado. En cuanto a ZeroTier, el controlador centralizado es la Interfaz de usuario web que se sitúa por encima del servicio SDN general de ZeroTier. Desde esta interfaz, es posible escribir reglas conocidas como reglas de flujo que especifican lo que el tráfico de una red puede o no hacer. Por ejemplo, podría especificar una prohibición total en ciertos puertos de la red por los que pase tráfico a través la red, limitar los hosts que pueden comunicarse entre ellos e incluso redirigir el tráfico.

      Ésta es una capacidad extremadamente potente que se implementa casi al instante, ya que cualquier cambio aplicado a la tabla de flujos se envían a miembros de la red y surten efecto tras unos momentos. Para editar las reglas de flujo, vuelva a la interfaz de usuario web de ZeroTier, haga clic en la pestaña Networking, y desplácese hacia abajo hasta que vea un cuadro titulado Flow Rules (puede estar contraído, en cuyo caso deberá desplegarlo). Con esto, se abrirá un campo de texto en el que podrá introducir las reglas que desee. Existe, en la consola de ZeroTier, un manual completo en un cuadro que se halla justo debajo del cuadro de entrada de Flow Rules; lleva la leyenda Rules Engine Help.

      A continuación, se ofrecen algunas reglas de ejemplo para ayudarlo a explorar esta funcionalidad.

      Para bloquear cualquier tráfico vinculado al servidor DNS 8.8.8.8, añada esta regla:

      drop
          ipdest 8.8.8.8/32
      ;
      

      Para redirigir cualquier tráfico destinado al servidor de DNS público de Google a uno de sus nodos de ZeroTier, añada la regla siguiente. Esto podría servir como una regla general excelente para anular las búsquedas de DNS:

      redirect NetworkID
          ipdest 8.8.8.8/32
      ;
      

      Si su red tiene requisitos de seguridad especiales, puede detener cualquier actividad en los puertos FTP, Telnet y HTTP sin cifrado añadiendo esta regla:

      drop
          dport 80,23,21,20
      ;
      

      Cuando termine de añadir las reglas de flujo, haga clic en el botón Save Changes. ZeroTier registrará sus cambios.

      Conclusión

      A lo largo de este tutorial, dio un primer paso hacia el mundo de las redes definidas por software. Además, trabajar con ZeroTier proporciona cierta información sobre los beneficios de esta tecnología. Si siguió el ejemplo de VPN, aunque la configuración inicial puede contrastar con otras herramientas que haya usado en el pasado, la facilidad de añadir clientes podría ser una razón de peso para usar la tecnología en cualquier otro espacio.

      En resumen, aprendió a usar ZeroTier como su proveedor de SDN, y a configurar y conectar nodos a esa red. El elemento de VPN le habrá proporcionado un mayor nivel de comprensión de cómo funciona el direccionamiento en esa red y cualquier ruta de este tutorial le permitirá utilizar la potente tecnología de las reglas de flujo.

      Ahora que existe una red punto a punto, podría combinarla con otra funcionalidad como la de intercambio de archivos. Si dispone de un servidor NAS o de archivos en casa, podría vincularlo a ZeroTier y acceder a él en cualquier parte. Si desea compartirlo con sus amigos, puede mostrarles la forma de unirse a su red de ZeroTier. Los empleados distribuidos en una zona extensa podrían incluso establecer conexión con el mismo espacio central de almacenamiento. Si desea comenzar a compilar el intercambio de archivos para cualquiera de estos ejemplos, consulte Cómo configurar un recurso compartido de Samba para una pequeña organización en Ubuntu 16.04.



      Source link

      Getting Started with Software-Defined Networking and Creating a VPN with ZeroTier One


      Introdução

      Atualmente, cada vez mais os projetos de software são construídos por equipes cujos membros trabalham em conjunto em localidades geográficas diferentes. Embora este fluxo de trabalho tenha muitas vantagens claras, existem casos onde tais equipes podem querer vincular seus computadores na internet e tratá-los como se estivessem na mesma sala. Por exemplo, você pode estar testando sistemas distribuídos como o Kubernetes ou construindo um aplicativo multisserviço complexo. Às vezes, tratar as máquinas como se elas estivessem uma ao lado da outra ajuda na produtividade, já que não seria necessário arriscar expor seus serviços inacabados na internet. Este paradigma pode ser alcançado através da Rede Definida por Software (SDN), uma tecnologia relativamente nova que fornece uma estrutura de rede dinâmica cuja existência é totalmente composta por software.

      O ZeroTier One é um aplicativo de código aberto que usa alguns dos últimos desenvolvimentos em SDN para permitir que os usuários criem redes seguras, gerenciáveis e tratem dispositivos conectados como se estivessem no mesmo local físico. O ZeroTier fornece um console Web para o gerenciamento de rede e o software de terminal para os clientes. Trata-se de uma tecnologia criptografada ponto a ponto, o que significa que ao contrário de soluções tradicionais VPN, as comunicações não precisam passar por um servidor central ou roteador — as mensagens são enviadas diretamente de host para host. Como resultado, ela é muito eficiente e garante latência mínima. Outros benefícios incluem a implantação e o processo de configuração simples do ZeroTier, manutenção sem complicações, que permite o registro e gerenciamento centralizados de nós autorizados pelo Console Web.

      Ao seguir este tutorial, você irá conectar um cliente e servidor juntos em uma rede simples ponto a ponto. Como a Rede Definida por Software não utiliza o design tradicional cliente/servidor, não há servidor VPN central para instalar e configurar; isso simplifica a implantação da ferramenta e a adição de qualquer nó complementar. Assim que a conectividade for estabelecida, será possível usar a capacidade VPN do ZeroTier usando algumas funcionalidades inteligentes do Linux. Isso permite que o tráfego deixe sua rede do ZeroTier do seu servidor e instrua um cliente para enviar o tráfego naquela direção.

      Pré-requisitos

      Antes de trabalhar neste tutorial, você precisará dos seguintes recursos:

      • Um servidor executando o Ubuntu 16.04. Neste servidor, será necessário um usuário não raiz com privilégios sudo que pode ser configurado usando nosso guia de configuração inicial de servidor para o Ubuntu 16.04.

      • Uma conta com o ZeroTier One, que você pode configurar indo para o My ZeroTier. Para os fins deste tutorial, é possível usar a versão gratuita deste serviço que não tem custos ou compromissos.

      • Um computador local para se juntar ao seu SDN como um cliente. Nos exemplos neste tutorial, tanto o servidor como o computador local estão executando o Linux Ubuntu, mas qualquer sistema operacional listado na página de download do ZeroTier funcionará no cliente.

      Com esses pré-requisitos no lugar, você está pronto para configurar a rede definida por software para seu servidor e máquina local.

      Passo 1 — Criando uma rede definida por software usando o ZeroTier One

      A plataforma ZeroTier fornece o ponto central de controle para sua rede definida por software. Lá, você pode autorizar e desautorizar clientes, escolher um esquema de endereço e criar um ID de rede ao qual você pode dirigir seus clientes ao configurá-los.

      Logue na sua conta do ZeroTier, clique em Networks no topo da tela e, em seguida, clique em Create. Um nome de rede gerado automaticamente aparecerá. Clique nele para ver a tela de configuração da sua rede. Anote o Network ID mostrado em amarelo, já que você precisará usá-lo mais tarde.

      Se preferir alterar o nome da rede para algo mais descritivo, edite o nome no lado esquerdo da tela; você também pode adicionar uma descrição, caso queira. Qualquer alteração que você fizer será salva e aplicada automaticamente.

      Em seguida, escolha em qual intervalo de endereços IPv4 o SDN irá operar. No lado direito da tela, na área intitulada IPv4 Auto-Assign, selecione um intervalo de endereços em que seus nós irão se enquadrar. Para os fins deste tutorial, qualquer intervalo pode ser usado, mas é importante deixar a caixa Auto-Assign from Range marcada.

      Certifique-se de que o Access Control à esquerda permaneça definido como Certificate (Private Network). Isso garante que apenas máquinas aprovadas possam se conectar à sua rede, e não qualquer uma que saiba seu ID de rede!

      Assim que terminar, suas configurações devem ser semelhantes a estas:

      ZeroTier settings configuration

      Neste ponto, você instalou a fundação de uma Rede Definida por Software do ZeroTier com sucesso. Em seguida, você instalará o software ZeroTier no seu servidor e máquinas de cliente para permitir que eles se conectem ao seu SDN.

      Passo 2 — Instalando o cliente ZeroTier One no seu servidor e computador local

      Como o ZeroTier One é um software relativamente novo, ele ainda não foi incluído nos repositórios de software principais do Ubuntu. Por esse motivo, o ZeroTier fornece um script de instalação que vamos usar para instalar o software. Este comando é um script assinado por GPG, o que significa que o código que você baixa será verificado como publicado pelo ZeroTier. Este script tem quatro partes principais, e esta é uma explicação detalhada de cada uma delas:

      • curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' – importa a chave pública do ZeroTier do MIT.
      • gpg --import – esta seção do comando adiciona a chave pública do ZeroTier ao seu conjunto de chaves local de autoridades para confiar em pacotes que tentar instalar. A próxima parte do comando será executada apenas se a importação GPG for concluída com sucesso.
      • if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" – existem algumas coisas acontecendo nesta seção, mas é essencialmente: “Se o script de instalação assinado criptografadamente baixado do ZeroTier.com passar pelo GPG e não for rejeitado como não assinado pelo ZeroTier, colar essa informação na tela.”
      • sudo bash; fi – esta seção recebe o script de instalação recentemente validado e executa-o antes de finalizar a rotina.

      Aviso: você nunca deve baixar algo da internet e canalizar em outro programa a menos que tenha certeza de que ele vem de uma fonte confiável. Se quiser, você pode inspecionar o software do ZeroTier revisando o código fonte na página oficial do projeto no GitHub.

      Use um Console SSH para se conectar ao seu servidor recém-criado e execute o seguinte comando como seu usuário normal (uma explicação do comando é fornecida abaixo). Certifique-se de que você não execute ele como raiz, já que o script solicita automaticamente sua senha para aumentar seu nível de privilégios e lembre-se de manter o console do ZeroTier aberto no seu navegador para que possa interagir com ele quando necessário.

      • 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

      Assim que o script terminar, você verá duas linhas de resultado semelhantes às mostradas abaixo. Anote seu endereço ZeroTier (sem os colchetes) e o nome do sistema que gerou aquele endereço, ambos os quais serão necessários mais tarde:

      Output

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

      Repita este passo no seu computador local se usar o Ubuntu, ou siga os passos relevantes para seu sistema operacional na página de download do site do ZeroTier. Novamente, certifique-se de anotar o endereço do ZeroTier e a máquina que gerou aquele endereço. Você precisará dessas informações no próximo passo deste tutorial quando você ingressar seu servidor e cliente à rede.

      Passo 3 — Ingressando sua rede ZeroTier

      Agora que tanto o servidor como o cliente têm o software do ZeroTier em execução neles, você está pronto para conectá-los à rede que você criou no Web console do ZeroTier.

      Use o comando a seguir para instruir seu cliente a solicitar acesso à rede do ZeroTier através da sua plataforma. O pedido inicial do cliente será rejeitado e suspenso, mas vamos corrigir isso em breve. Certifique-se de substituir o NetworkID pelo ID da rede que você anotou mais cedo da janela de configuração da sua rede.

      • sudo zerotier-cli join NetworkID

      Output

      200 join OK

      Você receberá uma mensagem 200 join OK, confirmando que o serviço do ZeroTier no seu servidor entendeu o comando. Caso contrário, verifique novamente o ID da rede do ZeroTier que você digitou.

      Como não criou uma rede pública que qualquer um no mundo possa ingressar, você precisa agora autorizar seus clientes. Vá até o Console Web do ZeroTier e role para baixo até o fim, onde a seção Members está. Você deve ver duas entradas marcadas como Online, com os mesmos endereços que você mais cedo.

      Na primeira coluna marcada Auth?, marque as caixas para autorizá-los a participar da rede. O Controlador do Zerotier irá atribuir um endereço IP ao servidor e ao cliente do intervalo que você escolheu mais cedo na próxima vez que eles chamarem o SDN.

      A atribuição de endereços IP pode levar tempo. Enquanto espera, você pode fornecer um Short Name e Description para seus nós na seção Members.

      Com isso, você terá conectado dois sistemas à sua rede definida por software.

      Até agora, você ganhou uma familiarização básica com o painel de controle do ZeroTier, usou a interface da linha de comando para baixar e instalar o ZeroTier e, em seguida, anexou tanto o servidor quanto o cliente a essa rede. Em seguida, você irá verificar se tudo foi aplicado corretamente executando um teste de conectividade.

      Passo 4 — Verificando a conectividade

      Nesta fase, é importante validar que os dois hosts possam realmente conversar entre si. Há uma chance de que mesmo que os hosts aleguem ter ingressado na rede, eles não consigam se comunicar. Ao verificar a conectividade neste momento, você não terá que se preocupar com problemas básicos de interconectividade que poderiam causar problemas mais tarde.

      Uma maneira fácil de encontrar o endereço IP do ZeroTier de cada host é olhando na seção Members do Console Web do ZeroTier. Você pode precisar recarregá-lo após autorizar o servidor e cliente antes que seus endereços IP apareçam. De forma alternativa, você pode usar a linha de comando do Linux para encontrar esses endereços. Use o comando a seguir em ambas as máquinas — o primeiro endereço IP mostrado na lista é aquele a ser usado. No exemplo mostrado abaixo, esse endereço é 203.0.113.0.

      • 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

      Para testar a conectividade entre os hosts, execute o comando ping de um host seguido do endereço IP do outro. Por exemplo, no cliente:

      E no servidor:

      Se as respostas estiverem sendo devolvidas do host oposto (como mostrado no resultado abaixo), então os dois nós estão se comunicando com sucesso pelo 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

      Você pode adicionar quantas máquinas quiser nesta configuração repetindo a instalação do ZeroTier e os processos de ingressão evidenciados acima. Lembre-se, essas máquinas não precisam de forma alguma estar próximas.

      Agora que você confirmou que seu servidor e cliente podem se comunicar entre si, continue lendo para aprender como ajustar a rede para fornecer um gateway de saída e construir seu próprio VPN.

      Passo 5 — Habilitando a capacidade VPN do ZeroTier

      Como mencionado na introdução, é possível usar o ZeroTier como uma ferramenta VPN. Se você não planeja usar o usuário ZeroTier como uma solução VPN, não será necessário que siga esse passo, podendo pular para o Passo 6.

      Ao usar um VPN, a fonte de suas comunicações com websites na internet fica escondida. Ele permite que você ignore os filtros e restrições que podem existir na rede que está usando. Para a internet como um todo, irá parecer que você está navegando a partir do endereço IP público do seu servidor. Para usar o ZeroTier como uma ferramenta VPN, será necessário fazer mais algumas alterações nas configurações do seu servidor e cliente.

      Como habilitar a Network Address Translation e o encaminhamento de IP

      O Network Address Translation, mais comumente conhecido como “NAT”, é um método pelo qual um roteador aceita pacotes em uma interface marcada com o endereço IP do remetente e, em seguida, troca aquele endereço pelo do roteador. Um registro desta troca é mantido na memória do roteador para que quando o tráfego de retorno volte na direção oposta, o roteador possa traduzir o IP de volta para seu endereço original. O NAT é normalmente usado para permitir que vários computadores operem por trás de um endereço IP exposto publicamente, o que acaba sendo útil para um serviço VPN. Um exemplo do NAT na prática é o roteador doméstico que seu provedor de serviço de internet deu a você para conectar todos os dispositivos em seu lar à Internet. Seu notebook, telefone, tablets e qualquer outro dispositivo que consiga se conectar à Internet. Todos parecem compartilhar o mesmo endereço IP público para a Internet, porque seu roteador está executando o NAT.

      Embora o NAT seja normalmente conduzido por um roteador, ele também pode ser executado por um servidor. Ao longo deste passo, você irá potencializar essa funcionalidade no seu servidor do ZeroTier para habilitar suas capacidades VPN.

      O encaminhamento de IP é uma função realizada por um roteador ou servidor na qual ele encaminha o tráfego de uma interface para outra como se esses endereços IP estivessem em diferentes zonas. Se um roteador estiver conectado a duas redes, o encaminhamento de IP permite que ele encaminhe o tráfego entre elas. Isso pode parecer simples, mas implementar isso com sucesso pode ser surpreendentemente complicado. No entanto, no caso deste tutorial, é apenas uma questão de editar alguns arquivos de configuração.

      Ao habilitar o encaminhamento de IP, o tráfego VPN do seu cliente na rede do ZeroTier chegará na interface do ZeroTier do servidor. Sem essas configurações, o Kernel Linux irá (por padrão) jogar fora qualquer pacote que não seja destinado para a interface em que eles chegam. Esse comportamento é normal para o Kernel Linux,já que normalmente qualquer pacote que esteja chegando em uma interface que tenha um endereço de destino para outra rede pode ter como causa um erro de configuração do roteamento em outro lugar na rede.

      É útil encaminhar o IP de forma a informar o Kernel Linux de que é aceitável encaminhar pacotes entre as interfaces. A configuração padrão é 0 — equivalente a “Desligado”. Você irá alterar isso para 1 — equivalente a “Ligado”.

      Para ver a configuração atual, execute o seguinte comando:

      • sudo sysctl net.ipv4.ip_forward

      Output

      net.ipv4.ip_forward = 0

      Para habilitar o encaminhamento de IP, modifique o arquivo /etc/sysctl.conf no seu servidor e adicione a linha necessária. Este arquivo de configuração permite que um administrador substitua as configurações padrão do kernel, e ele sempre será aplicado após as reinicializações, então não será necessário se preocupar em configurá-lo novamente. Use o nano ou seu editor de texto favorito para adicionar a seguinte linha ao final do arquivo.

      • sudo nano /etc/sysctl.conf

      /etc/sysctl.conf

      . . .
      net.ipv4.ip_forward = 1
      

      Salve, feche o arquivo e depois execute o próximo comando para fazer com que o kernel adote suas novas configurações.

      O servidor adotará quaisquer novas diretrizes de configuração dentro do arquivo e irá aplicá-las imediatamente, sem a necessidade de uma reinicialização. Execute o mesmo comando que você fez anteriormente e verá que o encaminhamento de IP está ativo.

      • sudo sysctl net.ipv4.ip_forward

      Output

      net.ipv4.ip_forward = 1

      Agora que o encaminhamento de IP está ativo, faça bom uso dele fornecendo algumas regras básicas de roteamento do servidor. Como o Kernel Linux já tem uma capacidade de roteamento de rede incorporada dentro dele, tudo o que terá que fazer é adicionar algumas regras para informar o firewall integrado e o roteador que o novo tráfego que estarão vendo é aceitável e para onde enviá-lo.

      Para adicionar essas regras da linha de comando, será necessário primeiro conhecer os nomes que o Ubuntu atribuiu tanto para sua interface Zerotier como sua interface ethernet comum de acesso a Internet. Normalmente, eles são zt0 e eth0 respectivamente, embora nem sempre esse seja o caso.

      Para encontrar os nomes dessas interfaces, utilize o comando ip link show. Este utilitário de linha de comando faz parte do iproute2, uma coleção de utilitários de userspace que vem instalada no Ubuntu por padrão:

      No resultado deste comando, os nomes das interfaces estão diretamente ao lado dos números que identificam uma interface única na lista. Estes nomes de interface estão destacados no seguinte exemplo de resultado. Se os seus nomes diferem dos nomes mostrados no exemplo, substitua seu nome de interface apropriadamente durante este guia.

      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

      Com essas informações em mãos, utilize o iptables para habilitar o Network-Address-Translation e o mascaramento de IP:

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

      Permita o encaminhamento de tráfego e rastreie conexões ativas:

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

      Em seguida, autorize o encaminhamento de tráfego do zt0 para o eth0. Uma regra reversa não é necessária, já que neste tutorial supõe-se que o cliente sempre faça chamadas pelo servidor, e não o contrário:

      • sudo iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT

      É importante lembrar que as regras do iptables que você definiu para o servidor não persistem automaticamente entre as reinicializações. Você precisará salvar essas regras para garantir que elas sejam trazidas de volta, caso o servidor seja alguma vez reinicializado. No seu servidor, execute os comandos abaixo, seguindo as breves instruções na tela para salvar as regras atuais do IPv4. O mesmo não é necessário para o IPv6.

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

      Após executar o sudo netfilter-persistent save, pode ser vantajoso reiniciar seu servidor para validar o salvamento correto das regras do iptables. Uma maneira fácil de verificar é executando o sudo iptables-save, que irá transferir as configurações atuais carregadas em memória para o seu terminal. Se você ver regras semelhantes às que estão abaixo em relação ao mascaramento, encaminhamento e a interface zt0, então elas foram salvas corretamente.

      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 . . .

      Agora que essas regras foram aplicadas no seu servidor, ele está pronto para manipular o tráfego entre a rede do ZeroTier e a internet pública. No entanto, o VPN não funcionará a menos que a rede do ZeroTier seja informada de que o servidor está pronto para ser usado como um gateway.

      Como habilitar seu servidor para gerenciar a rota global

      Para que seu servidor possa processar o tráfego de qualquer cliente, é preciso garantir que outros clientes na rede do ZeroTier saibam e enviem seus tráfegos à ele. Pode-se fazer isso configurando uma rota global no Console do ZeroTier. As pessoas que estão familiares com redes de computadores também podem descrever isso como uma Default Route. É onde qualquer cliente envia seu tráfego padrão, ou seja, qualquer tráfego que não deva ir para qualquer outro local específico.

      Vá até o lado direito superior da sua página da rede do ZeroTier e adicione uma nova rota com os seguintes parâmetros. Você pode encontrar o IP do ZeroTier para seu servidor na seção Members da sua página de configuração da rede do ZeroTier. No campo network/bits, digite 0.0.0.0/0, no campo (LAN), digite o endereço IP do seu servidor ZeroTier.

      Quando os detalhes estiverem no lugar, clique no símbolo “+” e você verá uma nova regra aparecer abaixo da existente. Haverá um globo laranja nela para informar que ela é, de fato, uma rota global:

      Global Route Rule

      Com sua rede do ZeroTier pronta para funcionar, há apenas uma configuração a ser feita para que o VPN funcione: a dos clientes.

      Configurando clientes Linux

      Nota: os comandos nesta seção são aplicáveis apenas aos clientes Linux. As instruções para configurar os clientes Windows ou macOS são fornecidas na próxima seção.

      Se seu cliente estiver executando o Linux, será necessário fazer uma alteração manual no seu arquivo /etc/sysctl.conf. Esta mudança de configuração é necessária para alterar a visualização do kernel sobre o qual é um caminho de volta aceitável para o tráfego do seu cliente. Devido ao modo como o VPN do ZeroTier é configurado, o tráfego que volta do seu servidor para seu cliente pode, por vezes, parecer vir de um endereço de rede diferente daquele para o qual foi enviado. Por padrão, o Kernel Linux as vê como inválidas e as elimina, tornando necessário sobrepor esse comportamento.

      Abra o /etc/sysctl.conf na sua máquina do cliente:

      • sudo nano /etc/sysctl.conf

      Então, adicione a seguinte linha:

      Output

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

      Salve, feche o arquivo e depois execute o sudo sysctl -p para adotar as alterações.

      Em seguida, diga ao software de cliente do ZeroTier que sua rede tem permissão para transportar o tráfego da rota padrão. Isso altera o roteamento do cliente e, portanto, é considerado uma função privilegiada, razão pela qual deve ser habilitada manualmente. O comando imprimirá uma estrutura de configuração na saída. Verifique-a para confirmar que mostra o allowDefault=1 no topo:

      • sudo zerotier-cli set NetworkID allowDefault=1

      Se em qualquer momento você quiser parar de usar o ZeroTier como um VPN com todo seu roteamento de tráfego passando por ele, defina allowDefault de volta para 0:

      • sudo zerotier-cli set NetworkID allowDefault=0

      Cada vez que o serviço do ZeroTier no cliente for reiniciado, o valor allowDefault=1 retorna para 0, portanto lembre-se de executá-lo novamente para ativar a funcionalidade VPN.

      Por padrão, o serviço do ZeroTier é definido para iniciar automaticamente na inicialização para tanto o cliente Linux quanto o servidor. Se você não quiser que isso aconteça, desative a rotina de inicialização com o seguinte comando.

      • sudo systemctl disable zerotier-one

      Se quiser usar outros sistemas operacionais na sua rede do ZeroTier, continue lendo na próxima seção. Caso contrário, pule para a seção Como gerenciar fluxos.

      Como configurar clientes não Linux

      O software de cliente do ZeroTier está disponível para muitos sistemas e não apenas para o SO do Linux — até os smartphones são suportados. Os clientes existem para sistemas Windows, macOS, Android, iOS e até mesmo sistemas operacionais especializados como o QNAP, Synology e sistemas NAS da WesternDigital.

      Para ingressar clientes baseados em macOS e Windows na rede, inicie a ferramenta do ZeroTier (que você instalou no Passo 1) e digite sua NetworkID no campo fornecido antes de clicar em Join. Lembre-se de voltar no console do ZeroTier para marcar o botão Allow para autorizar um novo host na sua rede.

      Certifique-se de marcar a caixa rotulada Route all traffic through ZeroTier. Se não o fizer, seu cliente estará anexado à sua rede do ZeroTier, mas não tentará enviar seu tráfego de internet através dela.

      Use uma ferramenta de verificação de IP como a ICanHazIP para verificar se seu tráfego está aparecendo na internet a partir do IP do seu servidor. Para verificar isso, cole o seguinte URL na barra de endereço do seu navegador. Este site mostrará o endereço IP que seu servidor (e o resto da Internet) vê você usando para acessar o site:

      http://icanhazip.com
      

      Com esses passos concluídos, você pode começar a utilizar seu VPN como quiser. A próxima seção opcional aborda uma tecnologia integrada ao SDN do ZeroTier conhecida como “regras de fluxo”, mas não são de forma alguma necessárias para que a funcionalidade VPN funcione.

      Passo 6 — Gerenciando fluxos (Opcional)

      Um dos benefícios de uma rede definida por software é o controle centralizado. No que diz respeito ao ZeroTier, o controle centralizado é a interface do usuário Web que fica no topo do serviço geral SDN do ZeroTier. A partir dessa interface, é possível escrever regras conhecidas como flow rules, que especificam o tráfego que uma rede pode ou não pode fazer. Por exemplo, você pode especificar uma proibição geral em certas portas de rede que transportam tráfego na rede, limitar os hosts que podem conversar uns com os outros e até mesmo redirecionar o tráfego.

      Esta é uma capacidade extremamente poderosa que entra em vigor quase instantaneamente, já que quaisquer alterações feitas na tabela de fluxo são enviadas aos membros da rede e produzem efeitos após alguns instantes. Para editar as regras de fluxo, volte para a Interface do usuário Web do ZeroTier, clique na aba Networking e role para baixo até ver uma caixa chamada Flow Rules (pode estar recolhida e precisar ser expandida) Isso abre um campo de texto onde você pode digitar as regras que quiser. Um manual completo está disponível dentro do console do ZeroTier em uma caixa abaixo da caixa de entrada Flow Rules, intitulado Rules Engine Help.

      Aqui estão algumas regras para servir de exemplo para ajudar você a explorar essa funcionalidade.

      Para bloquear qualquer tráfego que seja ligado ao servidor DNS do Google 8.8.8.8, adicione essa regra:

      drop
          ipdest 8.8.8.8/32
      ;
      

      Para redirecionar qualquer tráfego que seja ligado ao servidor DNS público do Google para um dos seus nós do ZeroTier, adicione a seguinte regra. Isso pode ser um excelente ponto de captura para substituir pesquisas de DNS:

      redirect NetworkID
          ipdest 8.8.8.8/32
      ;
      

      Se sua rede tiver requisitos especiais de segurança, você pode remover quaisquer atividades nas portas FTP, Telnet e HTTP não criptografada, adicionando essa regra:

      drop
          dport 80,23,21,20
      ;
      

      Quando terminar de adicionar as regras de fluxo, clique no botão Save Changes e o ZeroTier irá gravar suas alterações.

      Conclusão

      Neste tutorial, você deu um primeiro passo no mundo das Redes Definidas por Software. Trabalhar com o ZeroTier fornece alguns insights sobre os benefícios dessa tecnologia. Se seguiu o exemplo VPN, e embora a configuração inicial possa contrastar de outras ferramentas que você possa ter usado no passado, a facilidade em adicionar clientes adicionais pode ser uma razão convincente para usar a tecnologia em outro lugar.

      Para resumir, você aprendeu como usar o ZeroTier como um provedor SDN, além de configurar e anexar nós a essa rede. O elemento VPN fará você compreender mais profundamente como o roteamento dentro de uma rede dessas funciona e ambos os caminhos neste tutorial permitirão que utilize a poderosa tecnologias das regras de fluxo.

      Agora que uma rede ponto a ponto existe, é possível combiná-la com outra funcionalidade, como o Compartilhamento de arquivos. Se você tiver um NAS ou servidor de arquivos em casa, você pode vinculá-lo ao ZeroTier e acessá-lo fora de casa. Se quiser compartilhá-lo com seus amigos, mostre a eles como ingressar na sua rede do ZeroTier. Os funcionários que estão distribuídos em uma grande área poderiam até mesmo vincular-se ao mesmo espaço de armazenamento central. Para começar a construir o compartilhamento de arquivos para qualquer um desses exemplos, consulte Como configurar uma Samba Share para uma organização pequena no Ubuntu 16.04.



      Source link