Käynnistä palvelin uudelleen, kun kukaan ei ole kirjautuneena, ja yhdistä sitten verkosta, jota et hallitse. Tämä yksi testi vastaa, onko palautuminen todellista, sillä tunneli, joka toimii vasta kun joku ajaa komennon käsin, ei ole palautuminen vaan korjaus. Useimmat tarkistukset pysähtyvät liian aikaisin: taustapalvelu näyttää aktiiviselta, rajapinta nousee, eikä sivu silti lataudu. Aukko on lähes aina tunnelin ympärillä olevien osien pysyvyydessä, ei itse tunnelikomennossa.

Neljä omistajaa, neljä eri testiä

Nimeä ennen uudelleenkäynnistystä, mikä tunnelin pitäisi palauttaa. Suorittamasi testi ja tekemäsi korjaus riippuvat molemmat tästä vastauksesta, ja yleisiä omistajia on neljä: systemd-yksikkö VPN-taustapalvelulle, wg-quick-instanssiyksikkö WireGuard-rajapinnalle, konttiajoympäristö tai verkkohallinnan profiili. Jos et osaa nimetä omistajaa, pysähdy ja etsi se, sillä uudelleenkäynnistystesti ilman odotettua käynnistyspolkua kertoo vain, että jotain tapahtui.

Jokainen omistaja pitää kokoonpanonsa eri paikassa. systemd:n hallitsema OpenVPN-palvelin lukee kokoonpanonsa käynnistyksessä, joten se, mitä tiedostossa on käynnistyshetkellä, on se, mikä toimii. wg-quick-rajapinta johtaa osoitteensa, reittinsä ja DNS:nsä samasta tiedostosta, mikä tarkoittaa, että kuoresta käsin nostettu ja koskaan yksikkönä käyttöön otettu rajapinta ei palaa. Kontti palauttaa aloituspisteensä, mutta ei isäntäkoneen palomuurimuutoksia, elleivät ne elä kontin ulkopuolella.

Ensin lähtötaso, muuten tulos ei tarkoita mitään

Tallenna toimiva tila sen toimiessa: osoitteet tunnelissa, reitit asiakkaan aliverkkoon, NAT- tai välityssäännöt, kuunteleva pistoke ja välityksen sysctl. ip addr show wg0, ip route, nft list ruleset tai iptables-save, ss -lunp ja sysctl net.ipv4.ip_forward riittävät useimmilla isännillä.

Kirjaa, miten palvelu on määritetty käynnistymään, ei vain että se on käynnissä. systemctl is-enabled wg-quick@wg0 ja systemctl is-active wg-quick@wg0 vastaavat eri kysymyksiin, ja käyttöön otettu tila on se, jolla on merkitystä käynnistyksessä, kuten kuvataan kohdassa systemctl(1). OpenVPN palvelun osalta tarkista, mitä mallia isäntä käyttää, sillä openvpn@server ja openvpn-server@server ovat eri yksiköitä, joilla on eri oletusarvot.

Suorita uudelleenkäynnistys ja lue ensimmäinen vika

Käynnistä tarkoituksella uudelleen valitsemassasi ikkunassa, konsolin tai kaistanulkoisen reitin ollessa auki. Seuraa tapahtumien järjestystä lopputilan sijaan: isäntä tavoitettavissa, yksikkö aktivoitu, rajapinta läsnä, reitit asennettu, palomuurisäännöt läsnä, kuuntelija sidottu, asiakas hyväksytty. Ensimmäinen askel, joka ei tapahdu, on löydös; kaikki sen jälkeen on kohinaa.

Taustapalvelu voi olla aktiivinen, vaikka tunneli on käyttökelvoton, ja se on yleisin virheellinen läpäisy. Käynnistys voi valmistua ennen kuin verkko on verkossa, jos yksikkö odottaa vain network.target-kohdetta network-online.target-kohteen sijaan. Viitatut tiedostot, kuten varmenteet, avaimet tai CRL, voivat olla lukukelvottomia sillä hetkellä, koska liitos tai salaisuuksien polku ei ole vielä valmis. Kumpikaan ongelma ei näy systemctl status-kohdassa ennen kuin luet yksikön lokin.

Testaa isännän ulkopuolelta. Saman lähiverkon asiakas voi onnistua reittiä, jota mikään etäasiakas ei koskaan käyttäisi, eikä SSH-istunto koneelle todista tunnelista mitään. Yhdistä, ratkaise sisäinen nimi, saavuta yksityinen resurssi ja yhdistä sitten vielä kerran vahvistaaksesi, että mitätöintitila ja avaimet pätevät edelleen.

Kolme ehtoa, jotka ratkaisevat korjauksesi

Jos tunneli palaa mutta asiakkaat eivät tavoita mitään, vika on reitityksessä tai NAT:n pysyvyydessä. Jos asiakkaat eivät voi edes suorittaa kättelyä loppuun, vika on rajapinnassa tai todennusmateriaalissa. Jos palvelu ei koskaan käynnisty, vika on yksikkötiedostossa tai sen riippuvuuksissa. Nämä kolme haaraa johtavat erilaisiin korjauksiin, minkä vuoksi sokea uudelleenkäynnistys ilman lähtötasoa maksaa enemmän aikaa kuin säästää.

Tee korjaus siellä, missä asetus omistetaan. Laita välitys sysctl drop-iniin, laita NAT-säännöt käynnistyksessä latautuvaan sääntöjoukkioon, ota yksikkö käyttöön sen käynnistämisen sijaan ja pidä salaisuudet polulla, joka on olemassa ennen yksikön käynnistymistä. Unen lisääminen yksikköön piilottaa riippuvuuden sen sijaan että ilmoittaisi sen.

Kirjaa tulos runbookiin

Kirjoita, mikä palasi itsestään, mitä jouduit käynnistämään ja kuinka kauan aukko kesti. Sisällytä täsmälliset komennot, joilla tarkistit, jotta seuraava henkilö toistaa testin sen sijaan että keksii uuden. Jos jokin vaihe vaati käsikomennon, se komento kuuluu kokoonpanoon, ei runbookiin pysyvänä vaiheena.

Ajoita seuraava testi sitten isännän verkkopinon seuraavan muutoksen jälkeen, älä kuuden kuukauden päähän kalenteripäivälle. Vikatila, jolta suojaudut, on väliaikainen komento, joka tuntui pysyvältä, ja ne ilmestyvät juuri silloin, kun joku muokkaa palomuurisääntöjä tai siirtää palvelun uuteen yksikköön.

Aiheeseen liittyvät artikkelit