Prepnúť Pi z Wi-Fi na kábel vyzerá ako päťminútová práca a zostane ňou len vtedy, ak presun poňmete ako štyri samostatné nastavenia namiesto jedného. Názov koncového bodu, na ktorý sa klienti pripájajú, môže zostať presne rovnaký, zatiaľ čo adresa pod ním sa mení. Čo sa naozaj pokazí, je listener pripútaný k starej adrese, presmerovanie portu stále namierené na bezdrôtový lease, alebo spiatočná trasa, ktorá vychádza cez rozhranie, ktoré ste považovali za vyradené. Tento návod drží cestu obnovy otvorenú v každom kroku, takže neúspešné prepnutie stojí len reštart.

Zapíšte si štyroch zodpovedných, kým čokoľvek odpojíte

Štyri nastavenia rozhodujú, či prechod prežije: adresa Pi, adresa naviazania OpenVPN, cieľ presmerovania routera a cesta, ktorou sa vydávajú odpovede. Zapíšte všetky štyri, kým sa dotknete kábla, pretože keď bezdrôtový lease zmizne, už staré hodnoty zo stroja neprečítate. Káblové rozhranie nededia bezdrôtový profil a na Bookworme adresa žije v NetworkManageri, zatiaľ čo Bullseye ju drží v dhcpcd.conf. Rezervácia, ktorá pripínala bezdrôtovú MAC adresu, nehovorí nič o eth0. Berte novú adresu ako nové priradenie, ktoré potrebuje vlastný dôkaz.

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

Listener je druhý zodpovedný. Ak bola služba spustená s konkrétnou adresou naviazania, socket umiera so starým rozhraním; ak naväzuje všetky adresy, socket prežije a pravidlo routera sa stane jedinou vecou, ktorú treba opraviť.

Cieľ presmerovania a spiatočná trasa sú zodpovední, ktorých ľudia preskakujú. Presmerovanie, ktoré stále ukazuje na 10.42.7.24, posiela prichádzajúce handshaky na adresu, ktorú Pi už nemá, takže klienti vypršia bez jediného riadku logu na serveri. Spiatočná trasa hrá rolu, keď sú obe spojenia krátko aktívne, pretože Pi odpovedá cez rozhranie, ktoré uprednostňuje smerovacia tabuľka, a to nie je vždy to, na ktorom paket dorazil. Vyhľadanie trasy nižšie ukazuje, ktorý zdroj jadro zvolí.

Prečítajte skutočný socket, kým novej adrese uveríte

Konfiguračné súbory opisujú zámer a socket opisuje realitu. Opýtajte sa bežiacej služby, na čo je naviazaná, namiesto toho, aby ste verili konfigurácii, ktorú si pamätáte. Príručka OpenVPN 2.6 definuje --local ako naviazanie na jednu adresu a poznamenáva, že vynechanie naväzuje každé rozhranie.

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

Čítajte stĺpec miestnej adresy namiesto stĺpca stavu. Riadok zobrazujúci 10.42.7.24:1194 znamená, že socket je pripútaný k adrese, ktorú sa chystáte odstrániť, zatiaľ čo 0.0.0.0:1194 alebo *:1194 znamená, že démon zmenu rozhrania sleduje sám. Ak je adresa pripútaná, upravte profil a reštartujte jednotku namiesto ručného prepisu živého socketu, a potom overte, že služba stále dosiahne na svoje súbory certifikátu a kľúča.

Prejdite presun v poradí, ktoré vás udrží dostupné

Poradie je tu dôležitejšie než rýchlosť. Zdvihnite káblové spojenie, kým bezdrôtové ešte funguje, potvrďte novú adresu a spiatočnú trasu a potom vyraďte bezdrôtový profil. Táto postupnosť drží funkčnú reláciu otvorenú, kým nie je náhrada preukázaná.

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

Prvý príkaz odpovedá na to, či eth0 dostal adresu, ktorú ste zamýšľali, a druhý vypisuje zdrojovú adresu, ktorú by jadro použilo pre cieľ mimo siete, takže ho spustite pred zmenou a po nej. Ak je tým zdrojom stále bezdrôtová adresa, káblové spojenie zatiaľ nie je preferovanou cestou a test zvonka zlyhá z dôvodu, ktorý s OpenVPN nemá nič spoločné. Opravte preferenciu smerovania, kým sa dotknete presmerovania.

Keď sú obe spojenia aktívne, Pi môže uprednostniť predvolenú bezdrôtovú trasu, pretože bola nainštalovaná prvá alebo pretože káblové spojenie má vyššiu metriku. Na Bookworme je podporovaným gombíkom ipv4.route-metric na pripojení, a na Bullseye je ekvivalentom riadok metric špecifický pre rozhranie v dhcpcd.conf. Degradujte bezdrôtové spojenie namiesto jeho vypnutia, aby cesta návratu zostala jeden príkaz ďaleko.

Dokážte tunel zvonka, nie z LAN

Pripojenie VPN, ktoré funguje z gauča, dokazuje menej, než sa zdá. Prevádzka zvnútra LAN na verejnú adresu prechádza pravidlami hairpin alebo odrazu, ktoré routery zavádzajú nekonzistentne, takže úspešný test v LAN môže koexistovať s pokazenou cestou zvonka. Na akceptačný test použite telefón na mobilných dátach alebo akéhokoľvek hostiteľa mimo siete. Pokus v LAN si nechajte ako samostatnú voliteľnú diagnostiku.

Potom čítajte log v poradí, v akom pakety prichádzajú. Naprosto nič znamená, že handshake sa k Pi nikdy nedostal, takže cieľ presmerovania alebo firewall hostiteľa je nesprávny. Handshake, ktorý začne a zasekne sa, ukazuje na kľúče, certifikáty alebo MTU. Relácia, ktorá sa dokončí a spadne, zvyčajne znamená spiatočnú trasu alebo druhú predvolenú trasu, a riadok logu klienta Initialization Sequence Completed vám hovorí, že tunel sám vstal.

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

Ak sa v logu servera nič neobjaví, kým to klient skúša znova, prestaňte čítať konfiguráciu OpenVPN a vráťte sa k cieľu presmerovania. Zachytenie odpovie na otázku doručenia v priebehu sekúnd a prichádzajúce pakety bez odpovede zúžia problém na trasu.

Zachovajte návrat v jednom kroku a vyraďte bezdrôtový profil

Nechajte bezdrôtový profil nainštalovaný, kým káblové usporiadanie neprejde reštartom. nmcli con show vypisuje názvy profilov, ktoré budete potrebovať, a zmazaný profil treba v najhoršej chvíli zrekonštruovať z pamäti. Zapíšte názov rozhrania, metódu adresovania a metriku vedľa ostatných štyroch hodnôt. Návrat, ktorý môžete napísať z poznámky, má väčšiu cenu než ten, ktorý musíte rekonštruovať.

Vyradenie bezdrôtovej závislosti je zmena vlastnosti, nie zmazanie. Nastavením connection.autoconnect no zostanú prihlasovacie údaje a história adries nedotknuté a Pi sa prestane znova pripájať k sieti, z ktorej ste odišli.

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

Kým prácu vyhlásite za hotovú, potvrďte štyri veci: cieľ presmerovania zodpovedá káblovej adrese, listener prežil reštart, klient zvonka dokončí handshake a Pi po reštarte stále odpovedá na káblovej adrese. Reštart je najlacnejší spôsob, ako zachytiť priradenie, ktoré existovalo len v bežiacom jadre. Ak niektorá zo štyroch zlyhá, zdvihnite bezdrôtový profil späť pomocou sudo nmcli con up a porovnajte zaznamenané hodnoty s aktívnymi.

Súvisiace články