Odabrao sam Uvezi iz datoteke… u GNOME postavkama, odabrao profil koji radi s klijentom dobavljača, i dijalog se zatvorio bez dodavanja bilo čega na listu. Na drugom laptopu uvoz je završen, veza se pojavila pod imenom profila, a zatim nije uspjela na prvom zahtjevu za autentifikaciju. NetworkManager nikada ne izvršava tvoju .ovpn ili wg-quick datoteku takvu kakva jest. Predaje datoteku parseru, parser je pretvara u vlastiti format veze NetworkManagera, i od tog trenutka tunel se gradi iz tog parsiranog objekta — tajne, rute, DNS i sve ostalo. Dakle, korisno pitanje nije zašto je datoteka pokvarena, nego da li se parsiranje dogodilo i šta je zadržalo.

Šta uvoz zapravo radi s datotekom

Za OpenVPN, parser se nalazi u paketu plugina, a veza koju stvara pokazuje na D-Bus servis kao što je org.freedesktop.NetworkManager.openvpn. Nema plugina, nema parsera: tip je nepoznat nmcli-ju, a grafička lista za dodavanje VPN-a možda uopšte ne prikazuje stavku za uvoz. WireGuard se razlikuje u jednoj važnoj stvari — NetworkManager ima vlastite WireGuard postavke od serije 1.30, tako da nema zasebnog paketa plugina, ali čitač wg-quick postoji samo u buildovima koji ga isporučuju.

U svakom slučaju datoteka se čita jednom. Rezultat se zapisuje kao keyfile u /etc/NetworkManager/system-connections/, nazvan po vezi, u vlasništvu roota i nečitljiv drugim korisnicima jer sadrži materijal ključeva. Taj keyfile je sada veza; naknadno uređivanje originalne .ovpn ne mijenja ništa.

Tri simptoma pripadaju trima različitim fazama. Nema stavke za uvoz ili nepoznat tip znači da nedostaje plugin ili verzija. Greška pri uvozu koja imenuje direktivu znači da je parser pročitao datoteku i odbio dio nje. Veza koja postoji ali se nikada ne aktivira znači da je parsirani objekat nepotpun ili da ga serverska strana odbija. Odluči koji od tri slučaja imaš prije nego što bilo šta urediš.

Potvrdi plugin prije nego što debuggiraš profil

Plugin koji nedostaje izgleda tačno kao oštećen profil, pa prvo provjeri paket. Na Debianu i Ubuntuu OpenVPN podrška dolazi kao network-manager-openvpn plus desktop helper; na Fedori paketi su NetworkManager-openvpn i NetworkManager-openvpn-gnome; na Archu to je networkmanager-openvpn.

dpkg -l network-manager-openvpn-gnome | tail -n 2
rpm -q NetworkManager-openvpn
pacman -Q networkmanager-openvpn

Zatim uvezi s apsolutne putanje: nmcli connection import type openvpn file /home/you/profile.ovpn. Relativne putanje obično rade, ali shell koji je promijenio direktorij pretvara brzi uvoz u obilazak. Za WireGuard provjeri nmcli --version i pobrini se da kernel strana postoji s modprobe wireguard; uvoz koji uspije na mašini bez modula ostavlja te s vezom čiji se uređaj nikada ne pojavi. nmcli referenca dokumentuje podkomandu import i prihvaćena imena tipova. Ako se type wireguard odbije odmah, build je stariji od te funkcije, i ispravan potez je distribucijski paket ili backport — a ne kopiranje konfiguracije u proizvoljan direktorij i nada da će je nešto pročitati.

Čitaj OpenVPN vezu, a ne .ovpn

Kada veza postoji, čitaj parsirane postavke umjesto da ponovo čitaš datoteku: nmcli connection show "Work VPN" | grep -E '^vpn\.'. Želiš remote i port, transport, identitetski materijal — ca, cert, key, tls-auth ili tls-crypt — i metodu autentifikacije. Na profilu s lozinkom privatnog ključa dodaj sudo nmcli --show-secrets connection show "Work VPN" i pogledaj secret flagove: 0 je none, pa tajna stoji u keyfileu; 1 je agent-owned; 2 je not-saved, što znači da se nikada ne zapisuje u keyfile; 4 je not-required, što znači da tajna uopšte nije potrebna. To su bitovi, a ne skala, pa je 3 jednostavno agent-owned plus not-saved. Tajna koja te pita jednom po sesiji je agent-owned (1), pri čemu je agent traži; za to ne postoji poseban broj flaga. Nesklad flagova je uobičajen razlog zašto se profil povezuje iz desktop appleta, a ne uspijeva iz skripte ili pri podizanju.

Najbrži način da vidiš šta je parser odbacio je da zamoliš plugin da ponovo zapiše datoteku, pa je uporediš: nmcli connection export "Work VPN" /tmp/roundtrip.ovpn. Direktive koje nestanu u tom diffu neće postojati u trenutku povezivanja. Hookovi su uobičajeni osumnjičeni — script-security, up, down i route-up očekuju skriptu koja se izvršava s povišenim pravima i namjerno se ne prenose. Ne snižavaj verifikaciju i ne daj dodatne privilegije da bi uvoz uspio; nepodržana opcija obično odražava skup funkcija plugina, a ne nedostupan server. Premjesti to ponašanje u NetworkManager dispatcher skriptu ili u politiku na strani servera.

Takođe potvrdi da su identitetska polja preživjela: CA referenca, remote-cert-tls i svaka provjera imena na koju se profil oslanjao. Veza koja se podigne bez njih možda razgovara s čim god da odgovara na toj adresi.

Čitaj WireGuard vezu, a ne wg-quick datoteku

wg-quick datoteka je format sa shell semantikom; uvezena veza je skup postavki. PrivateKey postaje privatni ključ interfejsa, Address postaje jedna ili više IPv4 i IPv6 adresa, DNS se mapira na NetworkManagerove resolver osobine, MTU se mapira na wireguard.mtu (wg-quickov vlastiti default je 1420), a svaki peer blok postaje peer unos s javnim ključem, endpointom, dozvoljenim IP-ovima i persistent keepalive. Ispiši šta je sačuvano s nmcli --show-secrets connection show wg0; ako se lista peerova ne pojavi u tom izlazu, pročitaj keyfile:

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

Ono što ne preživi je shell polovina wg-quicka. PreUp, PostUp, PreDown, PostDown i Table su ponašanje tog alata, ne atributi WireGuard interfejsa, pa ih ništa ne izvršava nakon uvoza. Ako je original koristio Table = off da ostavi default rutu na miru, novija izdanja NetworkManagera izlažu ip4-auto-default-route i ip6-auto-default-route u istu svrhu; postavi ih eksplicitno umjesto da pretpostavljaš da se veza ponaša kao skripta. Hook koji je gurao prilagođenu rutu treba tu rutu u routing postavkama veze, inače će jednostavno nedostajati.

Daj vezi tačno jednog vlasnika

Klasičan naknadni kvar je veza koja radi do sljedećeg podizanja i onda uđe u petlju. Obično je [email protected] još bio omogućen iz ranijeg eksperimenta, ili je klijent dobavljača pokretao vlastiti daemon, i dva vlasnika su pisala rute i DNS za istu destinaciju. NetworkManager postavlja resolver svojim putem, wg-quick piše preko resolvconfa, i posljednji pisac pobjeđuje — pa razrješavanje imena radi, pa stane, pa opet radi. Provjeri systemctl status wg-quick@wg0, nmcli connection show --active i ip link show type wireguard, pa onemogući drugog vlasnika umjesto da podešavaš njegovu metricu.

Ako ti zaista trebaju oba, daj im odvojene interfejse i disjunktne dozvoljene IP-ove, i pusti tačno jednog od njih da instalira default rutu. Dvije default rute s različitim metricama nisu split tunnel; to je trka koju odlučuje servis koji se pokrene drugi. I nakon reconnecta ponovo pregledaj primijenjeno stanje — jednokratna ručna izmjena resolvera koja učini da stvari rade nije dokaz da je uvoz kompletan.

Verifikuj s prometom i preživi ponovno pokretanje

Podigni vezu s nmcli connection up "Work VPN", pa čitaj stanje, adresu i rute umjesto da vjeruješ ikoni: nmcli device show wg0 | grep -E 'GENERAL.STATE|IP4.ADDRESS|IP4.ROUTE', ip route show default, i pravo traženje imena koje se razrješava samo unutar tunela. Handshake ili uspješan ping dokazuje samo da kriptografija radi; ne govori ništa o prosljeđivanju, split-tunnel prefiksima ili privatnom DNS-u, a to su dijelovi koji se obično kvare.

Zatim ponovo pokreni i ponovi. Autoconnect ponašanje, preimenovani interfejs i plugin koji se učitava nakon uređaja su sve kvarovi koje vidiš samo pri svježem podizanju. journalctl -u NetworkManager -b --no-pager | tail -n 40 pokazuje šta je daemon uradio s ovom vezom u ovom podizanju. Za drugi desktop kopiraj keyfile i drži ga u vlasništvu roota s modom 600, ili koristi nmcli connection export za OpenVPN i ponovo uvezi rezultujući .ovpn — putanja izvoza nema WireGuard ekvivalent, pa je taj smjer kopija datoteke ili svježi uvoz iz zaštićenog originala.

Kratka verzija, po redu: potvrdi plugin ili verziju NetworkManagera, uvezi s apsolutne putanje, čitaj parsirane postavke uključujući secret flagove, uporedi OpenVPN izvoz s originalom, provjeri hookove i rute na WireGuard strani, onemogući svakog drugog vlasnika, pa nakon ponovnog pokretanja verifikuj razrješavanje imena i tabelu ruta. Kada veza prođe sve to, profilna datoteka koja ju je pokrenula može se vratiti u zaštićeno skladište.

Povezani članci