Dziś przedstawię ciekawe darmowe rozwiązanie pozwalające połączyć się z zewnątrz z naszą lokalną siecią - przykładowo urządzeń IoT. Nie będzie tutaj potrzebne publiczne IP - wszystko zadziała nawet, gdy jesteśmy za NAT i nie mamy przekierowanych portów. Co więcej, do skonfigurowania będą tylko dwa urządzenia, a mianowicie nasz aktywny komputer, oraz komputer-pośrednik stanowiący wyjście na docelową sieć LAN. W ten sposób dostaniemy dostęp do wszystkich urządzeń w tej sieci - w tym do sprzętów IoT opartych o ESP8266, ESP32 czy tam BK7231.
Przygodę zaczynamy od pobrania Tailscale na obie maszyny, potrzebne są prawa administratora. Ważny też jest restart systemu - już na to się raz nabrałem, bo z pozoru dostęp do HTTP działał, ale z innymi usługami był problem.
https://tailscale.com/
Do Tailscale najlepiej zalogować się poprzez konto Google. Po instalacji usługa będzie schowana jako ikonka na pasku narzędzi:
Widzi też nowe IP naszego urządzenia. Analogicznie, instalacja powinna dodać nam wirtualną kartę sieciową Tailscale:
Pełen zakres naszej wirtualnej sieci najłatwiej jest sprawdzić na stronie Tailscale:
To wystarczy do tego, by urządzenia się widziały:
Ale nie da nam to dostępu do całej sieci LAN docelowego komputera. Trzeba zrobić coś więcej - trzeba włączyć tzw. Subnet Router (subnet routing). Dzięki temu inne urządzenia z sieci Tailscale będą mogły widzieć całą sieć LAN za tym komputerem – czyli ESP8266, ESP32, router, kamerki, drukarki itd.
Można też użyć komendy: tailscale up --reset --advertise-routes=192.168.1.0/24
Potem na komputerze-pośredniku wchodzimy w ustawienia routowania:
Włączamy tam subnet-router:
Domyślnie ten checkbox jest wyłączony!
Od teraz możemy dostać się do urządzeń z sieci docelowej poprzez ich normalne IP.
Podsumowując, w tej konfiguracji mam:
- moją sieć LAN 192.168.0.1/24
- docelową sieć LAN 192.168.1.1/24
i będąc na mojej maszynie w mojej sieci LAN, mogę dostać się po normalnym IP do urządzenia z docelowej sieci LAN, np. IP 192.168.1.123 działa, zarówno w przeglądarce, jak i w programach. Mogę normalnie wykonywać połączenia TCP czy HTTP i komunikacja działa w obie strony.
W razie wątpliwości można to przetestować chociażby w PuTTY:
Zrzut ekranu pokazuje finalny test dla trzech poziomów komunikacji - urządzenie w mojej sieci LAN, docelowy komputer, urządzenie w docelowej sieci LAN:
To bardzo wygodne rozwiązanie - i na pewno bardziej dostępne niż publiczne IP i przekierowywanie portów.
Czy korzystacie z tego typu tunelowania, a jeśli tak, to do czego? Które VPN polecacie? Zapraszam do dyskusji.
PS: Warto jeszcze wspomnieć czym jest Exit Node. Exit Node to urządzenie które może działać jako wyjście całego ruchu internetowego dla innych urządzeń. O ile Subnet Router udostępnia tylko wybraną sieć lokalną za komputerem-pośrednikiem, o tyle Exit Node przejmuje cały ruch - zarówno do LAN-u, jak i na zewnątrz, do Internetu.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.