Raspberry Pi, ki mora zaščititi samo svoj lastni odhodni promet, ima dva realistična načrta: pustite omrežnemu upravitelju, da ima tunel v lasti, ali obdržite skripto, ki ga ima. Oba lahko prenašata promet. Spodletita na različnih mestih, in okvara, ki jo lahko diagnosticirate na daljavo ob dveh zjutraj, je tista, ki se je vredno odločiti. Primerjajte ju po lastništvu, po tem, kaj pomeni polni tunel, ko sta vpletena IPv6 in DNS, in po tem, kaj se zgodi v trenutku, ko tunel pade.

Dva lastnika za en tunel

Načrt A je profil znotraj sistemskega omrežnega upravitelja: uvožen profil OpenVPN ali izvorna povezava WireGuard, ki jo ob zagonu aktivira ista storitev, ki dvigne Ethernet in Wi-Fi. Načrt B je vaša lastna enota, ki odjemalca zažene neposredno, ureja konfiguracijo razreševalnika in namesti svoje poti in pravila požarnega zidu. Oba sta legitimna; razlikujeta se po tem, kdo sme spreminjati usmerjevalno tabelo.

Okvare se razlikujejo, ker se lastniki razlikujejo. Pri A profil, ki se ne aktivira, pusti vmesnik gor in tunel dol, upraviteljevi dnevniki pa povedo zakaj. Pri B skripta, ki uspe na pol, pusti poti, ki preživijo proces, ki jih je ustvaril. Poganjati oboje je najslabši izid: dva procesa pišeta privzeto pot, dve urejanji razreševalnika tekmujeta ob zagonu in dva niza skrivnosti je treba zamenjati.

Izberite enega lastnika na tunel in onemogočite drugega, preden kar koli preizkusite. Dva lastnika pomenita tudi dve mesti za ogled, ko je tunel gor in se nič ne razreši. To eno pravilo prepreči večino zmedenih stanj, opisanih v nitih o Pi VPN.

Kaj uvoz ustvari in kaj ne

V Raspberry Pi OS Bookworm in novejših je privzeto orodje za konfiguracijo omrežja NetworkManager, zato je profil naravni dom za odjemalski tunel. Uvoz zahteva nameščen ustrezen vtičnik; brez njega uvoz spodleti s sporočilom o nepodprti vrsti povezave, kar je pošten signal, da se ustavite in vtičnik namestite.

nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name

Uvoz shrani profil. Ne dokazuje, da je druga stran dosegljiva, in ne zagotavlja, da je vsaka direktiva v datoteki preživela pretvorbo. Preberite nastalo povezavo in preverite dele, ki nosijo identiteto in zaupanje: potrdilo, oddaljeni gostitelj in vrata ter ali se geslo zahteva ali shrani.

Aktiviranje s --ask obdrži geslo zunaj zgodovine lupine na deljenem stroju. Za Pi brez nadzora boste sčasoma želeli, da se profil dvigne ob zagonu, kar je ločena odločitev od enkratnega ročnega dviga.

Polni tunel v primerjavi obeh načrtov

Polni tunel je trditev o poteh, ne o nameri, in oba načrta ga izražata različno. Pristop s profilom prosi upravitelja, da namesti privzeto pot in svoje nastavitve razreševalnika; pristop s skripto naredi, kar reče skripta, vključno z ničemer. Noben načrt ne pokriva IPv6, če mu tega ne rečemo, in nedotaknjena privzeta pot IPv6 bo z veseljem prenašala promet zunaj tunela, medtem ko je IPv4 videti brezhiben.

ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org

Za iskanje poti uporabite dokumentacijski naslov in ga zamenjajte z gostiteljem, ki ga smete preveriti. Prvi ukaz pokaže, kateri vmesnik bi Pi uporabil za običajni cilj; drugi pokaže, ali privzeta pot IPv6 še obstaja; tretji dokaže, kateri razreševalnik je odgovoril. Preberite vse tri, preden verjamete kateri koli trditvi o polnem tunelu.

Če navodila ponudnika obljubljajo polni tunel, a privzeta pot IPv6 preživi, Pi pušča. Onemogočite IPv6 na navzgornji povezavi ali prosite profil, naj jo zahteva, in odločite se zavestno, namesto da bi to odkrili pozneje.

Odprta okvara proti zaprti

Ko tunel pade, se usmerjevalna tabela, ki izgubi privzeto pot, preprosto vrne na fizično navzgornjo povezavo in promet se nadaljuje odkrito. To je odprta okvara in to je privzeto vedenje obeh načrtov, če tega ne prepreči nič. Večina ljudi to odkrije tedne pozneje ob branju dnevnika požarnega zidu.

Zaprta okvara vas stane oddaljenega dostopa, ko je tunel dol, zato potrebuje zavestno izjemo za pot upravljanja. Eden od načinov je pravilo, ki zunaj tunela dovoli samo naslov partnerja VPN:

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

Primerjajte obratovalne stroške pošteno. Profil običajno ne more izraziti tega pravila, zato zaprta okvara vas potisne k načrtu s skripto ali k majhni enoti, ki pravilo namesti neodvisno od tunela. V vsakem primeru teden dni beležite zavrnitve: tiha zavrnitev je videti enako kot pokvarjena storitev, števec pa boste potrebovali, ko bo uporabnik poročal, da se eno spletišče ni več naložilo.

Izbira za Pi brez zaslona

Če slika že poganja NetworkManager, tunel ne potrebuje nič eksotičnega in želite, da samodejno sledi navzgornji povezavi, vzemite profil. Če potrebujete usmerjanje po pravilnikih, več tunelov, izbranih glede na cilj, ali pravilo zaprte okvare, ki mora obstajati, preden se tunel dvigne, vzemite skripto in imejte v lasti vsak njen del, vključno z vrstnim redom zagona in čiščenjem. Mešanje obeh načrtov stane več kot kateri koli sam.

Selitev med njima je predvsem vprašanje vrstnega reda: onemogočite starega lastnika, potrdite, da ni preživela nobena zastarela pot ali vnos razreševalnika, nato omogočite novega in dvakrat znova zaženite. En sam ponovni zagon lahko skrije tekmo, ki jo razkrije drugi. Končajte s preizkušanjem Pi, ne tunela: razrešite ime, pridobite nekaj po IPv4, pridobite po IPv6, če ste ga obdržali, nato spustite tunel in potrdite, da se izbrano vedenje res zgodi. Vmesnik v ip link je začetek preizkusa, ne konec.

Sorodni članki