In Raspberry Pi dy’t allinnich syn eigen útgeande ferkear beskermje moat, hat twa realistyske ûntwerpen: lit de netwurkbehearder de tunnel besitte, of hâld in skript dat him besit. Beide kinne ferkear drage. Se mislearje op ferskillende plakken, en de steuring dy’t jo om twa oere nachts op ôfstân diagnostearje kinne, is dejinge dy’t it wurdich is om te kiezen. Fergelykje se op eigendom, op wat folsleine tunnel betsjut as IPv6 en DNS derby komme, en op wat der bart op it stuit dat de tunnel falt.

Twa eigeners foar ien tunnel

Ûntwerp A is in profyl yn ’e netwurkbehearder fan it systeem: in ymportearre OpenVPN-profyl of in native WireGuard-ferbining, by it opstarten aktivearre troch deselde tsjinst dy’t Ethernet en Wi-Fi omheech bringt. Ûntwerp B is in eigen ienheid dy’t de klant direkt rint, de resolver-konfiguraasje bewurket en syn eigen rûtes en firewall-regels ynstallearret. Beide binne legitime ûntwerpen; se ferskille yn wa’t de rûteringstabel feroarje mei.

De steuringen ferskille omdat de eigeners ferskille. By A lit in profyl dat net aktivearret de ynterface omheech en de tunnel omleech, en de logs fan de behearder sizze wêrom. By B lit in skript dat heal slagget rûtes efter dy’t it proses dat se makke hat, oerlibje. Beide rinne litte is de minste útkomst: twa prosessen skriuwe de standertrûte, twa resolver-bewurkings konkelen by it opstarten, en twa sets geheimens moatte rotearre wurde.

Kies ien eigener per tunnel en skeakelje de oare út foardat jo wat testen. Twa eigeners betsjut ek twa plakken om te sjen as de tunnel omheech is en neat oplost. Dy iene regel foarket de measte fan ’e betiizjende tastannen dy’t yn Pi VPN-diskusjes beskreaun wurde.

Wat in ymport makket, en wat net

Op Raspberry Pi OS Bookworm en letter is it standert netwurkkonfiguraasje-ark NetworkManager, dus in profyl is it natuerlike hiem foar in klanttunnel. Ymport fereasket de byhearrende plugin ynstallearre; sûnder dy mislearret de ymport mei in berjocht oer in net-stipe ferbiningstype, wat it earlike sinjaal is om te stopsjen en de plugin te ynstallearjen.

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

Ymport bewarret in profyl. It bewiist net dat de oare kant berikber is, en it garandearret net dat elke rjochtline yn it bestân de konverzje oerlibbe hat. Lês de resultearjende ferbining werom en kontrolearje de dielen dy’t identiteit en fertrouwen drage: it sertifikaat, de fiere host en poarte, en oft der om in wachtwurd frege of dat it bewarre wurdt.

Aktivearring mei --ask hâldt in wachtwurdsin bûten de shell-skiednis op in dielde masine. Foar in Pi sûnder tafersjoch wolle jo op ’t lêst dat it profyl by it opstarten omheech komt, wat in aparte beslissing is fan it ien kear mei de hân omheech bringen.

Folsleine tunnel, fergelike oer beide ûntwerpen

In folsleine tunnel is in bewearing oer rûtes, net oer bedoeling, en de twa ûntwerpen uterje dat oars. De profyl-oanpak freget de behearder om in standertrûte en syn resolver-ynstellingen te ynstallearjen; de skript-oanpak docht wat it skript seit, ynklusyf neat. Gjin fan beide ûntwerpen dekt IPv6 as it net sein wurdt, en in ûnoanraken IPv6-standertrûte sil noflik ferkear bûten de tunnel drage wylst IPv4 perfekt liket.

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

Brûk in dokumintaasje-adres foar it rûte-opskiepen en ferfange it troch in host dy’t jo probearje meie. It earste kommando lit sjen hokker ynterface de Pi brûke soe foar in gewoane bestimming; it twadde lit sjen oft der noch in IPv6-standertrûte is; it tredde bewiist hokker resolver antwurde. Lês alle trije foardat jo in bewearing oer in folsleine tunnel leauwe.

As de ynstruksjes fan ’e provider in folsleine tunnel ûnthjitte mar de IPv6-standertrûte oerlibbet, lekket de Pi. Skeakelje IPv6 op ’e uplink út of freegje it profyl om it te easkjen, en beslute bewust ynstee fan it letter te ûntdekken.

Fail-open tsjin fail-closed

As de tunnel falt, falt in rûteringstabel dy’t syn standertrûte ferliest gewoan werom nei de fysike uplink, en ferkear giet iepen fierder. Dat is fail-open, en it is it standertgedrach fan beide ûntwerpen, útsein as iets it foarket. De measte minsken ûntdekke it wiken letter by it lêzen fan in firewall-log.

Fail-closed kostet jo op ôfstân tagong as de tunnel omleech is, dus it hat in bewuste útsûndering nedich foar it behearspaad. Ien manier is in regel dy’t allinnich it adres fan ’e VPN-partner bûten de tunnel tastiet:

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

Fergelykje de operasjonele kosten earlik. In profyl kin dizze regel meastentiids net útdrukke, dus fail-closed triuwt jo nei it skript-ûntwerp of nei in lytse ienheid dy’t de regel ûnôfhinklik fan de tunnel ynstallearret. Hoe dan ek, log de ôfwizings in wike: in stil ôfwizing liket itselde as in brutsen tsjinst, en jo sille de teller nedich wêze as in brûker rapportearret dat ien site opholden is mei laden.

Kieze foar in Pi sûnder skerm

As de image al NetworkManager rint, de tunnel neat eksoatysk nedich hat, en jo wolle dat er de uplink automatysk folget, nim dan it profyl. As jo beliedsrûtering nedich hawwe, ferskate tunnels per bestimming keazen, of in fail-closed-regel dy’t bestean moat foardat de tunnel omheech komt, nim dan it skript en besit elk diel derfan, ynklusyf opstartfolchoarder en opromjen. De twa ûntwerpen minge kostet mear as ien fan beide allinnich.

Migrearje tusken se is meast in kwestje fan folchoarder: skeakelje de âlde eigener út, befêstigje dat gjin ferâldere rûte of resolver-ynfier oerlibbet, skeakelje dan de nije yn en herstart twa kear. Ien herstart kin in race ferbergje dy’t in twadde bleatleit. Einigje troch de Pi te testen ynstee fan de tunnel: los in namme op, helje wat oer IPv4, helje oer IPv6 as jo it holden hawwe, lit dan de tunnel falle en befêstigje dat it gedrach dat jo keazen hawwe echt bart. In ynterface yn ip link is it begjin fan ’e test, net it ein.

Relatearre artikelen