Canviar la Pi de Wi-Fi a un cable sembla una feina de cinc minuts, i només ho continua sent si tractes el canvi com quatre ajustos separats en lloc d’un. El nom del punt final que marquen els teus clients pot continuar exactament igual mentre l’adreça que hi ha a sota canvia. El que de debò es trenca és un listener fixat a l’adreça antiga, un reenviament de ports que encara apunta a la concessió sense fil, o una ruta de retorn que surt per la interfície que pensaves que havies retirat. Aquest recorregut manté oberta una ruta de recuperació a cada pas, així que un canvi fallit només costa un reinici.

Anota els quatre responsables abans de desconnectar res

Quatre ajustos decideixen si el canvi sobreviu: l’adreça de la Pi, l’adreça de vinculació OpenVPN, el destí de redirecció del router i la ruta que prenen les respostes. Anota els quatre abans de tocar el cable, perquè un cop desapareix la concessió sense fil ja no pots llegir els valors antics de la màquina. La interfície amb cable no hereta el perfil sense fil, i a Bookworm l’adreça viu a NetworkManager mentre que Bullseye la guarda a dhcpcd.conf. Una reserva que fixava l’adreça MAC sense fil no diu res sobre eth0. Tracta l’adreça nova com una assignació nova que necessita la seva pròpia prova.

Old wireless lease:   10.42.7.24/24 on wlan0
New wired address:    10.42.7.31/24 on eth0
Client endpoint:      vpn.lab.example:1194/udp

El listener és el segon responsable. Si el servei es va iniciar amb una adreça de vinculació específica, el socket mor amb la interfície antiga; si vincula totes les adreces, el socket sobreviu i la regla del router es converteix en l’única cosa que queda per arreglar.

El destí de redirecció i la ruta de retorn són els responsables que la gent s’estalvia. Un reenviament que encara apunta a 10.42.7.24 envia els handshakes entrants a una adreça que la Pi ja no té, així que els clients esgoten el temps sense cap línia de registre al servidor. La ruta de retorn importa quan tots dos enllaços estan breument actius, perquè la Pi respon des de la interfície que prefereix la taula de rutes, i no sempre és la que va rebre el paquet. La consulta de ruta de sota mostra quina font tria el kernel.

Llegeix el socket real abans de refiar-te de l’adreça nova

Els fitxers de configuració descriuen la intenció i el socket descriu la realitat. Pregunta al servei en execució a què està vinculat en lloc de refiar-te de la configuració que recordes. El manual d’OpenVPN 2.6 defineix --local com a vinculació a una adreça i assenyala que ometre-ho vincula totes les interfícies.

sudo systemctl cat openvpn-server@server | grep -n -- '--local'
sudo ss -lunp '( sport = :1194 )'

Llegeix la columna de l’adreça local en lloc de la columna d’estat. Una línia que mostra 10.42.7.24:1194 significa que el socket està fixat a l’adreça que estàs a punt d’eliminar, mentre que 0.0.0.0:1194 o *:1194 significa que el dimoni seguirà el canvi d’interfície per si sol. Si l’adreça està fixada, edita el perfil i reinicia la unitat en lloc de reescriure el socket actiu a mà, i després confirma que el servei encara arriba als seus fitxers de certificat i clau.

Recorre el canvi en un ordre que et mantingui accessible

L’ordre importa aquí més que la velocitat. Aixeca l’enllaç amb cable mentre el sense fil encara funciona, confirma l’adreça nova i la ruta de retorn, i després retira el perfil sense fil. Aquesta seqüència manté oberta una sessió operativa fins que el substitut estigui provat.

ip -br addr show eth0
ip route get 203.0.113.10
nmcli -g ipv4.method,ipv4.addresses con show "Wired connection 1"

La primera ordre respon si eth0 va rebre l’adreça que pretenies, i la segona imprimeix l’adreça d’origen que el kernel faria servir per a una destinació exterior, així que executa-la abans i després del canvi. Si aquest origen continua sent l’adreça sense fil, l’enllaç amb cable encara no és la ruta preferida i la prova des de fora fallarà per una raó que no té res a veure amb OpenVPN. Corregeix la preferència de rutes abans de tocar el reenviament.

Amb tots dos enllaços actius, la Pi pot preferir la ruta per defecte sense fil perquè es va instal·lar primer o perquè l’enllaç amb cable porta una mètrica més alta. A Bookworm el control admès és ipv4.route-metric a la connexió, i a Bullseye l’equivalent és una línia metric específica de la interfície a dhcpcd.conf. Degrada l’enllaç sense fil en lloc de desactivar-lo, perquè la ruta de reversió quedi a una ordre de distància.

Prova el túnel des de fora, no des de la LAN

Una connexió VPN que funciona des del sofà prova menys del que sembla. El trànsit des de dins de la LAN cap a l’adreça pública passa per regles de hairpin o reflexió que els routers implementen de manera inconsistent, així que una prova LAN exitosa pot conviure amb una ruta exterior trencada. Fes servir un telèfon amb dades mòbils, o qualsevol host fora de la xarxa, per a la prova d’acceptació. Mantén l’intent LAN com un diagnòstic opcional a part.

Després llegeix el registre en l’ordre en què arriben els paquets. Cap registre significa que el handshake no va arribar mai a la Pi, així que el destí de redirecció o el tallafoc de l’host està malament. Un handshake que comença i s’encalla apunta a claus, certificats o MTU. Una sessió que es completa i cau normalment significa la ruta de retorn o una segona ruta per defecte, i la línia de registre del client Initialization Sequence Completed et diu que el túnel mateix s’ha aixecat.

sudo journalctl -u openvpn-server@server -n 40 --no-pager
sudo tcpdump -ni any udp port 1194 -c 20

Si no apareix res al registre del servidor mentre el client ho reintenta, deixa de llegir la configuració d’OpenVPN i torna al destí de redirecció. La captura respon la pregunta de l’arribada en segons, i els paquets entrants sense resposta redueixen el problema a la ruta.

Mantén una reversió d’un sol pas i retira el perfil sense fil

Deixa el perfil sense fil instal·lat fins que la disposició amb cable hagi passat un reinici. nmcli con show enumera els noms de perfil que necessitaràs, i un perfil esborrat s’ha de reconstruir de memòria en el pitjor moment. Anota el nom de la interfície, el mètode d’adreça i la mètrica al costat dels altres quatre valors. Una reversió que pots escriure des d’una nota val més que una que has de reconstruir.

Retirar la dependència sense fil és un canvi de propietat en lloc d’una eliminació. En establir connection.autoconnect no es mantenen intactes les credencials i l’historial d’adreces mentre s’impedeix que la Pi es torni a connectar a una xarxa de la qual et vas allunyar.

nmcli con show
sudo nmcli con up "Wired connection 1"
sudo nmcli con mod "previously-used-wifi" connection.autoconnect no

Abans de donar la feina per acabada, confirma quatre coses: el destí de redirecció coincideix amb l’adreça amb cable, el listener va sobreviure a un reinici, un client des de fora completa un handshake, i la Pi encara respon a l’adreça amb cable després d’un reinici. Un reinici és la manera més barata de detectar una assignació que només existia al kernel en execució. Si qualsevol de les quatre falla, torna a aixecar el perfil sense fil amb sudo nmcli con up i compara els valors anotats amb els actius.

Articles relacionats