OpenVPN paleidžiant Ubuntu: NetworkManager ar systemd?
Nešiojamasis kompiuteris ir serveris be ekrano reikalauja skirtingų paleidimo kelių. Palyginkite antrinį NetworkManager ryšį su openvpn-client@ ir jo kredencialų failu.
Dauguma vadovų šį pasirinkimą pateikia kaip kosmetinį: arba leiskite NetworkManager pakelti tunelį, arba įjunkite systemd egzempliorių ir viskas. Du keliai skiriasi vienu dalyku, kuris lemia rezultatą mašinoje be ekrano, ir tai neturi nieko bendra su tuo, kuri priemonė naujesnė. NetworkManager atrakina paslaptis per sesiją; systemd egzempliorius neturi sesijos, kurią atrakintų. Rinkitės tą, kurio paslapčių tvarkymas atitinka priešais esančią mašiną.
Visa kita, nuo maršrutų įdiegimo iki prisijungimo iš naujo elgsenos, kyla iš to pirmojo sprendimo.
Raktų raištis yra skirtumas, apie kurį niekas nekalba
Kai NetworkManager valdo VPN profilį, slaptažodis gali gyventi prisijungimo raktų raištyje, kuris atsirakina, kai naudotojas prisijungia. Tai gerai veikia nešiojamajame kompiuteryje: žmogus yra šalia, raištis atsidaro, tunelis pakyla. Serveryje, kuris paleidžiamas be priežiūros, nėra kam ką nors atrakinti, todėl profilis laukia paslapties, kuri niekada neateina. Ryšys atrodo sukonfigūruotas ir niekada neįsijungia.
systemd egzempliorius išvengia šios problemos skaitydamas kredencialų failą iš disko, o tai failą paverčia tuo, ką saugote. chmod 400 ir root nuosavybė yra minimumas, o failas turėtų likti už atsarginių kopijų ir atvaizdų šablonų, kurių nekontroliuojate.
VPN prijungimas prie ryšio nėra paleidimo garantija
nm-connection-editor pasirinkite laidinį arba belaidį ryšį, o ne VPN, atidarykite skirtuką General, pažymėkite automatinio prisijungimo prie VPN parinktį ir pavadinkite profilį. Tada NetworkManager įjungia VPN kaip antrinį ryšį, kai pirminis pasiekia prisijungusią būseną. Tai priklausomybė, o ne ugniasienės taisyklė. Paketai vis dar gali išeiti per sekundes prieš tuneliui pakylant, o išsaugota paslaptis, kurios nepavyksta atrakinti, palieka mašiną prisijungusią be jo.
Jei reikalavimas yra, kad niekas neišeitų be tunelio, pasakykite tai ir sukurkite išjungiklį, nes šis nustatymas jo nesuteiks. Išbandykite ir pristabdymą bei atnaujinimą, nes antrinis ryšys iš naujo įvertinamas grįžtant.
systemd egzemplioriui reikia atitinkančio failo vardo
Įdėkite profilį į kliento katalogą, kurio tikisi paketas, pavyzdžiui, /etc/openvpn/client/office.conf, ir iš jo vidaus nurodykite kredencialų failą su auth-user-pass office.cred. Egzemplioriaus vardas yra failo vardas be priesagos, todėl openvpn-client@office skaito office.conf. Įjunkite jį su sudo systemctl enable --now openvpn-client@office ir patvirtinkite atitikimą su systemctl cat openvpn-client@office, o ne pasitikėdami pavyzdžiu iš tinklaraščio.
Profilio viduje esantys keliai sprendžiami vieneto darbinio katalogo, o ne paties profilio atžvilgiu, todėl santykinė ca arba auth-user-pass eilutė gali nepavykti paleidžiant, nors rankiniu būdu veikia. Naudokite absoliučius kelius viskam, ką vienetas turi rasti. Tada po tikro paleidimo perskaitykite journalctl -u openvpn-client@office -b; vienetas, kuris praneša apie aktyvumą be tunelio, paprastai tame žurnale nurodo trūkstamą failą.
Senesni paketai pateikia kitą šablono vardą, todėl systemctl list-unit-files 'openvpn*' nusprendžia, kuris egzistuoja šiame hoste.
Prisijungimo iš naujo elgsena yra atskiras sprendimas
Profilis su ping-restart atkuria tunelį po jo kritimo, o vienetas su perkrovimo direktyva daro ką nors panašaus paslaugos lygmeniu. Tai politika, kurią renkatės, o ne numatytosios reikšmės, kurias paveldite. Jei ryšys turėtų kilti tik pagal poreikį, sąmoningai pašalinkite perkrovimo elgseną ir užrašykite kodėl. Jei vienetas paleidžiamas anksčiau, nei tinklas tampa tinkamas naudoti, jam reikia pakartotinio bandymo politikos, nes vienas nepavykęs bandymas paleidžiant pats nepasikartoja.
Sustabdymas taip pat pažodinis: sudo systemctl disable --now openvpn-client@office sustabdo veikiantį egzempliorių ir pašalina paleidimo nuorodą. Vien išjungimas palieka tunelį veikti iki kito perkrovimo, o tai nustebina kiekvieną, kuris tikrina išjungdamas ir mato, kad sąsaja lieka pakilusi.
Perkraukite, tada patikrinkite keturis dalykus iš eilės
Paslaugos perkrovimas tikrina paslaugą; mašinos perkrovimas tikrina paleidimo kelią. Po perkrovimo patvirtinkite, kad vienetas pakilo, tada kad yra maršrutas į nuotolinį potinklį, tada kokį adresą mašina pateikia internetui, ir galiausiai kad vardai sprendžiami per tunelį. Tie keturi patikrinimai nepavyksta būtent tokia tvarka, kai kažkas negerai, o tai daro pirmąjį nepavykimą naudingą.
Aktyvus vienetas be maršruto paprastai reiškia, kad profilis prisijungė, bet serveris neįstūmė jokio maršruto, arba maršrutas buvo įdiegtas sąsajoje, kuri vėliau dingo. Maršrutas be veikiančio vardų paieškos nurodo DNS konfigūraciją, o ne patį tunelį.
Iš anksto nuspręskite, kas turi įvykti, kai tunelis negali pakilti. Grįžimas prie įprasto ryšio yra politika, ir ji turėtų būti užrašyta, o ne palikta tam tvarkyklės, kuri paleido pirmoji.