Vybral som Importovať zo súboru… v nastaveniach GNOME, vybral som profil, ktorý funguje s klientom poskytovateľa, a dialóg sa zavrel bez toho, aby do zoznamu niečo pridal. Na druhom notebooku sa import dokončil, pripojenie sa objavilo pod názvom profilu a potom zlyhalo pri prvej požiadavke na overenie. NetworkManager nikdy nespustí tvoj súbor .ovpn ani wg-quick tak, ako je. Odovzdá súbor parseru, parser ho prevedie do vlastného formátu pripojenia NetworkManageru a odvtedy sa tunel stavia z tohto parsovaného objektu — tajomstvá, trasy, DNS a všetko ostatné. Užitočná otázka teda nie je, prečo je súbor rozbitý, ale či k parsovaniu došlo a čo si zachovalo.

Čo import so súborom skutočne robí

Pre OpenVPN žije parser v balíku zásuvného modulu a pripojenie, ktoré vytvára, ukazuje na službu D-Bus, napríklad org.freedesktop.NetworkManager.openvpn. Bez modulu niet parsera: typ je pre nmcli neznámy a grafický zoznam na pridanie VPN nemusí vôbec zobrazovať položku importu. WireGuard sa líši v jednom dôležitom bode — NetworkManager má vlastné nastavenia WireGuard od série 1.30, takže neexistuje samostatný balík modulu, ale čítačka wg-quick existuje len v zostaveniach, ktoré ju dodávajú.

Tak či onak, súbor sa číta raz. Výsledok sa zapíše ako keyfile do /etc/NetworkManager/system-connections/, pomenovaný podľa pripojenia, vlastnený rootom a pre ostatných používateľov nečitateľný, pretože obsahuje kľúčový materiál. Ten keyfile je teraz pripojenie; neskoršia úprava pôvodného .ovpn nič nezmení.

Tri príznaky patria k trom rôznym fázam. Žiadna položka importu alebo neznámy typ znamená, že chýba modul alebo verzia. Chyba importu, ktorá menuje direktívu, znamená, že parser súbor prečítal a časť odmietol. Pripojenie, ktoré existuje, ale nikdy sa neaktivuje, znamená, že parsovaný objekt je neúplný alebo ho server odmieta. Rozhodni, ktorý z troch prípadov máš, skôr než čokoľvek upravíš.

Potvrď modul, skôr než začneš ladiť profil

Chýbajúci modul vyzerá presne ako poškodený profil, takže najprv skontroluj balík. V Debiane a Ubuntu sa podpora OpenVPN dodáva ako network-manager-openvpn plus pomocník pre plochu; vo Fedore sú to balíky NetworkManager-openvpn a 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

Potom importuj z absolútnej cesty: nmcli connection import type openvpn file /home/you/profile.ovpn. Relatívne cesty zvyčajne fungujú, ale shell, ktorý zmenil adresár, z rýchleho importu urobí obchádzku. Pre WireGuard skontroluj nmcli --version a uisti sa, že strana jadra existuje s modprobe wireguard; import, ktorý uspeje na stroji bez modulu, ťa nechá s pripojením, ktorého zariadenie sa nikdy neobjaví. referencia nmcli dokumentuje podpríkaz import a prijímané názvy typov. Ak je type wireguard hneď odmietnutý, zostavenie je staršie ako funkcia a správnym krokom je balík distribúcie alebo backport — nie kopírovať konfiguráciu do ľubovoľného adresára a dúfať, že ju niečo prečíta.

Čítaj pripojenie OpenVPN, nie .ovpn

Keď pripojenie existuje, čítaj parsované nastavenia namiesto opätovného čítania súboru: nmcli connection show "Work VPN" | grep -E '^vpn\.'. Chceš remote a port, transport, identitný materiál — ca, cert, key, tls-auth alebo tls-crypt — a metódu overenia. Pri profile s heslom súkromného kľúča pridaj sudo nmcli --show-secrets connection show "Work VPN" a pozri sa na secret flagy: 0 je none, takže tajomstvo leží v keyfile; 1 je agent-owned; 2 je not-saved, čo znamená, že sa nikdy nezapíše do keyfile; 4 je not-required, čo znamená, že tajomstvo vôbec nie je potrebné. Sú to bity, nie škála, takže 3 je jednoducho agent-owned plus not-saved. Tajomstvo, na ktoré sa pýta raz za reláciu, je agent-owned (1), pričom oň žiada agent; samostatné číslo flagu na to neexistuje. Nezhoda flagov je zvyčajný dôvod, prečo sa profil pripojí z appletu na ploche a zlyhá zo skriptu alebo pri štarte.

Najrýchlejšie uvidíš, čo parser zahodil, keď požiadaš modul, aby súbor zapísal späť, a potom ho porovnáš: nmcli connection export "Work VPN" /tmp/roundtrip.ovpn. Direktívy, ktoré v tom porovnaní zmiznú, pri pripojení nebudú existovať. Hooky sú zvyčajní podozriví — script-security, up, down a route-up očakávajú skript spúšťaný so zvýšenými právami a zámerne sa neprenášajú. Neznižuj overovanie a nedávaj extra oprávnenia, aby import prešiel; nepodporovaná voľba zvyčajne odráža sadu funkcií modulu, nie nedostupný server. Presuň to správanie do dispatcher skriptu NetworkManageru alebo do politiky na strane servera.

Potvrď aj, že identitné polia prežili: odkaz na CA, remote-cert-tls a akúkoľvek kontrolu názvu, na ktorú sa profil spoliehal. Pripojenie, ktoré sa zdvihne bez nich, môže hovoriť s čímkoľvek, čo na tej adrese odpovedá.

Čítaj pripojenie WireGuard, nie súbor wg-quick

Súbor wg-quick je formát so sémantikou shellu; importované pripojenie je sada nastavení. PrivateKey sa stane súkromným kľúčom rozhrania, Address sa stane jednou alebo viacerými adresami IPv4 a IPv6, DNS sa mapuje na vlastnosti resolvera NetworkManageru, MTU sa mapuje na wireguard.mtu (vlastná predvolená hodnota wg-quick je 1420) a každý blok peer sa stane záznamom peer s verejným kľúčom, endpointom, povolenými IP a persistent keepalive. Vypíš, čo sa uložilo, pomocou nmcli --show-secrets connection show wg0; ak sa zoznam peerov v tomto výstupe neobjaví, prečítaj keyfile:

sudo sed -n '/^\[wireguard\]/,/^\[/p' /etc/NetworkManager/system-connections/wg0.nmconnection

Neprežije shellová polovica wg-quick. PreUp, PostUp, PreDown, PostDown a Table sú správanie toho nástroja, nie atribúty rozhrania WireGuard, takže ich po importe nič nespustí. Ak originál používal Table = off, aby nechal predvolenú trasu na pokoji, novšie vydania NetworkManageru vystavujú na rovnaký účel ip4-auto-default-route a ip6-auto-default-route; nastav ich explicitne, namiesto toho, aby si predpokladal, že pripojenie sa správa ako skript. Hook, ktorý pridával vlastnú trasu, potrebuje tú trasu v nastaveniach smerovania pripojenia, inak jednoducho chýba.

Daj pripojeniu presne jedného vlastníka

Klasická následná porucha je pripojenie, ktoré funguje do ďalšieho štartu a potom sa zacyklí. Zvyčajne bol [email protected] ešte zapnutý z predchádzajúceho experimentu, alebo klient poskytovateľa spúšťal vlastného démona, a dvaja vlastníci písali trasy a DNS pre rovnaký cieľ. NetworkManager nastavuje resolver svojou cestou, wg-quick píše cez resolvconf a vyhráva posledný pisár — takže preklad mien funguje, potom prestane, potom zase funguje. Skontroluj systemctl status wg-quick@wg0, nmcli connection show --active a ip link show type wireguard, a potom druhého vlastníka vypni, namiesto toho, aby si ladil jeho metriku.

Ak naozaj potrebuješ oboch, daj im samostatné rozhrania a disjunktné povolené IP a nechaj presne jedného z nich nainštalovať predvolenú trasu. Dve predvolené trasy s rôznymi metrikami nie sú split tunnel; je to preteky, ktoré rozhodne služba štartujúca druhá. A po opätovnom pripojení znova prezri aplikovaný stav — jednorazová ručná úprava resolvera, ktorá všetko rozbehne, nie je dôkaz, že import je kompletný.

Over prevádzkou a preži reštart

Zdvihni pripojenie pomocou nmcli connection up "Work VPN" a potom čítaj stav, adresu a trasy, namiesto toho, aby si veril ikone: nmcli device show wg0 | grep -E 'GENERAL.STATE|IP4.ADDRESS|IP4.ROUTE', ip route show default a skutočné vyhľadanie mena, ktoré sa prekladá len vnútri tunela. Handshake alebo úspešný ping dokazuje len to, že kryptografia funguje; nič nehovorí o forwardovaní, prefixoch split tunela alebo privátnom DNS — a to sú časti, ktoré sa zvyčajne lámu.

Potom reštartuj a zopakuj to. Správanie autoconnect, premenované rozhranie a modul, ktorý sa načítava až po zariadení, sú poruchy, ktoré vidíš len pri čistom štarte. journalctl -u NetworkManager -b --no-pager | tail -n 40 ukazuje, čo démon s týmto pripojením pri tomto štarte urobil. Pre druhý počítač skopíruj keyfile a drž ho vo vlastníctve roota s režimom 600, alebo použi nmcli connection export pre OpenVPN a znova importuj výsledný .ovpn — cesta exportu nemá ekvivalent pre WireGuard, takže tento smer je kópia súboru alebo nový import z chráneného originálu.

Krátka verzia, poporiadku: potvrď modul alebo verziu NetworkManageru, importuj z absolútnej cesty, prečítaj parsované nastavenia vrátane secret flagov, porovnaj export OpenVPN s originálom, skontroluj hooky a trasy na strane WireGuardu, vypni každého druhého vlastníka, a potom po reštarte over preklad mena a smerovaciu tabuľku. Keď pripojenie prejde tým všetkým, súbor profilu, ktorý ho spustil, sa môže vrátiť do chráneného úložiska.

Súvisiace články