В свете последних событий, многие администраторы столкнулись с необходимостью организации удаленной работы сотрудников.
Стандартом для этого является использование VPN. Но классический VPN требует наличия белого статического IP, что не у всех предприятий присутствует, кроме того, надо учитывать, что мы подключаем большое количество неквалифицированных пользователей, работающих из дома (зверинец систем, часто отсутствие доступа к компьютеру на том конце) для которых переконфигурирование клиента, например при переходе на резервный канал интернет, является непосильной задачей.Все эти вопросы решает программно определяемая локальная сеть Zerotier.
Её я сегодня и буду колхозить
- Внимание!
- Все IP адреса, адресные пространства, member_ID и прочее, используемые в данной заметке, после ее написания будут уничтожены и в дальнейшем мною использоваться не будут!
Предварительные условия
Для реализации задуманного нам потребуется компьютер в нашей сети предприятия, с доступом к интернет, на который необходимо пробросить UDP порт 9993 с маршрутизатора, через который осуществляется выход в интернет. Кроме того, IP этого компьютера должен быть указан в качестве шлюза для хождения в нашу zerotier сеть в статических маршрутах шлюза по умолчанию (или добавлен на каждый компьютер, с которым будет осуществляться взаимодействие из zerotier сети).У меня, после экспериментов с установкой qemu-guest-agent на FreeBSD осталась настроенная виртуальная машина FreeBSD 12.1 ее я и использую в качестве Zerotier шлюза.
Регистрация аккаунта Zerotier
Так, как тема - быстрая настройка шлюза, вариант установки своего контроллера мы рассматривать не будем, а воспользуемся бесплатным аккаунтом Zerotier one. Идем по ссылкеи в правом верхнем углу жмем my.zerotier.com
Выбор невелик - жмем логин
Здесь мы предполагаем, что у нас нет учетной записи и мы можем:
- Пройти процедуру регистрации
- Войти с учетной записью google
Мы попадаем на страницу выбора тарифного плана - бесплатно можно использовать до 100 клиентов, что для малых и средних предприятий вполне достаточно
Настройка Zerotier сети
Жмем в верхней строке меню <Networks>Жмем создать сеть
Щелчком по сети входим в настройки сети, которые состоят из следующих секций
- Базовые
- Network ID - уникальный индентификатор сети, по которому к ней добавляются клиенты
- Name - некое осмысленное имя сети, по которому вы на предыдущем экране сможете отличить одну сеть от другой
- Description - описание сети, если нужно
- Access control - переключатель режима доступа
- Private - могут подключиться только подтвержденные пользователи (настоятельно рекомендую именно его)
- Public - может подключиться любой клиент, знающий <Network ID>
- Расширенные
- Подсеть Zerotier
- Маршруты для нашей виртуальной сети
- Простая настройка
- Расширенная настройка
Быстрый алгоритм настройки нашей подсети:
- Во вкладке Easy выбираем понравившуюся подсеть класса "С" (у нас же маленькое предприятие и ограничение 100 клиентов), например "10.147.17.*"
Видим как изменилась подсеть - Переходим во вкладку Advanced, удаляем существующий диапазон и задаем новый, меньшего размера
Добавил диапазон из 40 адресов - Далее задаем шлюз для хождения в сеть нашего предприятия из сети Zerotier (Например сеть предприятия 192.168.100.0/24 а шлюзу присвоим IP не из DHCP диапазона 10.147.17.100)
- Больше, на данном этапе, ничего не трогаем
- Members - здесь будут отображаться наши клиенты
Установка клиента на FreeBSD 12.1
От имени root выплоняю:pkg update
pkg upgrade
pkg install -y net/zerotier net/ngrep textproc/jq
Получим приметно это сообщение
Message from zerotier-1.4.6:
--
Note that ZeroTier 1.4.6+ has a *new* license prohibiting commercial SaaS
style usage, as well as excluding government organisations. Read the
license details carefully to ensure your compliance.
First start the zerotier service:
service zerotier start
To connect to a zerotier network:
zerotier-cli join
If you are running other daemons or require firewall rules to depend on
zerotier interfaces being available at startup, you may need to enable
the following sysctl in /etc/sysctl.conf:
net.link.tap.up_on_open=1
This avoids a race condition where zerotier interfaces are created, but
not up, prior to firewalls and services trying to use them.
You can place optional configuration in /var/db/zerotier-one/local.conf
as required, see documentation at https://www.zerotier.com/manual.shtml
If your system boots from DHCP (such as a laptop), there is a new rc.conf
flag that will require that system startup will wait until the zerotier
network is established before proceeding. Note that this flag *does not*
work for systems confgured with statically assigned IP addresses, and
these will hang indefinitely due to an irreducible loop in rc(8) startup
files. This flag is disabled by default.
Включаем и запускаем:
sysrc zerotier_enable=YES
service zerotier start
Подключаем клиента к сети:
# zerotier-cli join 0cccb752f734e76c
200 join OK
где 0cccb752f734e76c - наш <netvork ID>команда
ifconfig
показывает, что появился новый интерфейс:
zt0pj5nabrj9prc: flags=8843<up> metric 5000 mtu 2800
options=80000<linkstate>
ether 6e:74:cb:88:ad:cc
hwaddr 00:bd:ca:41:ff:09
inet6 fe80::2bd:caff:fe41:ff09%zt0pj5nabrj9prc prefixlen 64 scopeid 0x3
groups: tap
media: Ethernet autoselect
status: active
nd6 options=21<performnud.auto_linklocal>
Opened by PID 507
Так же, в интерфейсе контроллера, в разделе "Members" появился наш клиент:В указанной стрелками последовательности
- Вводим IP, который мы указали в качестве шлюза Zerotier сети
- Жмем +
- Ставим птицу авторизовано
zt0pj5nabrj9prc: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 5000 mtu 2800
options=80000<linkstate>
ether 6e:74:cb:88:ad:cc
hwaddr 00:bd:ca:41:ff:09
inet6 fe80::2bd:caff:fe41:ff09%zt0pj5nabrj9prc prefixlen 64 scopeid 0x3
inet 10.147.17.100 netmask 0xffffff00 broadcast 10.147.17.255
groups: tap
media: Ethernet autoselect
status: active
nd6 options=21<performnud.auto_linklocal>
Opened by PID 507
# sysctl net.inet.ip.forwarding=1
# sysrc gateway_enable=YES
- Примечание
- На этом этапе в разных мануалах обычно принято настраивать NAT из сети Zerotier в сеть предприятия - с одной стороны это избавляет от необходимости настраивать обратную маршрутизацию на основном шлюзе предприятия, с другой все клиенты на ресурсах предприятия будут видеться с IP адресом вашего Zerotier шлюза и Вы лишитесь возможности тонкой настройки доступа, с другой стороны можно воспользоваться фильтрацией на уровне Zerotier шлюза или контроллера. Выбор за вами. Я ограничился описанным выше, для лучшего мониторинга и контроля.
Установка Windows клиента
- По ссылке в секции Members идем на страницу загрузки клиентов и качаем установщик для Windows
- Запускаем установку
- После завершения установки щелкаем на иконке в трее
- Жмем присоединиться к сети (join network)
- В открывшемся окне ввода вводим наш network ID
- В консоли Zerotier появится новый клиент
- Авторизуем его
Александр, спасибо за интересную статью, раньше про такой вариант не читал нигде, - очень интересно! Сразу же вопрос: у клиентов через какие порты идёт соединение? 9993?
ОтветитьУдалитьВ требованиях открытый UDP 9993 на входящие и исходящие.
УдалитьЯ на самом шлюзе настроил IPFW для фильтрации доступа с клиентов к ресурсам сети.
Т.е. если оператор мобильной связи блокирует этот порт то перенести на, к примеру, 443 порт не получится вообще или всё-таки возможно?
УдалитьА почему Вы решили что его блокируют? Это UDP порт Вы его не проверите с помощью веб сервисов или telnet. Создайте аккаунт и поставьте клиент на телефон - если он присоединится к виртуальной сети то все норм.
Удалить