Raspberry Pi jaoks, mis peab kaitsma ainult oma väljuvat liiklust, on kaks realistlikku lahendust: lase võrguhalduril tunnelit omada või hoia skripti, mis seda omab. Mõlemad suudavad liiklust kanda. Nad ebaõnnestuvad eri kohtades ja rike, mida saate kell kaks öösel kaugelt diagnoosida, on see, mida tasub valida. Võrrelge neid omandi, täistunneli tähenduse järgi, kui IPv6 ja DNS on mängus, ja selle järgi, mis juhtub hetkel, kui tunnel maha kukub.

Kaks omanikku ühele tunnelile

Lahendus A on profiil süsteemi võrguhalduri sees: imporditud OpenVPN profiil või natiivne WireGuard-ühendus, mille aktiveerib käivitamisel sama teenus, mis tõstab Etherneti ja Wi-Fi. Lahendus B on teie enda üksus, mis käivitab kliendi otse, muudab resolveri konfiguratsiooni ning paigaldab oma marsruudid ja tulemüürireeglid. Mõlemad on legitiimsed lahendused; need erinevad selle poolest, kellel on lubatud marsruutimistabelit muuta.

Rikked erinevad, sest omanikud erinevad. A puhul jätab profiil, mis ei aktiveeru, liidese üles ja tunneli alla ning halduri logid ütlevad, miks. B puhul jätab poolenisti õnnestunud skript maha marsruudid, mis elavad üle selle loonud protsessi. Mõlema käitamine on halvim tulemus: kaks protsessi kirjutavad vaikemarsruuti, kaks resolveri muudatust võistlevad käivitamisel ja kaks komplekti saladusi tuleb roteerida.

Valige üks omanik tunneli kohta ja lülitage teine enne testimist välja. Kaks omanikku tähendab ka kahte kohta, kuhu vaadata, kui tunnel on üleval ja miski ei lahene. See üks reegel hoiab ära enamiku Pi VPN-i lõimedes kirjeldatud segastest olekutest.

Mida import loob ja mida mitte

Raspberry Pi OS Bookwormis ja hiljem on vaikimisi võrgukonfiguratsiooni tööriist NetworkManager, seega on profiil klienditunneli loomulik kodu. Import vajab paigaldatud sobivat pistikprogrammi; ilma selleta ebaõnnestub import teatega toetamata ühenduse tüübi kohta, mis on aus signaal peatuda ja pistikprogramm paigaldada.

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

Import salvestab profiili. See ei tõesta, et teine pool on kättesaadav, ega garanteeri, et iga failis olev direktiiv konversiooni üle elas. Lugege saadud ühendus uuesti läbi ja kontrollige osi, mis kannavad identiteeti ja usaldust: sertifikaat, kaugserver ja port ning kas parooli küsitakse või salvestatakse.

Aktiveerimine valikuga --ask hoiab paroolifraasi shelli ajaloost väljas jagatud masinas. Järelevalveta Pi puhul tahate lõpuks, et profiil tõuseks käivitamisel, mis on eraldi otsus ühekordsest käsitsi tõstmisest.

Täistunnel mõlema lahenduse võrdluses

Täistunnel on väide marsruutide, mitte kavatsuse kohta, ja kaks lahendust väljendavad seda erinevalt. Profiililähenemine palub halduril paigaldada vaikemarsruut ja oma resolveri seaded; skriptilähenemine teeb seda, mida skript ütleb, sealhulgas mitte midagi. Kumbki lahendus ei kata IPv6-t, kui seda ei öelda, ja puutumata IPv6 vaikemarsruut veab rõõmsalt liiklust väljapoole tunnelit, samal ajal kui IPv4 paistab täiuslik.

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

Kasutage marsruudi päringuks dokumentatsiooni aadressi ja asendage see hostiga, mida tohib kontrollida. Esimene käsk näitab, millist liidest Pi tavalise sihtkoha jaoks kasutaks; teine näitab, kas IPv6 vaikemarsruut on veel olemas; kolmas tõestab, milline resolver vastas. Lugege kõiki kolme, enne kui usute ükskõik millist väidet täistunneli kohta.

Kui teenusepakkuja juhised lubavad täistunnelit, aga IPv6 vaikemarsruut jääb alles, lekitab Pi. Lülitage IPv6 ühenduskanalil välja või paluge profiilil seda nõuda, ja otsustage teadlikult, selle asemel et seda hiljem avastada.

Avatud rike versus suletud

Kui tunnel maha kukub, langeb marsruutimistabel, mis kaotab oma vaikemarsruudi, lihtsalt tagasi füüsilisele ühenduskanalile ja liiklus jätkub avatult. See on avatud rike ja see on mõlema lahenduse vaikekäitumine, kui miski ei takista. Enamik inimesi avastab selle nädalaid hiljem tulemüüri logi lugedes.

Suletud rike maksab teile tunnelilanguse ajal kaugjuurdepääsu, seega vajab see haldustee jaoks teadlikku erandit. Üks viis on reegel, mis lubab väljaspool tunnelit ainult VPN-i partneri aadressi:

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

Võrrelge kasutuskulu ausalt. Profiil ei suuda seda reeglit tavaliselt väljendada, seega lükkab suletud rike teid skriptilahenduse või väikese üksuse poole, mis paigaldab reegli tunnelist sõltumatult. Igal juhul logige keeldumisi nädala jooksul: vaikne keeldumine näeb välja täpselt nagu katkine teenus ja teil on vaja loendurit, kui kasutaja teatab, et üks sait lakkas laadimast.

Valik ekraanita Pi jaoks

Kui kujutis juba käitab NetworkManageri, tunnel ei vaja midagi eksootilist ja soovite, et see järgiks ühenduskanalit automaatselt, võtke profiil. Kui vajate poliitikapõhist marsruutimist, mitut sihtkoha järgi valitavat tunnelit või suletud rikke reeglit, mis peab olema olemas enne tunneli tõusmist, võtke skript ja omage selle iga osa, sealhulgas käivitumisjärjekord ja puhastamine. Kahe lahenduse segamine maksab rohkem kui kumbki eraldi.

Nende vahel migreerimine on peamiselt järjekorra küsimus: lülitage vana omanik välja, kinnitage, et ükski aegunud marsruut ega resolveri kirje pole alles, seejärel lubage uus ja taaskäivitage kaks korda. Üks taaskäivitus võib peita võidujooksu, mille teine paljastab. Lõpetage Pi, mitte tunneli testimisega: lahendage nimi, hankige midagi IPv4 kaudu, hankige IPv6 kaudu, kui jätsite selle alles, seejärel laske tunnel maha ja kinnitage, et valitud käitumine tõesti juhtub. Liides käsus ip link on testi algus, mitte lõpp.

Seotud artiklid