Pi kao VPN klijent: jedan upravitelj ili vlastita skripta?
Usporedite profil u NetworkManageru s ručno napisanom klijentskom skriptom na Raspberry Pi, uključujući puni tunel, DNS, IPv6 i ponašanje kada tunel padne.
Raspberry Pi kojemu treba štititi samo vlastiti odlazni promet ima dva realistična dizajna: prepustite tunel mrežnom upravitelju ili zadržite skriptu koja ga posjeduje. Oba mogu prenositi promet. Padaju na različitim mjestima, a kvar koji možete dijagnosticirati na daljinu u dva sata ujutro onaj je koji vrijedi odabrati. Usporedite ih po vlasništvu, po tome što puni tunel znači kad su uključeni IPv6 i DNS, i po tome što se događa u trenutku kad tunel padne.
Dva vlasnika za jedan tunel
Dizajn A profil je unutar mrežnog upravitelja sustava: uvezeni profil OpenVPN ili izvorna WireGuard veza, koju pri podizanju aktivira ista usluga koja podiže Ethernet i Wi-Fi. Dizajn B vaša je vlastita jedinica koja izravno pokreće klijent, uređuje konfiguraciju razlučivača i instalira vlastite rute i pravila vatrozida. Oba su legitimna dizajna; razlikuju se po tome kome je dopušteno mijenjati tablicu usmjeravanja.
Kvarovi se razlikuju jer se vlasnici razlikuju. Kod A profil koji se ne aktivira ostavlja sučelje podignuto, a tunel spušten, i upraviteljevi zapisi kažu zašto. Kod B skripta koja napola uspije ostavlja rute koje nadžive proces koji ih je stvorio. Pokretati oboje najgori je ishod: dva procesa pišu zadanu rutu, dvije izmjene razlučivača natječu se pri podizanju i dva skupa tajni treba rotirati.
Odaberite jednog vlasnika po tunelu i onemogućite drugoga prije nego što išta testirate. Dva vlasnika znače i dva mjesta za provjeru kad je tunel podignut, a ništa se ne razrješava. To jedno pravilo sprječava većinu zbunjujućih stanja opisanih u raspravama o Pi VPN-u.
Što uvoz stvara, a što ne
Na Raspberry Pi OS Bookworm i novijima zadani alat za mrežnu konfiguraciju je NetworkManager, pa je profil prirodan dom za klijentski tunel. Uvoz zahtijeva instaliran odgovarajući dodatak; bez njega uvoz ne uspijeva uz poruku o nepodržanoj vrsti veze, što je iskren signal da se zaustavite i instalirate dodatak.
nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name
Uvoz sprema profil. On ne dokazuje da je druga strana dostupna i ne jamči da je svaka direktiva u datoteci preživjela pretvorbu. Pročitajte dobivenu vezu i provjerite dijelove koji nose identitet i povjerenje: certifikat, udaljeni host i port te traži li se lozinka ili se pohranjuje.
Aktiviranje s --ask drži frazu zaporke izvan povijesti ljuske na dijeljenom računalu. Za Pi bez nadzora na kraju ćete htjeti da se profil podigne pri podizanju sustava, što je odvojena odluka od ručnog podizanja jednom.
Puni tunel, uspoređen kroz oba dizajna
Puni tunel tvrdnja je o rutama, ne o namjeri, a dva dizajna izražavaju ga različito. Pristup s profilom traži od upravitelja da instalira zadanu rutu i svoje postavke razlučivača; pristup sa skriptom čini što skripta kaže, uključujući ništa. Nijedan dizajn ne pokriva IPv6 ako mu se ne kaže, a netaknuta zadana ruta IPv6 rado će nositi promet izvan tunela dok IPv4 izgleda besprijekorno.
ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org
Rabite dokumentacijsku adresu za provjeru rute i zamijenite je hostom koji vam je dopušteno provjeravati. Prva naredba pokazuje koje bi sučelje Pi rabio za obično odredište; druga pokazuje postoji li još zadana ruta IPv6; treća dokazuje koji je razlučivač odgovorio. Pročitajte sve tri prije nego što povjerujete bilo kojoj tvrdnji o punom tunelu.
Ako upute pružatelja obećavaju puni tunel, ali zadana ruta IPv6 preživi, Pi propušta. Onemogućite IPv6 na uzlaznoj vezi ili zamolite profil da ga zatraži, i odlučite svjesno umjesto da to otkrijete kasnije.
Otvoreni kvar nasuprot zatvorenom
Kad tunel padne, tablica usmjeravanja koja izgubi zadanu rutu jednostavno se vrati na fizičku uzlaznu vezu, a promet nastavlja otvoreno. To je otvoreni kvar i to je zadano ponašanje oba dizajna ako ga nešto ne spriječi. Većina ljudi to otkrije tjednima kasnije čitajući zapis vatrozida.
Zatvoreni kvar košta vas udaljenog pristupa kad je tunel spušten, pa mu treba svjesna iznimka za put upravljanja. Jedan način je pravilo koje dopušta samo adresu VPN partnera izvan tunela:
sudo nft add table inet vpnkill
sudo nft 'add chain inet vpnkill out { type filter hook output priority 0; policy accept; }'
sudo nft add rule inet vpnkill out oifname != "tun0" ip daddr != 203.0.113.24 reject
Usporedite operativni trošak iskreno. Profil obično ne može izraziti ovo pravilo, pa zatvoreni kvar gura prema dizajnu sa skriptom ili prema maloj jedinici koja instalira pravilo neovisno o tunelu. U svakom slučaju, bilježite odbijanja tjedan dana: tiho odbijanje izgleda jednako pokvarenoj usluzi, a brojač će vam trebati kad korisnik prijavi da je jedna stranica prestala se učitavati.
Odabir za Pi bez zaslona
Ako slika već pokreće NetworkManager, tunel ne zahtijeva ništa egzotično i želite da slijedi uzlaznu vezu automatski, uzmite profil. Ako trebate usmjeravanje po politikama, nekoliko tunela odabranih po odredištu ili pravilo zatvorenog kvara koje mora postojati prije nego se tunel podigne, uzmite skriptu i posjedujte svaki njezin dio, uključujući redoslijed podizanja i čišćenje. Miješanje dvaju dizajna stoji više od bilo kojega samoga.
Migracija između njih uglavnom je pitanje reda: onemogućite starog vlasnika, potvrdite da nije ostala zastarjela ruta ni unos razlučivača, zatim omogućite novoga i dvaput se ponovno pokrenite. Jedno ponovno pokretanje može sakriti utrku koju drugo otkrije. Završite testiranjem Pi-ja, a ne tunela: razriješite ime, dohvatite nešto preko IPv4, dohvatite preko IPv6 ako ste ga zadržali, zatim spustite tunel i potvrdite da se ponašanje koje ste odabrali doista događa. Sučelje u ip link početak je testa, ne kraj.