NetworkManager importavimas nepavyksta su OpenVPN ir WireGuard failais
Dažniausiai lūžta analizatorius, o ne profilis. Patikrinkite papildinį, perskaitykite importuotą ryšį, sutvarkykite secret vėliavėles ir maršrutus, tada patikrinkite paleidimą iš naujo.
Pasirinkau Importuoti iš failo… GNOME nustatymuose, pasirinkau profilį, kuris veikia su tiekėjo klientu, ir dialogas užsidarė nieko nepridėjęs prie sąrašo. Antrame nešiojamajame importas baigėsi, ryšys pasirodė po profilio pavadinimu, o tada nepavyko pirmojo autentifikacijos užklausos metu. NetworkManager niekada nevykdo jūsų .ovpn ar wg-quick failo tokio, koks jis yra. Jis perduoda failą analizatoriui, analizatorius paverčia jį savuoju NetworkManager ryšio formatu, ir nuo to laiko tunelis statomas iš to analizuoto objekto — slaptažodžiai, maršrutai, DNS ir visa kita. Taigi naudingas klausimas yra ne kodėl failas sugadintas, o ar analizė įvyko ir ką ji išsaugojo.
Ką importas iš tikrųjų daro su failu
Kalbant apie OpenVPN, analizatorius gyvena papildinio pakete, o sukuriamas ryšys nurodo D-Bus paslaugą, pavyzdžiui, org.freedesktop.NetworkManager.openvpn. Nėra papildinio – nėra analizatoriaus: tipas nežinomas nmcli, o grafinis VPN pridėjimo sąrašas gali visai nerodyti importo įrašo. WireGuard skiriasi vienu svarbiu aspektu — NetworkManager turi savo WireGuard nustatymus nuo 1.30 serijos, todėl atskiro papildinio paketo nėra, bet wg-quick skaitytuvas egzistuoja tik tuose rinkiniuose, kurie jį pateikia.
Bet kokiu atveju failas skaitomas vieną kartą. Rezultatas įrašomas kaip keyfile /etc/NetworkManager/system-connections/ kataloge, pavadintas pagal ryšį, priklauso root ir neperskaitomas kitiems naudotojams, nes jame yra raktų medžiaga. Tas keyfile dabar ir yra ryšys; vėliau redaguoti originalų .ovpn nieko nekeičia.
Trys simptomai priklauso trims skirtingiems etapams. Nėra importo įrašo arba nežinomas tipas reiškia, kad trūksta papildinio arba versijos. Importo klaida, nurodanti direktyvą, reiškia, kad analizatorius perskaitė failą ir dalį jo atmetė. Ryšys, kuris egzistuoja, bet niekada neaktyvuojamas, reiškia, kad analizuotas objektas nepilnas arba serveris jį atmeta. Nuspręskite, kuris iš trijų atvejų jūsų, prieš ką nors redaguodami.
Patikrinkite papildinį prieš derindami profilį
Trūkstamas papildinys atrodo lygiai kaip sugadintas profilis, todėl pirmiausia patikrinkite paketą. Debian ir Ubuntu OpenVPN palaikymas pateikiamas kaip network-manager-openvpn plius darbalaukio pagalbininkas; Fedora tai paketai NetworkManager-openvpn ir NetworkManager-openvpn-gnome; Arch tai networkmanager-openvpn.
dpkg -l network-manager-openvpn-gnome | tail -n 2 rpm -q NetworkManager-openvpn pacman -Q networkmanager-openvpn
Tada importuokite iš absoliutaus kelio: nmcli connection import type openvpn file /home/you/profile.ovpn. Santykiniai keliai paprastai veikia, bet apvalkalas, pakeitęs katalogą, greitą importą paverčia apylanka. WireGuard atveju patikrinkite nmcli --version ir įsitikinkite, kad branduolio pusė egzistuoja su modprobe wireguard; importas, kuris pavyksta mašinoje be modulio, palieka jus su ryšiu, kurio įrenginys niekada nepasirodo. nmcli nuoroda dokumentuoja import paprogramę ir priimamus tipo pavadinimus. Jei type wireguard atmetamas iš karto, rinkinys senesnis už šią funkciją, ir teisingas žingsnis yra platinimo paketas arba backport, o ne konfigūracijos kopijavimas į savavališką katalogą tikintis, kad kažkas ją perskaitys.
Skaitykite OpenVPN ryšį, o ne .ovpn
Kai ryšys egzistuoja, skaitykite analizuotus nustatymus, o ne iš naujo skaitykite failą: nmcli connection show "Work VPN" | grep -E '^vpn\.'. Jums reikia remote ir prievado, transporto, tapatybės medžiagos — ca, cert, key, tls-auth arba tls-crypt — ir autentifikacijos metodo. Profilyje su privataus rakto slaptažodžiu pridėkite sudo nmcli --show-secrets connection show "Work VPN" ir pažiūrėkite secret vėliavėles: 0 yra none, taigi slaptažodis yra keyfile; 1 yra agent-owned; 2 yra not-saved, tai reiškia, kad jis niekada neįrašomas į keyfile; 4 yra not-required, tai reiškia, kad slaptažodžio visai nereikia. Tai bitai, o ne skalė, todėl 3 yra tiesiog agent-owned plius not-saved. Slaptažodis, kurio klausiama kartą per sesiją, yra agent-owned (1), kai agentas jo prašo; atskiro vėliavėlės numerio tam nėra. Vėliavėlių neatitikimas yra įprasta priežastis, kodėl profilis prisijungia iš darbalaukio applet ir nepavyksta iš scenarijaus arba paleidžiant.
Greičiausias būdas pamatyti, ką analizatorius išmetė, yra paprašyti papildinio įrašyti failą atgal ir tada jį palyginti: nmcli connection export "Work VPN" /tmp/roundtrip.ovpn. Direktyvos, kurios tame diff dingo, neegzistuos prisijungimo metu. Hooks yra įprasti įtariamieji — script-security, up, down ir route-up tikisi scenarijaus, vykdomo su padidintomis teisėmis, ir sąmoningai neperkeliami. Nemažinkite tikrinimo ir nesuteikite papildomų privilegijų, kad importas pavyktų; nepalaikoma parinktis dažniausiai atspindi papildinio funkcijų rinkinį, o ne nepasiekiamą serverį. Perkelkite tą elgseną į NetworkManager dispatcher scenarijų arba į serverio pusės politiką.
Taip pat patikrinkite, ar tapatybės laukai išliko: CA nuoroda, remote-cert-tls ir bet kokia vardo patikra, kuria rėmėsi profilis. Ryšys, kuris pakyla be jų, galbūt kalba su tuo, kas atsako tuo adresu.
Skaitykite WireGuard ryšį, o ne wg-quick failą
wg-quick failas yra formatas su shell semantika; importuotas ryšys yra nustatymų rinkinys. PrivateKey tampa sąsajos privačiu raktu, Address tampa vienu ar daugiau IPv4 ir IPv6 adresų, DNS susiejamas su NetworkManager resolver savybėmis, MTU susiejamas su wireguard.mtu (paties wg-quick numatytoji reikšmė yra 1420), o kiekvienas peer blokas tampa peer įrašu su viešu raktu, endpoint, leidžiamais IP ir persistent keepalive. Atspausdinkite, kas buvo išsaugota, su nmcli --show-secrets connection show wg0; jei peer sąrašas tame išvedime nepasirodo, perskaitykite keyfile:
sudo sed -n '/^\[wireguard\]/,/^\[/p' /etc/NetworkManager/system-connections/wg0.nmconnection
Neišlieka shell pusė wg-quick. PreUp, PostUp, PreDown, PostDown ir Table yra to įrankio elgsena, o ne WireGuard sąsajos atributai, todėl po importo jų niekas nevykdo. Jei originalas naudojo Table = off, kad paliktų numatytąjį maršrutą ramybėje, naujesni NetworkManager leidimai tam pačiam tikslui siūlo ip4-auto-default-route ir ip6-auto-default-route; nustatykite juos aiškiai, o ne manykite, kad ryšys elgiasi kaip scenarijus. Hook, kuris stūmė pasirinktinį maršrutą, turi turėti tą maršrutą ryšio maršrutizavimo nustatymuose, kitaip jo tiesiog nebus.
Duokite ryšiui lygiai vieną savininką
Klasikinė vėlesnė klaida yra ryšys, kuris veikia iki kito paleidimo ir tada užsiciklina. Paprastai [email protected] vis dar buvo įjungtas iš ankstesnio eksperimento, arba tiekėjo klientas paleido savo daemon, ir du savininkai rašė maršrutus ir DNS tam pačiam tikslui. NetworkManager nustato resolver savo keliu, wg-quick rašo per resolvconf, ir laimi paskutinis rašantis — taigi vardų sprendimas veikia, tada sustoja, tada vėl veikia. Patikrinkite systemctl status wg-quick@wg0, nmcli connection show --active ir ip link show type wireguard, tada išjunkite antrą savininką, o ne derinkite jo metriką.
Jei jums tikrai reikia abiejų, duokite jiems atskiras sąsajas ir nepersidengiančius leidžiamus IP, ir leiskite lygiai vienam iš jų įdiegti numatytąjį maršrutą. Du numatytieji maršrutai su skirtingomis metrikomis nėra split tunnel; tai lenktynės, kurias nusprendžia paslauga, startuojanti antra. Ir po prisijungimo iš naujo patikrinkite pritaikytą būseną — vienkartinis rankinis resolver pakeitimas, dėl kurio viskas ima veikti, nėra įrodymas, kad importas baigtas.
Patikrinkite srautu ir išgyvenkite paleidimą iš naujo
Pakelkite ryšį su nmcli connection up "Work VPN", tada skaitykite būseną, adresą ir maršrutus, o ne pasitikėkite piktograma: nmcli device show wg0 | grep -E 'GENERAL.STATE|IP4.ADDRESS|IP4.ROUTE', ip route show default ir tikra vardo, kuris sprendžiamas tik tunelio viduje, užklausa. Handshake ar sėkmingas ping įrodo tik tai, kad kriptografija veikia; jis nieko nesako apie persiuntimą, split tunnel priešdėlius ar privatų DNS, o būtent šios dalys dažniausiai lūžta.
Tada paleiskite iš naujo ir pakartokite. Autoconnect elgsena, pervadinta sąsaja ir papildinys, kuris įkeliamas po įrenginio, yra visos klaidos, kurias matote tik švariai paleidus. journalctl -u NetworkManager -b --no-pager | tail -n 40 rodo, ką daemon padarė su šiuo ryšiu šiame paleidime. Antram kompiuteriui nukopijuokite keyfile ir laikykite jį root nuosavybėje su 600 režimu, arba naudokite nmcli connection export OpenVPN ir iš naujo importuokite gautą .ovpn — eksporto kelias neturi WireGuard atitikmens, todėl ta kryptis yra failo kopija arba naujas importas iš apsaugoto originalo.
Trumpa versija, iš eilės: patvirtinkite papildinį arba NetworkManager versiją, importuokite iš absoliutaus kelio, perskaitykite analizuotus nustatymus įskaitant secret vėliavėles, palyginkite OpenVPN eksportą su originalu, patikrinkite hooks ir maršrutus WireGuard pusėje, išjunkite bet kurį antrą savininką, tada po paleidimo iš naujo patikrinkite vardo sprendimą ir maršrutų lentelę. Kai ryšys praeina visa tai, profilio failas, nuo kurio jis prasidėjo, gali grįžti į apsaugotą saugyklą.