Створюємо VPN-мережу із ZeroTier: покрокове налаштування

У цій інструкції ми створимо віртуальну мережу ZeroTier, підключимо до неї сервер, комп’ютер і телефон, а потім відкриємо через один із вузлів доступ до цілої локальної мережі. Як влаштована технологія й чим вона відрізняється від звичайного VPN, розказано в статті Що таке ZeroTier.
Крок 1. Створіть мережу
- Зареєструйтеся в панелі ZeroTier Central на сайті zerotier.com.
- Натисніть Create A Network. З’явиться мережа з 16-значним ідентифікатором — Network ID.
- Відкрийте мережу й задайте зрозумілу назву.
- Переконайтеся, що в розділі Access Control обрано режим Private: нові пристрої зможуть обмінюватися даними лише після вашого підтвердження.
- У розділі IPv4 Auto-Assign оберіть діапазон адрес, який не перетинається з вашими локальними мережами, наприклад
10.147.17.0/24.
Крок 2. Встановіть клієнт
Linux
curl -s https://install.zerotier.com | sudo bash
Скрипт підключить репозиторій ZeroTier, встановить пакет і запустить службу. Перевірте стан:
sudo zerotier-cli info
У відповіді буде адреса вузла та статус ONLINE.
Windows і macOS
Завантажте інсталятор із сайту zerotier.com. Після встановлення значок ZeroTier з’явиться в області сповіщень (Windows) або в рядку меню (macOS).
Android та iOS
Встановіть застосунок ZeroTier One з магазину застосунків.
Крок 3. Приєднайтеся до мережі
Linux:
sudo zerotier-cli join 1234567890abcdef
Windows і macOS: натисніть на значок ZeroTier, оберіть Join New Network і введіть Network ID.
Телефон: натисніть + у застосунку, введіть Network ID та ввімкніть перемикач мережі.
Крок 4. Авторизуйте пристрої
У панелі керування відкрийте мережу й прокрутіть до розділу Members. Кожен пристрій, що приєднався, з’явиться в списку з адресою вузла.
- Позначте прапорець Auth навпроти пристрою.
- Задайте ім’я в полі Name, щоб не плутати пристрої.
- За потреби призначте постійну адресу в полі Managed IPs.
За кілька секунд вузол отримає адресу. Перевірте в Linux:
sudo zerotier-cli listnetworks
ip -br a | grep zt
Статус мережі має бути OK, а на інтерфейсі zt... — з’явитися адреса з обраного діапазону.
Крок 5. Перевірте зв’язок
З одного пристрою виконайте ping адреси іншого в мережі ZeroTier:
ping 10.147.17.25
Подивіться, як встановлено з’єднання:
sudo zerotier-cli peers
У стовпці з типом з’єднання значення DIRECT означає прямий зв’язок, RELAY — передавання через проміжний сервер. Через ретрансляцію все працює, але повільніше.
Тепер пристрої доступні один одному за адресами ZeroTier: можна підключатися по SSH, відкривати вебінтерфейси й мережеві папки, як в одній локальній мережі.
Крок 6. Доступ до локальної мережі через шлюз
Часто потрібно потрапити не лише на пристрій із ZeroTier, а й на інші пристрої в його мережі: принтер, камеру, мережеве сховище. Для цього один вузол у локальній мережі налаштовується як шлюз.
Припустімо, локальна мережа — 192.168.1.0/24, шлюзом буде комп’ютер із Linux, його адреса в ZeroTier — 10.147.17.10.
На шлюзі
Увімкніть пересилання пакетів:
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-zerotier.conf
sudo sysctl --system
Дізнайтеся імена інтерфейсів:
ip -br a
Додайте правила NAT, підставивши свої імена інтерфейсів — eth0 для локальної мережі та ztabcdefgh для ZeroTier:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i ztabcdefgh -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o ztabcdefgh -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Збережіть правила:
sudo apt install iptables-persistent
sudo netfilter-persistent save
У панелі керування
У розділі Managed Routes додайте маршрут:
- Destination:
192.168.1.0/24 - Via:
10.147.17.10
Усі учасники мережі автоматично отримають маршрут і зможуть звертатися до пристроїв локальної мережі за їхніми звичайними адресами.
Крок 7. Обмежте доступ правилами
Типово всі учасники мережі бачать один одного. У розділі Flow Rules можна обмежити трафік. Приклад: дозволити лише SSH, HTTPS і ping, решту заборонити:
drop
not ethertype ipv4
and not ethertype arp
and not ethertype ipv6
;
accept ipprotocol icmp;
accept dport 22 and ipprotocol tcp;
accept dport 443 and ipprotocol tcp;
accept chr tcp_ack;
drop;
Правило accept chr tcp_ack пропускає пакети-відповіді вже встановлених з’єднань. Після зміни натисніть Save Changes — правила застосуються до всіх вузлів за кілька секунд.
Корисні команди
sudo zerotier-cli info # адреса та стан вузла
sudo zerotier-cli listnetworks # мережі й отримані адреси
sudo zerotier-cli peers # з'єднання з іншими вузлами
sudo zerotier-cli leave 1234567890abcdef # покинути мережу
sudo systemctl restart zerotier-one # перезапустити службу
Якщо щось не працює
- Статус мережі
ACCESS_DENIED. Пристрій не авторизовано — позначте прапорець Auth у панелі. - Статус
REQUESTING_CONFIGURATIONне змінюється. Вузол не може зв’язатися з контролером: перевірте, що вихідний UDP-порт 9993 не заблоковано. - З’єднання лише через
RELAY. Відкрийте вхідний UDP-порт 9993 у файрволі принаймні на одному з двох пристроїв — на сервері цеsudo ufw allow 9993/udp. - Немає доступу до локальної мережі за шлюзом. Перевірте пересилання пакетів і правила NAT на шлюзі, а також що маршрут у панелі вказує на правильну адресу.
- Ping проходить, а служба недоступна. Заважає файрвол на цільовому пристрої або правила потоку.
Видалення пристрою з мережі
Щоб закрити доступ втраченому або непотрібному пристрою, зніміть прапорець Auth у списку учасників і видаліть запис. На самому пристрої виконайте zerotier-cli leave з ідентифікатором мережі.


