У моїй лабораторії є два підключення до Інтернету, але жодне не дає мені простого способу отримання вхідного трафіку. Обидва вони за CGNAT, що ускладнює традиційні діри в моєму маршрутизаторі. Для моєї домашньої лабораторії, де у мене є багато програм, які потребують публічного доступу, мої надлишкові налаштування Інтернету зовсім не допомагають. Після бігань туди-сюди в пошуках рішення я нарешті зупинився на Pangolin і ось що змінилося.
Я не міг відкрити порт, навіть якби хотів
Два провайдера. Мене теж не пустив.
Я живу в сільській місцевості, і хоча це місто має багато переваг перед метрополітеном, воно також має низку недоліків. Одним із недоліків є те, що я маю обмежену кількість провайдерів, і більшість із них є місцевими.
Для своєї лабораторії я підписаний на двох провайдерів. Чому два? Через меншу кількість користувачів зв’язок загалом стабільний і переривань дуже мало. Але якщо зв’язок з якоїсь причини втрачається, збій зазвичай триває від 12 до 24 годин або довше, якщо це вихідні. Друге підключення допомагає підтримувати активність домашньої лабораторії, коли основне підключення вимкнено.
Але найбільше тривожить те, що обидва з’єднання стоять за CGNAT. Це означає, що кожен оператор має загальну IP-адресу, недоступну в Інтернеті. І за CGNAT не існує традиційного способу перенаправлення будь-якого порту з маршрутизатора.
Навіть якби мені був доступний вхідний доступ, я б не зацікавився перетворенням свого домашнього маршрутизатора на публічну точку доступу для кількох служб homelab. У моїй домашній лабораторії є багато служб, до яких я ніколи не хочу, щоб вони були доступні з Інтернету, наприклад панель керування.
Але є кілька служб, які потребують публічного доступу. Immich, Jellyfin і Nextcloud є одними з найбільш використовуваних служб у моїй лабораторії, і я користуюся ними, навіть коли мене немає. Оскільки традиційна переадресація портів не була для мене варіантом, мені потрібно було щось, щоб отримати з’єднання з моєї мережі.
Як панголін пересувається?
Мій сервер дзвонить. Мій маршрутизатор нічого не чує.
Pangolin допомагає мені отримати доступ до моїх послуг з будь-якої точки світу, не покладаючись на вхідне з’єднання з моїм домашнім Інтернетом. Перш ніж перейти до розділу коментарів, дозвольте мені бути чітким і сказати, що я міг використовувати лише Cloudflare Tunnel. Я використовував його в минулому, і чому я замінив тунель Cloudflare на Pangolin – це зовсім інша історія, яку я вже розповідав.
Панголін складається з трьох основних компонентів – тритона, піщанки і трафіку. Newt працює на моєму домашньому сервері та використовується для підключення моєї лабораторії до панелі керування Pangolin для встановлення вихідного з’єднання. Сам Pangolin розміщено на VPS, оскільки для цього потрібен загальнодоступний IP. Gerbil створює безпечний і зашифрований тунель за допомогою WireGuard, а Traefik направляє трафік до відповідної програми, яку він запитує.
Інтернет -> VPS -> Traefik -> Gerbil/tunnel -> Newt -> app.
Літак управління Pangolin виконує всю нудну роботу під капотом. І мої з’єднання CGNAT не піклуються про весь процес, оскільки трафік ніколи не надходить безпосередньо до мого маршрутизатора.
Було кілька проблем, з якими я зіткнувся під час першого налаштування служби; наприклад, Newt і служби мали б спільно використовувати мережу Docker, але Docker працює саме так. Але це одноразова річ, тому після встановлення мені не потрібно було озиратися назад.
Але, як згадувалося вище, не всі мої послуги мають бути доступними. Є багато служб, як-от Portainer і AdGuard Home, які призначені саме для мене. Тому для цих типів послуг я отримую доступ за допомогою приватних сітчастих мереж VPN, таких як NetBird і Tailscale. Завдяки Pangolin і NetBird я захищений з обох сторін, і найкраще те, що я не маю вхідних портів на моєму маршрутизаторі.
Як це насправді жити з цим
Це просто інша URL-адреса. Це теж підступ.
Важливе питання полягає в тому, як це працює після одноразової установки. Чесно кажучи, я не кожен день відкриваю панель Pangolin і це найкращий результат. Наприклад, коли я подорожую і мені потрібні термінові документи, я просто відкриваю Nextcloud у браузері, використовуючи ім’я публічного домену, і завантажую їх. Це так просто. Мені не потрібно турбуватися про підземний тунель чи домашню мережу. Він поводиться як будь-який інший веб-сервіс.
Додавання нового сервісу до Pangolin займає менше 30 секунд. Після того, як я заповню нову послугу вдома та якщо вона загальнодоступна, я відкриваю панель керування та додаю її як новий загальнодоступний ресурс, використовуючи кілька основних деталей. Нова назва джерела, субдомен і локальна IP-адреса з портом. Готово.
Але у цієї установки є кілька недоліків, якщо ви плануєте встановити її у своїй лабораторії. По-перше, це не безкоштовно. Сам сервіс Pangolin безкоштовний, але для роботи потрібен VPS із загальнодоступною IP-адресою, а оренда VPS є ще одним постійним видатком.
Для мене весь інтернет-трафік спочатку йде до Німеччини, а потім до домашнього сервера. Чому Німеччина? Оскільки моя загальнодоступна кінцева точка VPS знаходиться в Нюрнберзі, оскільки це економічно вигідно. Особисто затримка в кілька мс не є великою проблемою, але якщо у вас є послуги, де кожна мс важлива, вам варто орендувати VPS поблизу вашого місця розташування.
Оскільки VPS — це частина інфраструктури, що належить комусь іншому, і ви просто здаєте її в оренду, вона стає ще однією залежністю; якщо ви втратите обліковий запис або хост зазнає збою, це безпосередньо вплине на ваш домашній віддалений доступ.
І якщо ви подивитеся на це з точки зору безпеки, хоча мій домашній сервер не піддається безпосередньому впливу, служби все ще є загальнодоступними, тому для його захисту потрібно зробити ще кілька кроків. Я особисто всюди використовую Pocket ID для SSO і CrowdSec для захисту меж.
Мій обмін із задоволенням живе з цим
Pangolin пропонує простий спосіб обійти брандмауер CGNAT для тих, хто хоче налаштувати спеціальні URL-адреси для своїх служб самообслуговування, не покладаючись на клієнта на кожному пристрої. Але це не завжди доречно. Якщо ви задоволені mesh VPN для приватного доступу, то ви вже в порядку. Але якщо вам потрібна легкодоступна URL-адреса HTTPS для ваших послуг без зайвих витрат і ви можете жити з вартістю VPS та інших залежностей, Pangolin того вартий.