Створимо та налаштуємо приватний мережевий контролер
Створимо віртуальну мережу
Налаштуємо та підключимо до неї вузли
Перевіримо мережеву зв'язок між ними
Закриємо доступ до GUI мережевого контролера ззовні
Сетевой контролер
Як вже було сказано раніше, для створення віртуальних мереж, керування ними, а також підключення вузлів, користувачеві необхідний мережевий контролер, графічний інтерфейс (GUI) для якого існує у двох іпостасях:
Варіанти ZeroTier GUI
Один від розробника ZeroTier, доступного у вигляді публічного хмарного рішення, що надається за моделлю SaaS, з чотирма планами передплати, у тому числі безкоштовним, але обмеженим за кількістю керованих пристроїв та рівнем підтримки
Другий — від незалежного розробника, дещо спрощеного за функціоналом, але доступного як приватного open source рішення для використання on-premise або на хмарних ресурсах.
У своїй практиці я користувався обома і в результаті все-таки зупинився на другому. Причиною цього стало застереження розробника.
«Мережеві контролери служать центрами сертифікації для віртуальних мереж ZeroTier. Файли, що містять секретні ключі контролера, повинні ретельно охоронятися і надійно архівуватися. Їх компрометація дозволяє неавторизованим зловмисникам створювати шахрайські зміни мереж., а втрата - призводить до втрати здатності контролювати і керувати мережею, фактично роблячи її непридатною для використання»
Навіть якщо прийде Чебурнет — маю залишатися доступ до свого мережевого контролера;
Мережевим контролером повинен скористатися тільки я. За потреби, надаючи доступ своїм довіреним особам;
Має бути можливість обмеження доступу до мережного контролера ззовні.
Окремо зупинятися на тому, як розгорнути мережевий контролер та GUI для нього на on-premise фізичних чи віртуальних ресурсах, у цій статті я не бачу особливого сенсу. І тому також є 3 причини:
Тому, вибравши шлях меншого опору, використовуватиму в даній розповіді мережевий контролер з GUI на основі VDS, створеного із шаблону, люб'язно розробленого моїми колегами з RuVDS
Початкове налаштування
Після створення сервера із вказаного шаблону, доступ до Web-GUI контролера користувач отримує через браузер, звернувшись за адресою http:// :3443
За промовчанням сервер вже містить попередньо створений сертифікат TLS/SSL. Для мене цього достатньо, тому що я закриваю доступ до нього ззовні. Для тих, хто бажає використовувати інші типи сертифікатів, є Інструкція із встановлення на GitHab розробника GUI.
При першому вході користувача до системи Увійти із встановленими за умовчанням логіну та паролю адмін и пароль:
Вона пропонує змінити пароль за замовчуванням на користувальницький
Я роблю трохи інакше — не змінюю пароль у існуючого користувача, а створюю нового. Створити користувача.
Задаю ім'я нового користувача ім'я користувача:
Задаю новий пароль - Введіть новий пароль:
Підтверджую новий пароль. Повторно введіть пароль:
Символи, що вводяться, чутливі до регістру — будьте уважні!
Чек-бокс підтвердження зміни пароля при наступному вході Change password on next login: не наголошую.
Для підтвердження введених даних тисню Встановити пароль:
Потім: перелогінююсь Вийти / Увійти, вже під обліковими даними нового користувача:
Далі переходжу у вкладку користувачі користувачів та видаляю користувача адмін, клацнувши на значок кошика, що знаходиться ліворуч від його імені.
Надалі змінити пароль користувача можна клікнувши або на його ім'я, або на set password.
Створення віртуальної мережі
Для створення віртуальної мережі необхідно перейти у вкладку Додати мережу. З пункту користувач це можна здійснити через сторінку Головна — головну сторінку Web-GUI, на якій відображено ZeroTier-адресу даного мережевого контролера і є посилання на сторінку списку мереж, через нього створених.
На сторінці Додати мережу користувач призначає ім'я новоствореної ним мережі.
При застосуванні даних, що вводяться - Створити мережу Користувач потрапляє на сторінку зі списком мереж, на якій вказано:
Назва мережі — ім'я мережі у вигляді посилання, при переході через яке можна його змінити Ідентифікатор мережі - Ідентифікатор мережі деталь — Посилання на сторінку з детальними параметрами мережі легке налаштування — Посилання на сторінку для простого налаштування членів - Посилання на сторінку управління вузлами
Для подальшого налаштування переходимо за посиланням легке налаштування. На сторінці, що відкриється, користувач задає діапазон IPv4 - адрес для створюваної мережі. Зробити це можна автоматично, натиснувши кнопку Generate network address або вручну, ввівши у відповідне поле мережну маску мережі CIDR.
При підтвердженні успішного введення даних необхідно повернутись на сторінку зі списком мереж за допомогою кнопки Back. На цьому основне налаштування мережі можна вважати завершеним.
Підключення вузлів мережі
Спочатку на вузол, який користувач бажає підключити до мережі, необхідно встановити сервіс ZeroTier One.
Що таке ZeroTier One?Нульовий рівень один — сервіс, що працює на ноутбуках, настільних комп'ютерах, серверах, віртуальних машинах і контейнерах, який забезпечує підключення до віртуальної мережі через віртуальний мережевий порт, подібно до VPN-клієнта.
Після встановлення та запуску служби до віртуальних мереж можна підключитися за допомогою їх 16-значних адрес. Кожна мережа виглядає як віртуальний мережевий порт у системі, який поводиться так само, як звичайний порт Ethernet.
Посилання на дистрибутиви, а також команди установки можна знайти на сторінці виробника.
Керувати встановленим сервісом можна через термінал командного рядка (CLI) з правами адміну/руту. У Windows/MacOS ще за допомогою графічного інтерфейсу. В Android/iOS тільки за допомогою GUI.
Перевірка успішності встановлення сервісу:
CLI:
zerotier-cli status
Результат:
200 info ebf416fac1 1.4.6 ONLINE
Графічний інтерфейс користувача:
Сам факт його роботи програми та наявність у ньому рядка з Node ID з адресою вузла.
Підключення вузла до мережі:
CLI:
zerotier-cli join <Network ID>
Результат:
200 join OK
Графічний інтерфейс користувача:
Windows: правою кнопкою миші на значок Нульовий рівень один у системному треї та вибору пункту Приєднатися до мережі.
MacOS: Запустити програму Нульовий рівень один bar menu, якщо ще не запущений. Клік на значку ⏁ та вибір Приєднатися до мережі.
Android/iOS: + (зображення плюса) у додатку
У полі, що з'явилося, введіть вказаний в GUI мережевого контролера Ідентифікатор мережі, і тиснете Join/Add Network.
Призначення вузлу IP-адреси
Тепер повертаємося до мережного контролера і на сторінці зі списком мереж перейти за посиланням членів. Якщо на екрані ви побачили картинку аналогічною до цієї — значить ваш мережевий контролер отримав запит на підтвердження підключення до мережі від вузла, що підключається.
На цій сторінці залишаємо поки що все як є і за посиланням Призначення IP переходимо на сторінку призначення вузлу IP-адреси:
Після призначення адреси за кнопкою назад повертаємось на сторінку списку підключених вузлів і задаємо назву — Member name і відзначаємо чек-бокс для авторизації вузла в мережі Уповноважений. До речі, цей чек-бокс дуже зручна для відключення/підключення від мережі вузла надалі.
Зберігаємо зміни за допомогою кнопки оновлення.
Перевірка статусу підключення вузла до мережі:
Для перевірки статусу підключення на вузлі виконуємо:
CLI:
Для підключення решти вузлів повторюємо операції 1-5 для кожного з них.
Перевірка мережної зв'язності вузлів
Я роблю це за допомогою виконання команди ping на підключеному до мережі пристрої, яким зараз керую.
На скріншоті Web-GUI контролера можна побачити три підключені до мережі вузли:
ZTNCUI - 10.10.10.1 - Мій мережевий контролер з GUI - VDS в одному з ДЦ RuVDS. Для звичайної роботи немає необхідності додавати його до мережі, але я зробив це, тому що хочу закрити доступ до веб-інтерфейсу ззовні. Про це трохи згодом.
Тому зі свого робочого комп'ютера я перевіряю доступність інших вузлів командами:
ping 10.10.10.1
Pinging 10.10.10.1 with 32 bytes of data:
Reply from 10.10.10.1: bytes=32 time=14ms TTL=64
Reply from 10.10.10.1: bytes=32 time=4ms TTL=64
Reply from 10.10.10.1: bytes=32 time=7ms TTL=64
Reply from 10.10.10.1: bytes=32 time=2ms TTL=64
Ping statistics for 10.10.10.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 2ms, Maximum = 14ms, Average = 6ms
ping 10.10.10.3
Pinging 10.10.10.3 with 32 bytes of data:
Reply from 10.10.10.3: bytes=32 time=15ms TTL=64
Reply from 10.10.10.3: bytes=32 time=4ms TTL=64
Reply from 10.10.10.3: bytes=32 time=8ms TTL=64
Reply from 10.10.10.3: bytes=32 time=4ms TTL=64
Ping statistics for 10.10.10.3:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 4ms, Maximum = 15ms, Average = 7ms
Користувач має право використовувати інші інструменти перевірки доступності вузлів у мережі, як вбудовані в ОС, так і такі як NMAP, Advanced IP Scanner і т.д.
Ховаємо доступ до GUI мережевого контролера ззовні.
Загалом, зменшити ймовірність несанкціонованого доступу до VDS, на якому знаходиться мій мережевий контролер, я можу засобами файрвола в особистому кабінеті RuVDS. Ця тема скоріше для окремої статті. Тому тут я покажу як забезпечити доступ до GUI контролера тільки з мережі, яку створив у цій статті.
Для цього необхідно підключившись SSH до VDS на якому знаходиться контролер, відкрити файл конфігурації за допомогою команди:
nano /opt/key-networks/ztncui/.env
У файлі, що відкрився, після рядка «HTTPS_PORT=3443», що містить адресу порту, за яким відкривається GUI, потрібно додати додатковий рядок з адресою, за якою GUI буде відкриватися — в моєму випадку це HTTPS_HOST=10.10.10.1.
Далі збережу файл
Сtrl+C
Y
Enter
та виконую команду:
systemctl restart ztncui
І все тепер GUI мого мережевого контролера доступний тільки для вузлів мережі 10.10.10.0.24.
Замість висновку
На цьому першу частину практичного посібника зі створення віртуальних мереж на основі ZeroTier хочу закінчити. Чекаю на ваші коментарі.
А поки що, щоб скоротити час до моменту публікації наступної частини, в якій я розповім, як поєднати віртуальну мережу з фізичною, як організувати «road warrior» режим і дещо ще, пропоную вам спробувати організувати власну віртуальну мережу за допомогою приватного мережевого контролера GUI на основі VDS з маркетплейсу на сайті RUVDS. Тим більше, що для всіх нових клієнтів діє безкоштовний тестовий період – 3 дні!
PS Так! Мало не забув! Видалити вузол з мережі можна командою CLI цього вузла.