Wstęp
Cloudflare Tunnels to usługa zarówno dla użytkowników domowych, jak i firm. Ale co to dokładnie jest? Cloudflare Tunnels przypomina trochę połączenie VPN, ponieważ jest bezpiecznym sposobem uzyskiwania dostępu do zasobów w wewnętrznej sieci prywatnej ze świata zewnętrznego. Załóżmy na przykład, że masz urządzenie Raspberry Pi z lokalnym interfejsem GUI i chcesz zmienić niektóre ustawienia — jak możesz zalogować się do tego urządzenia i wprowadzić te zmiany podczas podróży? Istnieje kilka sposobów na rozwiązanie tego problemu.
Różnica między Cloudflare Tunnels a tradycyjną siecią VPN polega na tym, że nie musisz otwierać portów w zaporze ogniowej. Dzięki VPN łączysz się ze swoim serwerem VPN (lub czasami bezpośrednio z routerem) przez dziurę, którą umieściłeś w zaporze ogniowej.
Dzięki Cloudflare Tunnels instalujesz klienta w swojej sieci, który utrzymuje bezpieczne połączenie z Cloudflare. Następnie tworzysz różne nazwy FQDN (Fully Qualified Domain Names, czyli nazwy DNS), które są powiązane z usługami wewnętrznymi. Tak więc w naszym przykładzie Raspberry Pi możesz utworzyć „pi.mojadomena.pl” dla swojego urządzenia i informujesz Cloudflare, jaki jest prywatny adres IP i port. W przypadku Raspberry Pi jest to interfejs HTTP działający na porcie 5000. ALE – kiedy przechodzimy przez Cloudflare Tunnels, staje się to połączenie HTTPS na porcie 443 (standard) – jest to więc nie tylko wygodny sposób na dostęp do zasobów wewnętrznych, otrzymujesz również dodatkowe funkcje, takie jak przekierowanie portu HTTP 5000 na port HTTPS. Ponieważ łączysz się z nazwą FQDN zarządzaną przez Cloudflare, zasłaniasz również swój własny adres IP WAN.
Ostatnio zagłębiłem się w tę technologię i teraz chcę wam pokazać jak wykorzystać Cloudflare Tunnels w praktycznym przykładzie.
Wymagania wstępne
Domena – będziesz musiał nadać Cloudflare domenę, która będzie używana do kierowania nazw FQDN do twoich zasobów wewnętrznych. Załóżmy, że używasz „mojadomena.pl.” Najpierw skonfigurujesz tunel, a następnie możesz dodać wiele zasobów do tej domeny, takich jak webserver.mojadomena.pl, nas.mojadomena.pl, pihole.mojadomena.pl – wszystko, z czym chcesz się połączyć ze świata zewnętrznego, może być połączone z Cloudflare Tunnels… ale wszystko zaczyna się od tej domeny.
Domena, której zamierzam użyć w tym poradniku, to bluestack.tech – jest to domena zapasowa, której nie używam do niczego innego.
Konto Cloudflare – przejdź do cloudflare.com i kliknij przycisk „Sign up” w prawym górnym rogu. Zostaniesz przeprowadzony przez proces rejestracji, a ostatecznie zostaniesz zalogowany do pulpitu nawigacyjnego Cloudflare.
Cloudflared Connector – Jest to serwer lub kontener Docker w Twojej sieci lokalnej, który łączy się z Cloudflare. Usługa, którą uruchamia, nazywa się „cloudflared” (skrót od cloudflare daemon). Zasadniczo jest to urządzenie w Twojej sieci, które uwierzytelnia i utrzymuje otwarte połączenie z usługami Cloudflare. Cloudflare pozwala zainstalować złącze cloudflared w systemach Windows, macOS, Linux, Docker – wiele opcji.
W tym poradniku zainstalujemy Uptime Kuma – łatwe w użyciu narzędzie do monitorowania. Wykorzystamy też system Ubuntu Server uruchomiony w chmurze Oracle.
Rejestracja i konfiguracja domeny w Cloudflare
Pierwszą rzeczą, którą chcemy zrobić, to dodać domenę do Cloudflare i przełączyć główne serwery nazw dla tej domeny. Na pulpicie nawigacyjnym Cloudflare kliknij Websites w menu po lewej stronie, a następnie kliknij „Add a Site”.
Wpisz nazwę swojej domeny i kliknij „Add site”.
Zobaczysz kilka opcji cenowych, ale jeśli przewiniesz w dół, możesz kliknąć bezpłatną wersję Cloudflare – wybierz bezpłatną wersję, a następnie kliknij „Continue”.
Następnie Cloudflare skanuje Twoją domenę i replikuje dla Ciebie wszelkie istniejące rekordy – ponieważ jest to zupełnie nowa domena, której używamy do konfiguracji naszych tuneli, możemy po prostu kliknąć „Continue” u dołu.
Następnie Cloudflare poda nam nazwy serwerów DNS, których powinniśmy używać. Zasadniczo oznacza to po prostu, że teraz, gdy przeprowadzasz wyszukiwanie DNS w bluestack.tech, wyszukiwanie to jest obsługiwane przez serwery nazw DNS firmy OVH. Chcemy zmienić nazwę naszej domeny, aby wszystkie wyszukiwania DNS były obsługiwane przez serwery nazw Cloudflare.
Każdy dostawca domen zapewni Ci sposób na zrobienie tego i każdy z nich będzie nieco inny. Jeśli używasz OVH dla swoich domen, te instrukcje będą działać – ale jeśli korzystasz z innego dostawcy domen, będziesz musiał sprawdzić, jak to zrobić dla własnego hosta DNS.
Logując się do ovh.com, kliknij na domenę w menu po lewej stronie, a następnie kliknij przycisk „Serwery DNS” i „Zmień serwery DNS”:
Wpisujemy serwery nazw podane przez Cloudflare:
Wróć do Cloudflare i kliknij przycisk „Done, check nameservers”. Powinieneś zostać przekierowany do Przewodnika szybkiego startu – możesz przyjąć wszystkie ustawienia domyślne.
Po powrocie do ekranu przeglądu możesz kliknąć przycisk, aby ponownie sprawdzić serwery nazw – kliknij go, a zobaczysz to powiadomienie:
Tworzymy tunel
Następnym krokiem jest skonfigurowanie naszego tunelu Cloudflare. To jest połączenie między Twoją siecią LAN a usługami Cloudflare. Ten etap składa się z dwóch elementów – stworzenia samego tunelu, a następnie stworzenia złącza w naszej sieci LAN, które będzie komunikować się z tunelem, który stworzyliśmy. Kiedy oba te elementy działają, skutecznie stworzyliśmy bezpieczne połączenie między naszą siecią LAN a Cloudflare, na którym możemy następnie budować, aby uzyskać dostęp do naszych usług wewnętrznych.
Na pulpicie nawigacyjnym Cloudflare (możesz się tam dostać, klikając logo Cloudflare w lewym górnym rogu), powinieneś zobaczyć wszystkie swoje domeny zarządzane przez Cloudflare. Kliknij domenę, którą właśnie dodałeś:
Następnie kliknij „Cloudflare Tunnel”, który znajduje się w menu po lewej stronie pod „Traffic”:
Spowoduje to przejście do łącza do pulpitu nawigacyjnego Zero Trust, w którym wykonamy większość konfiguracji za pomocą naszego tunelu:
Kliknij „Tunnels” w sekcji „Access” w menu po lewej stronie, a następnie kliknij „Create tunnel”:
Nadaj swojemu tunelowi nazwę, taką jak pomysłowa nazwa „mytunnel”, której użyłem na poniższym zrzucie ekranu, a następnie kliknij „Save tunnel”:
Na następnym ekranie zostaniesz zapytany o środowisko, w którym zostanie zainstalowany tunel. Na potrzeby tego poradnika będziemy używać Ubuntu/Debian arm64-bit, ale jeśli używasz systemu Windows, Linux, macOS itp., będziesz chciał wybrać odpowiednie środowisko, a następnie postępować zgodnie z instrukcjami w polu poniżej wybór.
Pod tymi instrukcjami zobaczysz status łącznika – na razie będzie pusty, ponieważ nie skonfigurowaliśmy jeszcze naszego łącznika, ale kiedy już utworzysz łącznik, możesz sprawdzić, czy jest podłączony i działa poprawnie.
Za chwilę tu wrócimy.
Tworzenie konektora
W tym poradniku będziemy używać systemu Ubuntu Server, a dokładniej, będziemy używać aplikacji Uptime Kumma zainstalowanej w systemie Ubuntu Server.
Jak uruchomić instancję VPS w chmurze Oracle opisywałem w wcześniejszym poradniku. Zapraszam do zapoznania się z pierwszą częścią wpisu: Strona WWW w WordPress za darmo na zawsze wykorzystując Oracle Cloud – dowiesz się tam jak utworzyć instancję z systemem Ubuntu i połączyć się po SSH.
Po zalogowaniu się do systemu aktualizujemy go komendą:
sudo apt update
sudo apt upgrade
i instalujemy Dockera: Instalacja Docker Engine, Docker Compose na Ubuntu
Uruchamiamy kontener z aplikacją Uptime Kuma:
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
Sprawdzamy działanie kontenera komendą:
docker ps
Wracamy do panelu Cloudflare i kopiujemy podane tam komendy:
Po instalacji konektora pojawi się komunikat o połączeniu z serwerem – klikamy Next:
W następnym kroku wpisujemy nazwę domeny, po której będziemy dostawać się do usługi, a także port i adres IP, na którym uruchomiona jest aplikacja Uptime Kumma. Kontener dockera uruchomiony został na porcie 3001 – taki też wpiszemy. Aby zweryfikować na jakich portach nasłuchuje serwer instalujemy pakiet net-tools i wpisujemy polecenie:
sudo apt install net-tools
netstat -tunlp
Taki adres podajemy w panelu Cloudflare i klikamy Save Tunnel:
Pojawi się nam nowy tunel i jego status:
I proszę, aplikacja jest dostępna pod utworzona przed chwilą domeną, zabezpieczona certyfikatem SSL i proxy od Cloudflare, bez otwierania portów w zaporze i konfigurowania iptables/firewalld/ufw i innych tego typu firewalli, piękne.
W przypadku, gdy aplikacja uruchomiona jest na protokole HTTPS z Self-signed certificate konfigurujemy konektor po HTTPS i włączamy No TLS Verify:
Jeżeli na tym samym serwerze mamy zainstalowane inne aplikacje, nie trzeba tworzyć nowego tunelu z konektorem – wystarczy dodać kolejną domenę w zakładce Public Hostname:
Końcowe przemyślenia
Jest tak dużo rzeczy, które można zrobić za pomocą interfejsu Zero Trust Cloudflare — ledwie zarysowaliśmy powierzchnię tuneli, ale miejmy nadzieję, że daje to dobrą podstawę, na której można budować dalej. Po skonfigurowaniu i uruchomieniu możesz już nigdy nie wrócić do VPN.