Washa upya seva bila mtu yeyote kuingia, kisha ungana kutoka mtandao ambao hauudhibiti. Jaribio hili moja hujibu kama urejeshaji ni wa kweli, kwa sababu handaki inayofanya kazi tu baada ya mtu kuendesha amri kwa mkono si urejeshaji, ni ukarabati. Ukaguzi mwingi huacha mapema sana: daemon huonekana hai, kiolesura huinuka, na ukurasa bado haupaki. Pengo karibu kila mara huwa katika uendelevu wa sehemu zinazozunguka handaki, si katika amri ya handaki yenyewe.

Wamiliki wanne, majaribio manne tofauti

Kabla ya kuwasha upya, taja kile kinachopaswa kurudisha handaki. Jaribio unalofanya na marekebisho unayotumia yote yanategemea jibu hilo, na kuna wamiliki wanne wa kawaida: unit ya systemd kwa huduma ya VPN, unit ya mfano wa wg-quick kwa kiolesura cha WireGuard, runtime ya kontena, au wasifu wa meneja wa mtandao. Ikiwa huwezi kutaja mmiliki, simama na umtafute, kwa sababu jaribio la kuwasha upya bila njia inayotarajiwa ya kuanza hukuambia tu kwamba kitu kilitokea.

Kila mmiliki huhifadhi usanidi wake mahali tofauti. Seva ya OpenVPN inayosimamiwa na systemd husoma usanidi wake wakati wa kuanza, kwa hiyo kile kilicho kwenye faili wakati wa boot ndicho kinachoendesha. Kiolesura cha wg-quick hupata anwani, njia na DNS kutoka faili hiyo hiyo, ikimaanisha kiolesura kilichoinuliwa kwa mkono kutoka shell na ambacho hakijawahi kuwezeshwa kama unit hakitarejea. Kontena hurejesha sehemu yake ya kuingia lakini si mabadiliko ya firewall ya mwenyeji, isipokuwa yale yanaishi nje ya kontena.

Kwanza msingi, vinginevyo matokeo hayana maana

Rekodi hali inayofanya kazi wakati inafanya kazi: anwani kwenye handaki, njia za subnet ya mteja, sheria za NAT au uelekezaji, socket inayosikiliza, na sysctl ya uelekezaji. ip addr show wg0, ip route, nft list ruleset au iptables-save, ss -lunp na sysctl net.ipv4.ip_forward zinatosha kwa wenyeji wengi.

Rekodi jinsi huduma imesanidiwa kuanza, si tu kwamba inaendesha. systemctl is-enabled wg-quick@wg0 na systemctl is-active wg-quick@wg0 hujibu maswali tofauti, na hali iliyowezeshwa ndiyo muhimu wakati wa boot, kama ilivyoelezwa katika systemctl(1). Kwa OpenVPN, angalia ni templeti gani mwenyeji anatumia, kwa sababu openvpn@server na openvpn-server@server ni unit tofauti zenye chaguo-msingi tofauti.

Endesha kuwasha upya na usome kushindwa kwa kwanza

Washa upya kwa makusudi, ndani ya dirisha ulilochagua, ukiwa na konsoli au njia ya nje ya mkondo wazi. Angalia mfuatano wa matukio badala ya hali ya mwisho: mwenyeji anafikika, unit imeamilishwa, kiolesura kipo, njia zimesakinishwa, sheria za firewall zipo, msikilizaji amefungwa, mteja amekubaliwa. Hatua ya kwanza isiyotokea ndiyo ugunduzi; kila kitu baada yake ni kelele.

Huduma inaweza kuwa hai wakati handaki haitumiki, na hiyo ndiyo njia potofu ya kawaida. Kuanza kunaweza kukamilika kabla ya mtandao kuwa mtandaoni ikiwa unit inasubiri network.target pekee badala ya network-online.target. Faili zilizotajwa kama vyeti, funguo au CRL zinaweza kusiwezekana kusoma wakati huo kwa sababu mount au njia ya siri bado haiko tayari. Hakuna moja ya matatizo haya yanayoonekana katika systemctl status hadi usome jarida la unit.

Jaribu kutoka nje ya mwenyeji. Mteja kwenye LAN moja anaweza kufanikiwa kupitia njia ambayo hakuna mteja wa mbali angeweza kutumia, na kipindi cha SSH kwenye mashine hakithibitishi chochote kuhusu handaki. Ungana, tatua jina la ndani, fikia rasilimali ya faragha, kisha ungana tena mara moja ili kuthibitisha kwamba hali ya kufuta na funguo bado zinatumika.

Masharti matatu yanayoamua marekebisho yako

Ikiwa handaki inarudi lakini wateja hawafikii chochote, kushindwa kuko katika uelekezaji au uendelevu wa NAT. Ikiwa wateja hawawezi hata kukamilisha handshake, kushindwa kuko katika kiolesura au nyenzo za uthibitishaji. Ikiwa huduma haianzi kamwe, kushindwa kuko katika faili ya unit au vitegemezi vyake. Matawi haya matatu yanaongoza kwenye marekebisho tofauti, ndiyo sababu kuwasha upya kwa upofu bila msingi kunachukua muda mwingi kuliko inavyookoa.

Fanya marekebisho mahali ambapo mpangilio unamilikiwa. Weka uelekezaji katika sysctl drop-in, weka sheria za NAT katika seti ya sheria inayopakiwa wakati wa boot, washa unit badala ya kuianzisha, na hifadhi siri kwenye njia inayokuwepo kabla ya unit kuanza. Kuongeza usingizi kwenye unit huficha utegemezi badala ya kuutangaza.

Rekodi matokeo katika runbook

Andika kile kilichorudi chenyewe, kile ulilazimika kuanzisha, na pengo lilidumu kwa muda gani. Jumuisha amri kamili ulizotumia kuthibitisha, ili mtu anayefuata arudie jaribio badala ya kubuni jipya. Ikiwa hatua yoyote ilihitaji amri ya mkono, amri hiyo ni ya usanidi, si ya runbook kama hatua ya kudumu.

Kisha panga jaribio linalofuata baada ya mabadiliko yanayofuata kwenye tabaka la mtandao la mwenyeji, si kwa tarehe ya kalenda baada ya miezi sita. Hali ya kushindwa unayojikinga nayo ni amri ya muda iliyohisi ya kudumu, na hizo huonekana hasa wakati mtu anahariri sheria za firewall au anahamisha huduma kwenda unit mpya.

Makala zinazohusiana