Uvoz v NetworkManager ne uspe pri datotekah OpenVPN in WireGuard
Običajno se zlomi razčlenjevalnik, ne profil. Preveri vtičnik, preberi uvoženo povezavo, popravi secret zastavice in poti, nato preizkusi ponovni zagon.
Izbral sem Uvozi iz datoteke… v nastavitvah GNOME, izbral profil, ki deluje s odjemalcem ponudnika, in pogovorno okno se je zaprlo, ne da bi kaj dodalo na seznam. Na drugem prenosniku se je uvoz dokončal, povezava se je pojavila pod imenom profila, nato pa ni uspela pri prvi zahtevi za overitev. NetworkManager nikoli ne zažene tvoje datoteke .ovpn ali wg-quick takšne, kot je. Datoteko preda razčlenjevalniku, razčlenjevalnik jo pretvori v lastno obliko povezave NetworkManagerja, in od takrat se tunel gradi iz tega razčlenjenega objekta — skrivnosti, poti, DNS in vse ostalo. Uporabno vprašanje torej ni, zakaj je datoteka pokvarjena, ampak ali je do razčlenitve prišlo in kaj je obdržala.
Kaj uvoz pravzaprav naredi z datoteko
Za OpenVPN razčlenjevalnik živi v paketu vtičnika, povezava, ki jo ustvari, pa kaže na storitev D-Bus, na primer org.freedesktop.NetworkManager.openvpn. Brez vtičnika ni razčlenjevalnika: tip je za nmcli neznan, grafični seznam za dodajanje VPN pa morda sploh ne prikazuje vnosa za uvoz. WireGuard se razlikuje v eni pomembni točki — NetworkManager ima lastne nastavitve WireGuard od serije 1.30, zato ni ločenega paketa vtičnika, bralnik wg-quick pa obstaja le v gradnjah, ki ga priložijo.
Tako ali tako se datoteka prebere enkrat. Rezultat se zapiše kot keyfile v /etc/NetworkManager/system-connections/, poimenovan po povezavi, v lasti roota in neberljiv za druge uporabnike, ker vsebuje ključni material. Ta keyfile je zdaj povezava; poznejše urejanje izvirne .ovpn ne spremeni ničesar.
Trije simptomi pripadajo trem različnim stopnjam. Ni vnosa za uvoz ali neznan tip pomeni, da manjka vtičnik ali različica. Napaka pri uvozu, ki imenuje direktivo, pomeni, da je razčlenjevalnik prebral datoteko in del zavrnil. Povezava, ki obstaja, a se nikoli ne aktivira, pomeni, da je razčlenjeni objekt nepopoln ali da ga strežnik zavrača. Odloči, kateri od treh primerov imaš, preden karkoli urejaš.
Potrdi vtičnik, preden začneš odpravljati napake v profilu
Manjkajoč vtičnik je videti natanko kot poškodovan profil, zato najprej preveri paket. V Debianu in Ubuntuju se podpora OpenVPN dobavlja kot network-manager-openvpn plus pomočnik za namizje; v Fedori sta to paketa NetworkManager-openvpn in NetworkManager-openvpn-gnome; v Archu je to networkmanager-openvpn.
dpkg -l network-manager-openvpn-gnome | tail -n 2 rpm -q NetworkManager-openvpn pacman -Q networkmanager-openvpn
Nato uvozi z absolutno potjo: nmcli connection import type openvpn file /home/you/profile.ovpn. Relativne poti običajno delujejo, a lupina, ki je zamenjala imenik, iz hitrega uvoza naredi ovinek. Za WireGuard preveri nmcli --version in poskrbi, da stran jedra obstaja z modprobe wireguard; uvoz, ki uspe na stroju brez modula, te pusti s povezavo, katere naprava se nikoli ne pojavi. referenca nmcli dokumentira podukaz import in sprejeta imena tipov. Če je type wireguard takoj zavrnjen, je gradnja starejša od te funkcije, in prava poteza je paket distribucije ali backport — ne kopiranje konfiguracije v poljubno mapo in upanje, da jo bo kaj prebralo.
Beri povezavo OpenVPN, ne .ovpn
Ko povezava obstaja, beri razčlenjene nastavitve, namesto da bi datoteko znova bral: nmcli connection show "Work VPN" | grep -E '^vpn\.'. Želiš remote in vrata, transport, identitetni material — ca, cert, key, tls-auth ali tls-crypt — in metodo overitve. Pri profilu z geslom zasebnega ključa dodaj sudo nmcli --show-secrets connection show "Work VPN" in poglej secret zastavice: 0 je none, zato skrivnost leži v keyfile; 1 je agent-owned; 2 je not-saved, kar pomeni, da se nikoli ne zapiše v keyfile; 4 je not-required, kar pomeni, da skrivnost sploh ni potrebna. To so biti, ne lestvica, zato je 3 preprosto agent-owned plus not-saved. Skrivnost, po kateri vpraša enkrat na sejo, je agent-owned (1), pri čemer jo zahteva agent; za to ni ločene številke zastavice. Neujemanje zastavic je običajen razlog, da se profil poveže iz apleta na namizju in ne uspe iz skripta ali ob zagonu.
Najhitreje vidiš, kaj je razčlenjevalnik zavrgel, če vtičnik prosiš, da datoteko zapiše nazaj, in jo nato primerjaš: nmcli connection export "Work VPN" /tmp/roundtrip.ovpn. Direktive, ki v tej primerjavi izginejo, ob povezovanju ne bodo obstajale. Hooki so običajni osumljenci — script-security, up, down in route-up pričakujejo skript, ki se izvaja s povišanimi pravicami, in se namerno ne prenesejo. Ne znižuj preverjanja in ne dajaj dodatnih pravic, da bi uvoz uspel; nepodprta možnost običajno odraža nabor funkcij vtičnika, ne nedosegljivega strežnika. To vedenje premakni v skript dispatcherja NetworkManagerja ali v politiko na strani strežnika.
Potrdi tudi, da so identitetna polja preživela: sklic na CA, remote-cert-tls in vsak preverjanje imena, na katero se je profil zanašal. Povezava, ki se dvigne brez njih, se morda pogovarja s čimerkoli, kar odgovarja na tem naslovu.
Beri povezavo WireGuard, ne datoteke wg-quick
Datoteka wg-quick je oblika s semantiko lupine; uvožena povezava je nabor nastavitev. PrivateKey postane zasebni ključ vmesnika, Address postane en ali več naslovov IPv4 in IPv6, DNS se preslika v lastnosti resolverja NetworkManagerja, MTU se preslika v wireguard.mtu (lastna privzeta vrednost wg-quick je 1420), vsak blok peer pa postane vnos peer z javnim ključem, endpointom, dovoljenimi IP in persistent keepalive. Izpiši, kaj je shranjeno, z nmcli --show-secrets connection show wg0; če se seznam peerov v tem izpisu ne pojavi, preberi keyfile:
sudo sed -n '/^\[wireguard\]/,/^\[/p' /etc/NetworkManager/system-connections/wg0.nmconnection
Ne preživi shell polovica wg-quick. PreUp, PostUp, PreDown, PostDown in Table so vedenje tega orodja, ne atributi vmesnika WireGuard, zato jih po uvozu nič ne izvede. Če je izvirnik uporabljal Table = off, da bi pustil privzeto pot pri miru, novejše izdaje NetworkManagerja izpostavljajo v ta namen ip4-auto-default-route in ip6-auto-default-route; nastavi ju izrecno, namesto da bi domneval, da se povezava obnaša kot skript. Hook, ki je dodajal lastno pot, potrebuje to pot v nastavitvah usmerjanja povezave, sicer bo preprosto manjkala.
Daj povezavi natanko enega lastnika
Klasična poznejša okvara je povezava, ki deluje do naslednjega zagona in se nato zacikli. Običajno je bil [email protected] še vedno omogočen iz prejšnjega poskusa, ali pa je odjemalec ponudnika zagnal svojega demona, in dva lastnika sta pisala poti in DNS za isti cilj. NetworkManager nastavi resolver po svoji poti, wg-quick piše prek resolvconf, in zmaga zadnji pisec — zato razreševanje imen deluje, nato se ustavi, nato spet deluje. Preveri systemctl status wg-quick@wg0, nmcli connection show --active in ip link show type wireguard, nato pa onemogoči drugega lastnika, namesto da bi uglaševal njegovo metriko.
Če res potrebuješ oba, jima daj ločene vmesnike in nepovezane dovoljene IP, in pusti natanko enemu od njiju, da namesti privzeto pot. Dve privzeti poti z različnimi metrikami nista split tunnel; to je tekma, ki jo odloči storitev, ki se zažene druga. In po ponovni povezavi znova preglej uporabljeno stanje — enkratna ročna sprememba resolverja, ki stvari požene, ni dokaz, da je uvoz popoln.
Preveri s prometom in preživi ponovni zagon
Dvigni povezavo z nmcli connection up "Work VPN", nato beri stanje, naslov in poti, namesto da bi zaupal ikoni: nmcli device show wg0 | grep -E 'GENERAL.STATE|IP4.ADDRESS|IP4.ROUTE', ip route show default in resnično iskanje imena, ki se razreši le znotraj tunela. Handshake ali uspešen ping dokaže le, da kriptografija deluje; ne pove nič o posredovanju, predponah split tunela ali zasebnem DNS — to so deli, ki se običajno zlomijo.
Nato znova zaženi in ponovi. Vedenje autoconnect, preimenovan vmesnik in vtičnik, ki se naloži po napravi, so vse okvare, ki jih vidiš le ob čistem zagonu. journalctl -u NetworkManager -b --no-pager | tail -n 40 pokaže, kaj je demon naredil s to povezavo ob tem zagonu. Za drugi računalnik kopiraj keyfile in ga imej v lasti roota z načinom 600, ali uporabi nmcli connection export za OpenVPN in znova uvozi nastali .ovpn — pot izvoza nima ustreznika za WireGuard, zato je ta smer kopija datoteke ali nov uvoz iz zaščitenega izvirnika.
Kratka različica, po vrsti: potrdi vtičnik ali različico NetworkManagerja, uvozi z absolutno potjo, beri razčlenjene nastavitve skupaj s secret zastavicami, primerjaj izvoz OpenVPN z izvirnikom, preveri hooke in poti na strani WireGuarda, onemogoči vsakega drugega lastnika, nato pa po ponovnem zagonu preveri razrešitev imena in tabelo usmerjanja. Ko povezava prestane vse to, se lahko profilna datoteka, s katere se je začela, vrne v zaščiteno shrambo.