Om die Pi van Wi-Fi na 'n kabel te ruil lyk soos 'n vyf-minuut-taak, en dit bly so net as jy die skuif as vier afsonderlike instellings behandel eerder as een. Die eindpuntnaam wat jou kliënte skakel kan presies dieselfde bly terwyl die adres daaronder verander. Wat werklik breek is 'n luisteraar wat aan die ou adres vasgepen is, 'n port forwarding wat nog op die draadlose lease gemik is, of 'n terugroete wat deur die koppelvlak vertrek wat jy gedink het jy het afgetree. Hierdie deurloop hou 'n herstelpad by elke stap oop, sodat 'n mislukte oorskakeling net 'n herlaai kos.

Teken die vier eienaars aan voordat jy enigiets ontkoppel

Vier instellings bepaal of die oorskakeling oorleef: die Pi-adres, die OpenVPN-bindadres, die router se herleidingsdoel en die pad wat antwoorde neem. Skryf al vier neer voordat jy die kabel aanraak, want sodra die draadlose lease verdwyn, kan jy nie die ou waardes van die masjien af lees nie. Die bedrade koppelvlak erf nie die draadlose profiel nie, en op Bookworm woon die adres in NetworkManager terwyl Bullseye dit in dhcpcd.conf hou. 'n Bespreking wat die draadlose MAC-adres vasgepen het, sê niks oor eth0. Behandel die nuwe adres as 'n nuwe toekenning wat sy eie bewys nodig het.

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

Die luisteraar is die tweede eienaar. As die diens met 'n spesifieke bindadres begin is, sterf die socket saam met die ou koppelvlak; as dit alle adresse bind, oorleef die socket en word die router-reël die enigste ding wat oor is om reg te maak.

Die herleidingsdoel en die terugpad is die eienaars wat mense oorslaan. 'n Forwarding wat nog op 10.42.7.24 wys, stuur aankomende handshakes na 'n adres wat die Pi nie meer het nie, so kliënte time uit sonder enige logreël aan die bedienerkant. Die terugpad maak saak wanneer beide skakels kortliks op is, want die Pi antwoord vanuit die koppelvlak wat die roetertabel verkies, en dit is nie altyd die een waarop die pakket aangekom het nie. Die roete-soektog hieronder wys watter bron die kernel kies.

Lees die werklike socket voordat jy die nuwe adres vertrou

Konfigurasielêers beskryf die bedoeling en die socket beskryf die werklikheid. Vra die lopende diens waaraan dit gebind is eerder as om die konfigurasie te vertrou wat jy onthou. Die OpenVPN 2.6-handleiding definieer --local as binding aan een adres en merk op dat die weglating daarvan elke koppelvlak bind.

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

Lees die kolom vir die plaaslike adres eerder as die statuskolom. 'n Reël wat 10.42.7.24:1194 wys beteken die socket is vasgepen aan die adres wat jy op die punt is om te verwyder, terwyl 0.0.0.0:1194 of *:1194 beteken die daemon sal die koppelvlakverandering self volg. As die adres vasgepen is, wysig die profiel en herbegin die eenheid eerder as om die lewende socket met die hand te herskryf, en bevestig dan dat die diens steeds by sy sertifikaat- en sleutellêers uitkom.

Stap die skuif in 'n volgorde wat jou bereikbaar hou

Orde maak hier meer saak as spoed. Bring die bedrade skakel op terwyl die draadlose een nog werk, bevestig die nuwe adres en die terugpad, en tree dan die draadlose profiel af. Daardie volgorde hou 'n werkende sessie oop tot die vervanging bewys is.

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

Die eerste opdrag antwoord of eth0 die adres gekry het wat jy bedoel het, en die tweede druk die bronadres wat die kernel vir 'n bestemming buite die netwerk sou gebruik, so hardloop dit voor en na die verandering. As daardie bron nog die draadlose adres is, is die bedrade skakel nog nie die voorkeurpad nie en sal die toets van buite misluk om 'n rede wat niks met OpenVPN te doen het nie. Maak die roetevoorkeur reg voordat jy die forwarding aanraak.

Met albei skakels op mag die Pi die draadlose verstekroete verkies omdat dit eerste geïnstalleer is of omdat die bedrade skakel 'n hoër metriek dra. Op Bookworm is die ondersteunde knop ipv4.route-metric op die verbinding, en op Bullseye is die ekwivalent 'n koppelvlakspesifieke metric-reël in dhcpcd.conf. Verlaag die draadlose skakel eerder as om dit te deaktiveer, sodat die terugrolpad een opdrag weg bly.

Bewys die tonnel van buite, nie vanaf die LAN nie

'n VPN-verbinding wat van die bank af werk, bewys minder as wat dit lyk. Verkeer van binne die LAN na die openbare adres gaan deur hairpin- of weerkaatsingsreëls wat routers inkonsekwent implementeer, so 'n geslaagde LAN-toets kan saambestaan met 'n stukkende pad van buite. Gebruik 'n selfoon op sellulêre data, of enige gasheer buite die netwerk, vir die aanvaardingstoets. Hou die LAN-poging as 'n aparte opsionele diagnose.

Lees dan die log in die volgorde waarin die pakkette aankom. Niks hoegenaamd beteken die handshake het die Pi nooit bereik nie, so die herleidingsdoel of die gasheer-firewall is verkeerd. 'n Handshake wat begin en vassteek wys op sleutels, sertifikate of MTU. 'n Sessie wat voltooi en val beteken gewoonlik die terugpad of 'n tweede verstekroete, en die kliënt se logreël Initialization Sequence Completed vertel jou die tonnel self het opgekom.

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

As niks in die bedienerlog verskyn terwyl die kliënt weer probeer nie, stop om OpenVPN-konfigurasie te lees en gaan terug na die herleidingsdoel. Die opname beantwoord die aankomsvraag binne sekondes, en inkomende pakkette sonder antwoord vernou die probleem na die roete.

Hou 'n een-stap-terugrol en tree die draadlose profiel af

Los die draadlose profiel geïnstalleer tot die bedrade reëling 'n herlaai deurstaan het. nmcli con show lys die profielname wat jy sal nodig kry, en 'n verwyderde profiel moet op die slegste oomblik uit die geheue herbou word. Teken die koppelvlaknaam, die adresmetode en die metriek langs die ander vier waardes aan. 'n Terugrol wat jy uit 'n nota kan tik is meer werd as een wat jy moet herkonstrueer.

Om die draadlose afhanklikheid af te tree is 'n eienskapverandering eerder as 'n verwydering. Om connection.autoconnect no te stel hou die geloofsbriewe en die adresgeskiedenis ongeskonde terwyl die Pi verhoed word om weer aan 'n netwerk te koppel waarvan jy weggeskuif het.

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

Voordat jy die werk as klaar beskou, bevestig vier dinge: die herleidingsdoel pas by die bedrade adres, die luisteraar het 'n herstart oorleef, 'n kliënt van buite voltooi 'n handshake, en die Pi antwoord steeds op die bedrade adres ná 'n herlaai. 'n Herlaai is die goedkoopste manier om 'n toekenning te betrap wat net in die lopende kernel bestaan het. As enige van die vier misluk, bring die draadlose profiel terug met sudo nmcli con up en vergelyk die aangetekende waardes met die lewende.

Verwante artikels