Preklop Pi-ja z Wi-Fi na kabel je videti petminutno delo in to ostane le, če premik obravnavate kot štiri ločene nastavitve namesto ene. Ime končne točke, ki jo kličejo vaši odjemalci, lahko ostane povsem enako, medtem ko se naslov pod njim spremeni. Kar se v resnici zlomi, je poslušalec, pripet na stari naslov, posredovanje vrat, še vedno usmerjeno na brezžični zakup, ali povratna pot, ki odide skozi vmesnik, za katerega ste mislili, da ste ga upokojili. Ta vodnik drži pot za obnovitev odprto na vsakem koraku, zato neuspešen prehod stane le ponovni zagon.

Zapišite štiri odgovorne, preden karkoli odklopite

Štiri nastavitve odločajo, ali prehod preživi: naslov Pi-ja, naslov vezave OpenVPN, cilj preusmeritve usmerjevalnika in pot, ki jo uberejo odgovori. Zapišite vse štiri, preden se dotaknete kabla, ker ko brezžični zakup izgine, starih vrednosti ne morete več prebrati s stroja. Kabilni vmesnik ne podeduje brezžičnega profila, na Bookwormu pa naslov živi v NetworkManagerju, medtem ko ga Bullseye hrani v dhcpcd.conf. Rezervacija, ki je pripenjala brezžični naslov MAC, ne pove ničesar o eth0. Novi naslov obravnavajte kot novo dodelitev, ki potrebuje svoj dokaz.

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

Poslušalec je drugi odgovorni. Če je bila storitev zagnana s točno določenim naslovom vezave, socket umre s starim vmesnikom; če veže vse naslove, socket preživi in pravilo usmerjevalnika postane edina stvar, ki jo je treba popraviti.

Cilj preusmeritve in povratna pot sta odgovorna, ki jih ljudje preskočijo. Posredovanje, ki še vedno kaže na 10.42.7.24, pošilja prihajajoče rokovanja na naslov, ki ga Pi nima več, zato odjemalcem poteče čas brez ene same vrstice dnevnika na strežniku. Povratna pot je pomembna, ko sta oba povezavi za kratek čas aktivni, ker Pi odgovarja skozi vmesnik, ki mu daje prednost usmerjevalna tabela, in to ni vedno tisti, po katerem je paket prispel. Spodnje iskanje poti pokaže, kateri vir izbere jedro.

Preberite dejanski socket, preden zaupate novemu naslovu

Konfiguracijske datoteke opisujejo namen in socket opisuje resničnost. Vprašajte delujočo storitev, na kaj je vezana, namesto da zaupate konfiguraciji, ki se je spomnite. Priročnik OpenVPN 2.6 definira --local kot vezavo na en naslov in ugotavlja, da izpuščanje veže vsak vmesnik.

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

Preberite stolpec lokalnega naslova namesto stolpca stanja. Vrstica, ki prikazuje 10.42.7.24:1194 pomeni, da je socket pripet na naslov, ki ga boste pravkar odstranili, medtem ko 0.0.0.0:1194 ali *:1194 pomeni, da bo demon spremembo vmesnika sledil sam. Če je naslov pripet, uredite profil in znova zaženite enoto, namesto da bi živi socket prepisali ročno, nato pa potrdite, da storitev še vedno doseže svoje datoteke s potrdilom in ključem.

Premik opravite v vrstnem redu, ki vas ohrani dosegljive

Vrstni red je tu pomembnejši od hitrosti. Dvignite kabilno povezavo, dokler brezžična še deluje, potrdite novi naslov in povratno pot, nato pa upokojite brezžični profil. To zaporedje drži delujočo sejo odprto, dokler nadomestilo ni dokazano.

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

Prvi ukaz odgovori, ali je eth0 prejel naslov, ki ste ga nameravali, drugi pa izpiše izvorni naslov, ki bi ga jedro uporabilo za zunanji cilj, zato ga zaženite pred spremembo in po njej. Če je ta vir še vedno brezžični naslov, kabilna povezava še ni prednostna pot in test od zunaj bo spodletel zaradi razloga, ki nima nič skupnega z OpenVPN. Popravite prednost usmerjanja, preden se dotaknete posredovanja.

Ko sta oba povezavi aktivni, lahko Pi raje izbere privzeto brezžično pot, ker je bila nameščena prva ali ker ima kabilna povezava višjo metriko. Na Bookwormu je podprta nastavitev ipv4.route-metric na povezavi, na Bullseye pa je ustreznica vrstica metric, specifična za vmesnik, v dhcpcd.conf. Degradirajte brezžično povezavo, namesto da bi jo onemogočili, da pot za razveljavitev ostane en ukaz stran.

Dokažite tunel od zunaj, ne iz LAN-a

Povezava VPN, ki deluje s kavča, dokaže manj, kot se zdi. Promet iz notranjosti LAN-a na javni naslov gre skozi pravila hairpin ali odboja, ki jih usmerjevalniki izvajajo nedosledno, zato lahko uspešen test v LAN-u sobiva s pokvarjeno potjo od zunaj. Za sprejemni test uporabite telefon na mobilnih podatkih ali katerega koli gostitelja zunaj omrežja. Poskus v LAN-u obdržite kot ločeno neobvezno diagnostiko.

Nato berite dnevnik v vrstnem redu, v katerem prihajajo paketi. Popolnoma nič pomeni, da rokovanje ni nikoli doseglo Pi-ja, zato je cilj preusmeritve ali požarni zid gostitelja napačen. Rokovanje, ki se začne in obstane, kaže na ključe, potrdila ali MTU. Seja, ki se dokonča in pade, običajno pomeni povratno pot ali drugo privzeto pot, vrstica dnevnika odjemalca Initialization Sequence Completed pa vam pove, da se je tunel sam dvignil.

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

Če se v dnevniku strežnika ne pojavi nič, medtem ko odjemalec poskuša znova, prenehajte brati konfiguracijo OpenVPN in se vrnite k cilju preusmeritve. Zajem odgovori na vprašanje prihoda v nekaj sekundah, prihajajoči paketi brez odgovora pa zožijo težavo na pot.

Ohranite razveljavitev v enem koraku in upokojite brezžični profil

Pustite brezžični profil nameščen, dokler kabilna ureditev ne prestane ponovnega zagona. nmcli con show navaja imena profilov, ki jih boste potrebovali, izbrisani profil pa je treba v najslabšem trenutku obnoviti iz spomina. Zapišite ime vmesnika, način naslavljanja in metriko ob drugih štirih vrednostih. Razveljavitev, ki jo lahko vtipkate iz opombe, je vredna več kot tista, ki jo morate obnoviti.

Upokojitev brezžične odvisnosti je sprememba lastnosti, ne izbris. Z nastavitvijo connection.autoconnect no ostanejo poverilnice in zgodovina naslovov nedotaknjene, Pi-ju pa je onemogočeno, da bi se znova povezal z omrežjem, s katerega ste odšli.

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

Preden delo razglasite za končano, potrdite štiri stvari: cilj preusmeritve se ujema s kabilnim naslovom, poslušalec je prestal ponovni zagon, odjemalec od zunaj dokonča rokovanje in Pi po ponovnem zagonu še vedno odgovarja na kabilnem naslovu. Ponovni zagon je najcenejši način, da ujamete dodelitev, ki je obstajala le v delujočem jedru. Če katera od štirih spodleti, znova dvignite brezžični profil z sudo nmcli con up in primerjajte zabeležene vrednosti z aktivnimi.

Sorodni članki