Kako premjestiti Raspberry Pi VPN server na Ethernet
Premjestite Raspberry Pi VPN server s Wi-Fi na Ethernet bez promjene naziva krajnje točke, vezivanja listenera, prosljeđivanja porta ili putanje vraćanja u jednom koraku.
Prebacivanje Pi-ja s Wi-Fi na kabel izgleda kao posao od pet minuta i to ostaje samo ako premještanje tretirate kao četiri odvojene postavke umjesto jedne. Naziv krajnje točke koju vaši klijenti pozivaju može ostati potpuno isti dok se adresa ispod njega mijenja. Ono što se stvarno kvari jest listener prikvačen za staru adresu, prosljeđivanje porta još usmjereno na bežični lease, ili povratna ruta koja izlazi kroz sučelje koje ste mislili da ste umirovili. Ovaj vodič drži putanju oporavka otvorenom na svakom koraku, tako da neuspjeli prelazak košta samo restart.
Zapišite četiri odgovorna prije nego što bilo šta isključite
Četiri postavke odlučuju da li prelazak preživljava: adresa Pi-ja, adresa vezivanja OpenVPN, cilj preusmjeravanja rutera i putanja koju odgovori uzimaju. Zapišite sve četiri prije nego što dodirnete kabel, jer kada bežični lease nestane, stare vrijednosti više ne možete pročitati sa mašine. Kabelno sučelje ne nasljeđuje bežični profil, a na Bookwormu adresa živi u NetworkManageru dok je Bullseye drži u dhcpcd.conf. Rezervacija koja je prikvačila bežičnu MAC adresu ne govori ništa o eth0. Tretirajte novu adresu kao novu dodjelu kojoj je potreban vlastiti 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
Listener je drugi odgovorni. Ako je servis pokrenut s određenom adresom vezivanja, socket umire sa starim sučeljem; ako veže sve adrese, socket preživljava i pravilo rutera postaje jedina stvar koju treba popraviti.
Cilj preusmjeravanja i povratna ruta su odgovorni koje ljudi preskaču. Prosljeđivanje koje još pokazuje na 10.42.7.24 šalje pristigle handshakeove na adresu koju Pi više nema, pa klijenti isteku bez ijedne linije loga na strani servera. Povratna ruta je važna kada su oba linka nakratko aktivna, jer Pi odgovara kroz sučelje koje rutirajuća tablica preferira, a to nije uvijek ono na koje je paket stigao. Pretraga rute ispod pokazuje koje izvorište kernel bira.
Pročitajte stvarni socket prije nego što povjerujete novoj adresi
Konfiguracijske datoteke opisuju namjeru, a socket opisuje stvarnost. Pitajte pokrenuti servis na šta je vezan umjesto da vjerujete konfiguraciji koje se sjećate. Priručnik OpenVPN 2.6 definira --local kao vezivanje na jednu adresu i napominje da izostavljanje veže svako sučelje.
sudo systemctl cat openvpn-server@server | grep -n -- '--local'
sudo ss -lunp '( sport = :1194 )'
Čitajte kolonu lokalne adrese umjesto kolone stanja. Redak koji prikazuje 10.42.7.24:1194 znači da je socket prikvačen za adresu koju ćete upravo ukloniti, dok 0.0.0.0:1194 ili *:1194 znači da će daemon sam slijediti promjenu sučelja. Ako je adresa prikvačena, uredite profil i ponovo pokrenite jedinicu umjesto da ručno prepisujete živi socket, a zatim potvrdite da servis još uvijek doseže svoje datoteke certifikata i ključa.
Prođite kroz premještanje u redoslijedu koji vas drži dostupnim
Redoslijed je ovdje važniji od brzine. Podignite kabelni link dok bežični još radi, potvrdite novu adresu i povratnu rutu, a zatim umirovite bežični profil. Taj slijed drži radnu sesiju otvorenom dok zamjena ne bude dokazana.
ip -br addr show eth0
ip route get 203.0.113.10
nmcli -g ipv4.method,ipv4.addresses con show "Wired connection 1"
Prva komanda odgovara da li je eth0 dobio adresu koju ste namjeravali, a druga ispisuje izvornu adresu koju bi kernel koristio za odredište izvan mreže, pa je pokrenite prije i poslije promjene. Ako je to izvorište još uvijek bežična adresa, kabelni link još nije preferirana putanja i test izvana će pasti zbog razloga koji nema nikakve veze s OpenVPN-om. Ispravite preferenciju rutiranja prije nego što dodirnete prosljeđivanje.
Kada su oba linka aktivna, Pi može preferirati bežičnu zadanu rutu jer je prva instalirana ili jer kabelni link nosi višu metriku. Na Bookwormu je podržani knob ipv4.route-metric na konekciji, a na Bullseyeu je ekvivalent linija metric specifična za sučelje u dhcpcd.conf. Degradirajte bežični link umjesto da ga onemogućite, kako bi putanja vraćanja ostala jednu komandu daleko.
Dokažite tunel izvana, ne iz LAN-a
VPN konekcija koja radi s kauča dokazuje manje nego što izgleda. Promet iz unutrašnjosti LAN-a prema javnoj adresi prolazi kroz hairpin ili refleksijska pravila koja ruteri implementiraju nedosljedno, pa uspješan LAN test može koegzistirati s pokvarenom vanjskom putanjom. Koristite telefon na mobilnim podacima, ili bilo koji host izvan mreže, za prihvatni test. Zadržite LAN pokušaj kao odvojenu opcionu dijagnostiku.
Zatim čitajte log redoslijedom kojim paketi pristižu. Ništa uopće znači da handshake nikada nije stigao do Pi-ja, pa je cilj preusmjeravanja ili host firewall pogrešan. Handshake koji počne i zaglavi ukazuje na ključeve, certifikate ili MTU. Sesija koja se završi i padne obično znači povratnu rutu ili drugu zadanu rutu, a log linija klijenta Initialization Sequence Completed vam govori da se sam tunel podigao.
sudo journalctl -u openvpn-server@server -n 40 --no-pager
sudo tcpdump -ni any udp port 1194 -c 20
Ako se ništa ne pojavi u logu servera dok klijent ponovo pokušava, prestanite čitati OpenVPN konfiguraciju i vratite se na cilj preusmjeravanja. Snimak odgovara na pitanje dolaska u sekundama, a dolazni paketi bez odgovora sužavaju problem na rutu.
Zadržite vraćanje u jednom koraku i umirovite bežični profil
Ostavite bežični profil instaliran dok kabelni raspored ne prođe restart. nmcli con show navodi nazive profila koji će vam trebati, a izbrisani profil mora se rekonstruirati iz sjećanja u najgorem trenutku. Zapišite naziv sučelja, metodu adresiranja i metriku pored ostale četiri vrijednosti. Vraćanje koje možete otipkati iz bilješke vrijedi više od onog koje morate rekonstruirati.
Umirovljenje bežične zavisnosti je promjena svojstva, a ne brisanje. Postavljanjem connection.autoconnect no akreditivi i historija adresa ostaju netaknuti dok se Pi-ju onemogućava da se ponovo poveže na mrežu s koje ste otišli.
nmcli con show
sudo nmcli con up "Wired connection 1"
sudo nmcli con mod "previously-used-wifi" connection.autoconnect no
Prije nego što posao proglasite završenim, potvrdite četiri stvari: cilj preusmjeravanja odgovara kabelnoj adresi, listener je preživio restart, klijent izvana završava handshake, i Pi još uvijek odgovara na kabelnoj adresi nakon restarta. Restart je najjeftiniji način da uhvatite dodjelu koja je postojala samo u pokrenutom kernelu. Ako bilo koja od četiri ne uspije, ponovo podignite bežični profil pomoću sudo nmcli con up i uporedite zabilježene vrijednosti sa aktivnim.