OpenVPN serverim, kas startēšanas laikā nepalaižas, tiek piedāvāti divi risinājumi: gaidīt adresi vai ļaut pakalpojumam mēģināt vēlreiz, līdz piesaiste izdodas. Abi risina vienus un tos pašus simptomus ar atšķirīgu kļūmes uzvedību. Gaidīšana iekodē konkrētu priekšnosacījumu un skaļi neizdodas, kad tā nav; atkārtošana slēpj priekšnosacījumu un turpina mēģināt. Kurš no tiem pieder jūsu vienībai, ir atkarīgs no tā, vai šī adrese ir projektēta atkarība vai laika nejaušība.

Abi ir labāki par fiksētu miegu, kas neko negaida un arī neziņo, ko tas gaidīja.

Ko patiesībā prasa opcija local

local nosauc adresi, kurai dēmons piesaista savu socket, un piesaiste vēl neesošai adresei uzreiz neizdodas ar kļūdu par pieprasīto adresi. Kad opcija nav norādīta, dēmons klausās visās adresēs, tāpēc tas pats profils strādā mašīnā, kuras saskarne vēl nav augšā: tas klausās visur, nevis vienā adresē, kuru jūs nosaukāt. Šī atšķirība ir visa kļūme, un tā paliek neredzama līdz restartam.

Prasība nav tāda, ka saskarnei jābūt augšā kaut kādā vispārīgā nozīmē. Adresei piesaistes brīdī jābūt piešķirtai pareizajai saskarnei, un tai jābūt pamata saskarnei, nevis tunelim, ko tas pats dēmons izveidotu vēlāk. Pārbaude, kas veikta dažas minūtes pēc pieteikšanās, neko nepierāda par startēšanas secību.

Gaidīt adresi vai atkārtot piesaisti

Gaidīšana nozīmē ExecStartPre, kas aptaujā, līdz adrese parādās, ar ierobežotu mēģinājumu skaitu un iziešanu, kas nav nulle, kad laiks beidzas. Atkārtošana nozīmē ļaut galvenajam procesam neizdoties un lūgt pakalpojumu pārvaldniekam to palaist no jauna, piemēram, Restart=on-failure ar RestartSec=5. Pirmais ziņo par trūkstošu priekšnosacījumu kā par neizdevušos vienību, bet otrais – kā par restartu sēriju, kas galu galā apstājas; tas ir skaļāk žurnālā, bet iztur adresi, kas ierodas vēlu tādu iemeslu dēļ, kurus jūs nevarat paredzēt.

Dodiet priekšroku gaidīšanai, ja adrese ir projektēta atkarība, un atkārtošanai, ja adrese parasti parādās, bet tās laiks mainās. Tos kombinēt ir saprātīgi: ierobežota gaidīšana aptver parasto gadījumu, bet restartēšanas politika – izņēmumu. Nevienam no tiem nevajadzētu darboties mūžīgi, jo vienība, kas bezgalīgi atkārto, slēpj nepareizu konfigurāciju, nevis ziņo par to.

Kāpēc network-online.target nav pietiekams

network-online.target sola to, ko aktīvā tīkla implementācija saprot ar online, un neko vairāk. Ar systemd-networkd systemd-networkd-wait-online izlemj, kad šis mērķis tiek sasniegts, un tā noklusējuma online izpratne var būt izpildīta pirms jūsu konkrētās adreses pastāvēšanas. Saskaņā ar NetworkManager pakalpojums wait-online piemēro savus noteikumus. Kārtošana pēc mērķa ir veselīga bāzes līnija, nevis garantija, ka viena adrese, DNS atbilde vai attāls partneris ir gatavs.

Tā pati loģika izslēdz ierastās alternatīvas. Darbvirsmas automātiskās palaišanas ieraksts gaida lietotāja sesiju, kas serverī var nekad neatvērties, un aizkavēta cron komanda pievieno pagājušo laiku, nenosaucot resursu, kura parādīšanos tā cerēja sagaidīt. Abas var mēnešiem izskatīties veiksmīgas un pēc tam neizdoties vienīgajā startā, kam ir nozīme.

Pārbaudiet piesaisti pēc aukstas palaišanas

Pārbaudiet ar īstu aukstu palaišanu, nevis pakalpojuma restartu, jo restarts manto adresi, kas startēšanas secībai bija jāizveido. Pēc starta ss -lntp vai ss -lunp parāda lokālo adresi, kurai katrs klausītājs faktiski piesaistījās, un journalctl -b -u openvpn-server@server parāda, vai pirmais mēģinājums neizdevās. Salīdziniet piesaistīto adresi ar to, kas ir profilā, un pēc tam atkārtojiet salīdzinājumu pēc tīkla atkārtotas pievienošanas.

Ja profilam nekad nevajadzēja fiksētu adresi, local noņemšana ir likumīgs vienkāršojums, bet padariet to par drošības lēmumu, nevis problēmu risināšanas ieradumu.

Klausītāja paplašināšana maina to, kurš var tam piekļūt, tāpēc saistiet šo izmaiņu ar ugunsmūra politiku, kurai tas bija jāierobežo. Pakalpojums, kas uzticami startē katrā saskarnē, nav atrisinājis sākotnējo problēmu; tas ir pārvietojis problēmu uz tīkla malu.

Saistītie raksti