Temat: [mało znane pakiety] Tailscale - zeroconf vpn, vpn bez konfiguracji
W repozytorium OpenWrt można znaleźć się setki pakietów. Niektóre są mało znane, choć realizują ciekawe funkcje. Jednym z nich jest tailscale.
Tailscale to kolejny VPN, wyróżniający się jedną niesamowitą cechą - nie ma plików konfiguracyjnych i praktycznie nie konfiguruje się go w systemie. Działa ot tak, sam robiąc niezbędne rzeczy. Choć jest podobny do opisywanego ZeroTier to jest różnica w sposobie zestawienia tunelu - tailscale wykorzystuje wireguarda i bezpośrednie połączenia pomiędzy nodami. Opis różnic można znaleźć na stronie projektu.
UWAGA: Zanim rzucicie się na tworzenie tuneli to należy wspomnieć że bieżące wydanie OpenWrt zawiera starą wersję tailscale (w chwili pisania tego opisu - OpenWrt 21.02 ma wersję 1.12.3, a dostępna jest już 1.16.2), która niezbyt chętne chce współpracować z nowymi wersjami. Wymagana jest więc własnoręczna kompilacja lub oczekiwanie na pojawienie się nowszej wersji w repozytorium.
Zakładanie konta
Generalnie tailscale jest płatne, ale - podobnie jak wspomniany zerotier - posiada darmowy plan pozwalający na jednego użytkownika dołączyć do 20 urządzeń i jeden router z podsiecią. Dla domowych rozwiązań to wystarczy, bo możemy zainstalować to na telefonie, laptopie, tablecie i routerze i tym samym mieć dostęp do swojej sieci z dowolnego miejsca.
Zaczynamy od założenia konta na Tailscale. Wykorzystujemy autoryzacje przez Google, Microsoft lub githuba (jeden z nich zapewne mamy) i na początek nie musimy robić nic więcej. Na ekranie dostępne są informacje jak to zainstalować i skonfigurować na poszczególnych systemach - tego już nie będę opisywał, bo jest to bardzo proste. Wspomnę tylko że tailscale chodzi na Windowsach, MacOS, Linuksie, Androidzie, NASach, routerach a także ma wsparcie np. w HomeAssistancie.
Instalacja na OpenWrt
Po prostu instalujemy odpowiedni pakiet:
opkg update
opkg install tailscale
/etc/init.d/tailscale enable
/etc/init.d/tailscale startPamiętajmy o uwadze z początku opisu - w repo może być stara wersja, więc o ile taki pakiet podłączony się do sieci to może nie być transmisji pomiędzy urządzeniami.
Teraz wystarczy uwierzytelnić urządzenie:
tailscale upPojawi się link, wpisujemy go do przeglądarki, podajemy dane konta i już mamy gotowego vpna! Coś za prosto, prawda?
Diagnostyka
Kilkoma poleceniami można sprawdzić połączenie:
root@MiFi:~# tailscale status
100.xxx.xxx.xxx mifi cezary.jackiewicz@ linux -
100.xxx.xxx.xxx android cezary.jackiewicz@ android -
100.xxx.xxx.xxx laptop cezary.jackiewicz@ linux idle, tx 1378708 rx 102972
root@MiFi:~# tailscale ping laptop
pong from laptop (100.xxx.xxx.xxx) via 192.168.11.229:41641 in 12ms
Więc działa. Teraz można z dowolnego urządzenia podłączonego do vpn wejść na adres IP danego urządzenia, zrobić ssh itd.
Klucze
Domyślnie klucze autoryzacyjne wygasają po maksymalnie 180 dniach i urządzenia należy ponownie uwierzytelnić w sieci. Jest to dość uciążliwe jeżeli mamy jakieś urządzenie mobilne/zdalne do którego nie mamy bezpośredniego dostępu. Na szczęście jest na to sposób - w panelu tailscale klikamy "trzy poziome kropki" przy danym urządzeniu i wybieramy z menu "Disable key expiry" i mamy problem z głowy.
Jak zwykle polecam zapoznać się z dokumentacją Tailscale.
EDIT: po kilku latach tailscale zostało przepisane do współpracy z nftables, niestety wymaga to także instalacji dodatkowych pakietów (dla 23.05 i późniejszych wydań):
opkg install iptables-nft kmod-ipt-conntrack kmod-ipt-conntrack-extra kmod-ipt-conntrack-label kmod-nft-nat kmod-ipt-natTailscale umożliwia także:
- rozgłaszanie podsieci: --advertise-routes 192.168.1.0/24
- rozgłaszanie jako węzeł wyjściowy: --advertise-exit-node
- akceptowanie tras rozgłaszanych przez inne węzły: --accept-routes
Choć aby większość w/w opcji działała wymagana jest także konfiguracji sekcji w networku, firewallu oraz zezwolenie na forwarding pakietów pomiędzy tailscale a lan. Więcej informacji: https://openwrt.org/docs/guide-user/ser … cale/start