Es izvēlējos Importēt no faila… GNOME iestatījumos, izvēlējos profilu, kas darbojas ar piegādātāja klientu, un dialogs aizvērās, neko nepievienojot sarakstam. Otrajā portatīvajā datorā imports pabeidzās, savienojums parādījās ar profila nosaukumu, un tad tas neizdevās pirmajā autentifikācijas pieprasījumā. NetworkManager nekad neizpilda tavu .ovpn vai wg-quick failu tādu, kāds tas ir. Tas nodod failu parsētājam, parsētājs to pārvērš NetworkManager paša savienojuma formātā, un no šī brīža tunelis tiek veidots no šī parsētā objekta — noslēpumi, maršruti, DNS un viss pārējais. Tāpēc lietderīgais jautājums nav, kāpēc fails ir salūzis, bet vai parsēšana notika un ko tā saglabāja.

Ko imports faktiski dara ar failu

Attiecībā uz OpenVPN parsētājs dzīvo spraudņa pakotnē, un izveidotais savienojums norāda uz D-Bus pakalpojumu, piemēram, org.freedesktop.NetworkManager.openvpn. Nav spraudņa — nav parsētāja: tips nav zināms nmcli, un grafiskais VPN pievienošanas saraksts var vispār nerādīt importa ierakstu. WireGuard atšķiras vienā svarīgā ziņā — NetworkManager kopš 1.30 sērijas ir savi WireGuard iestatījumi, tāpēc nav atsevišķas spraudņa pakotnes, bet wg-quick lasītājs pastāv tikai tajās būvēs, kas to piegādā.

Jebkurā gadījumā fails tiek nolasīts vienreiz. Rezultāts tiek ierakstīts kā keyfile /etc/NetworkManager/system-connections/, nosaukts pēc savienojuma, pieder root un nav lasāms citiem lietotājiem, jo satur atslēgu materiālu. Šis keyfile tagad ir savienojums; vēlāka oriģinālā .ovpn rediģēšana neko nemaina.

Trīs simptomi pieder pie trim dažādiem posmiem. Nav importa ieraksta vai nezināms tips nozīmē, ka trūkst spraudņa vai versijas. Importa kļūda, kas nosauc direktīvu, nozīmē, ka parsētājs failu nolasīja un daļu no tā noraidīja. Savienojums, kas pastāv, bet nekad neaktivizējas, nozīmē, ka parsētais objekts ir nepilnīgs vai serveris to noraida. Izlem, kurš no trim gadījumiem ir tavs, pirms kaut ko rediģē.

Pārbaudi spraudni pirms profila atkļūdošanas

Trūkstošs spraudnis izskatās tieši kā bojāts profils, tāpēc vispirms pārbaudi pakotni. Debian un Ubuntu OpenVPN atbalsts tiek piegādāts kā network-manager-openvpn plus darbvirsmas palīgs; Fedora tās ir pakotnes NetworkManager-openvpn un NetworkManager-openvpn-gnome; Arch tas ir networkmanager-openvpn.

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

Pēc tam importē no absolūta ceļa: nmcli connection import type openvpn file /home/you/profile.ovpn. Relatīvie ceļi parasti darbojas, bet čaula, kas nomainījusi direktoriju, ātru importu pārvērš apkārtceļā. WireGuard gadījumā pārbaudi nmcli --version un pārliecinies, ka kodola puse pastāv ar modprobe wireguard; imports, kas izdodas mašīnā bez moduļa, atstāj tevi ar savienojumu, kura ierīce nekad neparādās. nmcli atsauce dokumentē apakškomandu import un pieņemtos tipu nosaukumus. Ja type wireguard tiek noraidīts uzreiz, būve ir vecāka par šo funkciju, un pareizais solis ir distribūcijas pakotne vai backport — nevis konfigurācijas kopēšana patvaļīgā direktorijā cerībā, ka kaut kas to nolasīs.

Lasi OpenVPN savienojumu, nevis .ovpn

Kad savienojums pastāv, lasi parsētos iestatījumus, nevis pārlasī failu: nmcli connection show "Work VPN" | grep -E '^vpn\.'. Tev vajag remote un portu, transportu, identitātes materiālu — ca, cert, key, tls-auth vai tls-crypt — un autentifikācijas metodi. Profilā ar privātās atslēgas paroli pievieno sudo nmcli --show-secrets connection show "Work VPN" un apskati secret karodziņus: 0 ir none, tātad noslēpums atrodas keyfile; 1 ir agent-owned; 2 ir not-saved, kas nozīmē, ka tas nekad netiek ierakstīts keyfile; 4 ir not-required, kas nozīmē, ka noslēpums vispār nav vajadzīgs. Tie ir biti, nevis skala, tāpēc 3 ir vienkārši agent-owned plus not-saved. Noslēpums, par ko jautā reizi sesijā, ir agent-owned (1), un to pieprasa aģents; tam nav atsevišķa karodziņa numura. Karodziņu nesakritība ir ierastais iemesls, kāpēc profils savienojas no darbvirsmas apleta un neizdodas no skripta vai startēšanas laikā.

Ātrākais veids, kā redzēt, ko parsētājs izmetis, ir palūgt spraudnim ierakstīt failu atpakaļ un pēc tam to salīdzināt: nmcli connection export "Work VPN" /tmp/roundtrip.ovpn. Direktīvas, kas šajā diff pazūd, savienojuma laikā neeksistēs. Hooks ir ierastie aizdomās turamie — script-security, up, down un route-up sagaida skriptu, kas tiek izpildīts ar paaugstinātām tiesībām, un apzināti netiek pārnesti. Nepazemini verifikāciju un nepiešķir papildu privilēģijas, lai imports izdotos; neatbalstīta opcija parasti atspoguļo spraudņa funkciju kopumu, nevis nesasniedzamu serveri. Pārvieto šo uzvedību uz NetworkManager dispatcher skriptu vai uz servera puses politiku.

Pārbaudi arī, vai identitātes lauki ir izdzīvojuši: CA atsauce, remote-cert-tls un jebkura nosaukuma pārbaude, uz kuru paļāvās profils. Savienojums, kas paceļas bez tiem, varbūt runā ar jebko, kas atbild uz šo adresi.

Lasi WireGuard savienojumu, nevis wg-quick failu

wg-quick fails ir formāts ar shell semantiku; importētais savienojums ir iestatījumu kopa. PrivateKey kļūst par saskarnes privāto atslēgu, Address kļūst par vienu vai vairākām IPv4 un IPv6 adresēm, DNS tiek kartēts uz NetworkManager resolver īpašībām, MTU tiek kartēts uz wireguard.mtu (paša wg-quick noklusējums ir 1420), un katrs peer bloks kļūst par peer ierakstu ar publisko atslēgu, endpoint, atļautajām IP un persistent keepalive. Izdrukā, kas tika saglabāts, ar nmcli --show-secrets connection show wg0; ja peer saraksts šajā izvadē neparādās, lasi keyfile:

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

Neizdzīvo wg-quick shell puse. PreUp, PostUp, PreDown, PostDown un Table ir šī rīka uzvedība, nevis WireGuard saskarnes atribūti, tāpēc pēc importa tos neviens neizpilda. Ja oriģināls izmantoja Table = off, lai atstātu noklusēto maršrutu mierā, jaunāki NetworkManager laidieni šim pašam mērķim piedāvā ip4-auto-default-route un ip6-auto-default-route; iestati tos skaidri, nevis pieņem, ka savienojums uzvedas kā skripts. Hook, kas iespieda pielāgotu maršrutu, šo maršrutu vajag savienojuma maršrutēšanas iestatījumos, citādi tas vienkārši trūks.

Piešķir savienojumam tieši vienu īpašnieku

Klasiskā turpmākā kļūme ir savienojums, kas darbojas līdz nākamajai palaišanai un pēc tam iekrīt cilpā. Parasti [email protected] vēl bija iespējots no iepriekšēja eksperimenta, vai piegādātāja klients palaida savu dēmonu, un divi īpašnieki rakstīja maršrutus un DNS vienam un tam pašam galamērķim. NetworkManager iestata resolver savā ceļā, wg-quick raksta caur resolvconf, un uzvar pēdējais rakstītājs — tāpēc nosaukumu izšķiršana darbojas, tad apstājas, tad atkal darbojas. Pārbaudi systemctl status wg-quick@wg0, nmcli connection show --active un ip link show type wireguard, pēc tam atslēdz otro īpašnieku, nevis regulē tā metriku.

Ja tev tiešām vajag abus, piešķir tiem atsevišķas saskarnes un nekrustojošas atļautās IP, un ļauj tieši vienam no tiem instalēt noklusēto maršrutu. Divi noklusētie maršruti ar atšķirīgām metrikām nav split tunnel; tas ir sacīkstes, ko izšķir pakalpojums, kas startē otrais. Un pēc atkārtotas pieslēgšanās vēlreiz pārbaudi piemēroto stāvokli — vienreizēja manuāla resolver rediģēšana, kas liek lietām darboties, nav pierādījums, ka imports ir pilnīgs.

Pārbaudi ar trafiku un pārdzīvo restartu

Pacel savienojumu ar nmcli connection up "Work VPN", pēc tam lasi stāvokli, adresi un maršrutus, nevis uzticies ikonai: nmcli device show wg0 | grep -E 'GENERAL.STATE|IP4.ADDRESS|IP4.ROUTE', ip route show default un īstu tāda nosaukuma vaicājumu, kas atrisinās tikai tuneļa iekšienē. Handshake vai veiksmīgs ping pierāda tikai to, ka kriptogrāfija darbojas; tas neko neizsaka par pārsūtīšanu, split tunnel prefiksiem vai privāto DNS, un tieši šīs daļas parasti lūzt.

Pēc tam restartē un atkārto. Autoconnect uzvedība, pārdēvēta saskarne un spraudnis, kas ielādējas pēc ierīces, ir visas kļūmes, ko redzi tikai tīrā palaišanā. journalctl -u NetworkManager -b --no-pager | tail -n 40 rāda, ko dēmons izdarīja ar šo savienojumu šajā palaišanā. Otrajai datoram nokopē keyfile un turi to root īpašumā ar 600 režīmu, vai izmanto nmcli connection export OpenVPN un atkārtoti importē iegūto .ovpn — eksporta ceļam nav WireGuard ekvivalenta, tāpēc šis virziens ir faila kopija vai jauns imports no aizsargātā oriģināla.

Īsā versija, secībā: apstiprini spraudni vai NetworkManager versiju, importē no absolūta ceļa, lasi parsētos iestatījumus kopā ar secret karodziņiem, salīdzini OpenVPN eksportu ar oriģinālu, pārbaudi hooks un maršrutus WireGuard pusē, atslēdz jebkuru otru īpašnieku, un pēc tam pēc restarta pārbaudi nosaukuma izšķiršanu un maršrutu tabulu. Kad savienojums iztur visu to, profila fails, no kura tas sākās, var atgriezties aizsargātā krātuvē.

Saistītie raksti