Pi com a client VPN: un gestor o un script propi?
Compareu un perfil de NetworkManager amb un script de client fet a mà en una Raspberry Pi, incloent-hi el túnel complet, DNS, IPv6 i el comportament quan cau el túnel.
Una Raspberry Pi que només ha de protegir el seu propi trànsit de sortida té dos dissenys realistes: deixar que el gestor de xarxa posseeixi el túnel, o mantenir un script que el posseeixi. Tots dos poden transportar trànsit. Fallen en llocs diferents, i la fallada que podeu diagnosticar en remot a les dues de la matinada és la que val la pena triar. Compareu-los en la propietat, en què significa un túnel complet quan hi entren IPv6 i DNS, i en què passa en el moment que cau el túnel.
Dos propietaris per a un túnel
El disseny A és un perfil dins del gestor de xarxa del sistema: un perfil OpenVPN importat o una connexió WireGuard nativa, activada a l’arrencada pel mateix servei que aixeca Ethernet i Wi-Fi. El disseny B és una unitat pròpia que executa el client directament, edita la configuració del resolutor i instal·la les seves pròpies rutes i regles de tallafoc. Tots dos són dissenys legítims; es diferencien en qui té permís per canviar la taula d’encaminament.
Les fallades difereixen perquè els propietaris difereixen. Amb A, un perfil que no s’activa deixa la interfície aixecada i el túnel caigut, i els registres del gestor diuen per què. Amb B, un script que té èxit a mitges deixa rutes que sobreviuen al procés que les va crear. Executar tots dos és el pitjor resultat: dos processos escrivint la ruta per defecte, dues edicions del resolutor competint a l’arrencada i dos conjunts de secrets per rotar.
Trieu un propietari per túnel i desactiveu l’altre abans de provar res. Dos propietaris també volen dir dos llocs on mirar quan el túnel és aixecat i no es resol res. Aquesta única regla evita la majoria dels estats confusos descrits als fils de Pi VPN.
Què crea una importació i què no
A Raspberry Pi OS Bookworm i posteriors, l’eina de configuració de xarxa per defecte és NetworkManager, així que un perfil és la llar natural per a un túnel de client. La importació necessita el connector corresponent instal·lat; sense ell la importació falla amb un missatge sobre un tipus de connexió no suportat, que és el senyal honest per aturar-se i instal·lar el connector.
nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name
Importar desa un perfil. No demostra que l’altre costat sigui abastable, i no garanteix que cada directiva del fitxer hagi sobreviscut a la conversió. Llegiu la connexió resultant i reviseu les parts que porten identitat i confiança: el certificat, l’amfitrió remot i el port, i si es demana o s’emmagatzema una contrasenya.
L’activació amb --ask manté una frase de pas fora de l’historial de l’intèrpret en una màquina compartida. Per a una Pi sense supervisió, al final voldreu que el perfil s’aixequi a l’arrencada, cosa que és una decisió separada d’aixecar-lo una vegada a mà.
Túnel complet, comparat en tots dos dissenys
Un túnel complet és una afirmació sobre rutes, no sobre intencions, i els dos dissenys l’expressen de manera diferent. L’enfocament amb perfil demana al gestor que instal·li una ruta per defecte i els seus paràmetres de resolutor; l’enfocament amb script fa el que diu l’script, incloent-hi no res. Cap dels dos dissenys cobreix IPv6 si no se li diu, i una ruta per defecte IPv6 intacta portarà alegrement trànsit fora del túnel mentre IPv4 sembla perfecte.
ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org
Feu servir una adreça de documentació per a la consulta de ruta i substituïu-la per un amfitrió que tingueu permís de provar. La primera ordre mostra quina interfície faria servir la Pi per a una destinació ordinària; la segona mostra si encara existeix una ruta per defecte IPv6; la tercera demostra quin resolutor ha respost. Llegiu les tres abans de creure cap afirmació sobre un túnel complet.
Si les instruccions del proveïdor prometen un túnel complet però la ruta per defecte IPv6 sobreviu, la Pi té una fuita. Desactiveu IPv6 a l’enllaç ascendent o demaneu al perfil que el reclami, i decidiu-ho deliberadament en lloc de descobrir-ho més tard.
Fallada oberta contra fallada tancada
Quan el túnel cau, una taula d’encaminament que perd la ruta per defecte simplement torna a l’enllaç ascendent físic, i el trànsit continua en clar. Això és fallada oberta, i és el comportament per defecte dels dos dissenys tret que alguna cosa ho impedeixi. La majoria de la gent ho descobreix setmanes després llegint un registre del tallafoc.
La fallada tancada us costa l’accés remot quan el túnel està caigut, així que necessita una excepció deliberada per al camí de gestió. Una manera és una regla que només permet l’adreça de l’igual de VPN fora del túnel:
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
Compareu el cost operatiu amb honestedat. Un perfil normalment no pot expressar aquesta regla, així que la fallada tancada us empeny cap al disseny amb script o cap a una unitat petita que instal·la la regla independentment del túnel. En qualsevol cas, registreu els rebuigs durant una setmana: un rebuig silenciós sembla idèntic a un servei trencat, i voldreu el comptador quan un usuari informi que un lloc ha deixat de carregar.
Triar per a una Pi sense pantalla
Si la imatge ja executa NetworkManager, el túnel no necessita res exòtic i voleu que segueixi l’enllaç ascendent automàticament, preneu el perfil. Si necessiteu encaminament per polítiques, diversos túnels triats per destinació, o una regla de fallada tancada que hagi d’existir abans que el túnel s’aixequi, preneu l’script i poseu-ho tot, incloent-hi l’ordre d’arrencada i la neteja. Barrejar els dos dissenys costa més que qualsevol dels dos sol.
Migrar entre ells és sobretot una qüestió d’ordre: desactiveu el propietari antic, confirmeu que no sobreviu cap ruta ni entrada de resolutor antiga, després activeu el nou i reinicieu dues vegades. Un sol reinici pot amagar una cursa que un segon exposa. Acabeu provant la Pi en lloc del túnel: resoleu un nom, baixeu alguna cosa per IPv4, baixeu per IPv6 si l’heu conservat, després tireu el túnel i confirmeu que el comportament que heu triat passa de debò. Una interfície a ip link és el principi de la prova, no el final.