VPN-serveri taastumise testimine pärast taaskäivitust: mida kõigepealt kontrollida
Käivita uuesti, kui keegi pole sisse loginud, ja ühendu seejärel väljastpoolt. Kontrolli üksust, liidest, marsruute ja tulemüürireegleid, mis peavad ise tagasi tulema.
Käivitage server uuesti, kui keegi pole sisse loginud, ja ühenduge seejärel võrgust, mida te ei kontrolli. See üks test vastab, kas taastumine on tõeline, sest tunnel, mis töötab alles pärast seda, kui keegi käivitab käsitsi käsu, ei ole taastumine, vaid parandus. Enamik kontrolle lõpeb liiga vara: deemon näitab end aktiivsena, liides tuleb üles ja leht ei laadi ikkagi. Lünk on peaaegu alati tunneli ümber olevate osade püsivuses, mitte tunneli käsk ise.
Neli omanikku, neli erinevat testi
Enne taaskäivitust nimetage, mis peaks tunneli tagasi tooma. Test, mille te läbi viite, ja parandus, mille te teete, sõltuvad mõlemad sellest vastusest ning tavaliselt on neli omanikku: systemd üksus VPN-i deemonile, wg-quick-i eksemplari üksus WireGuardi liidesele, konteineri runtime või võrguhalduri profiil. Kui te ei saa omanikku nimetada, peatuge ja leidke see, sest taaskäivitustest ilma oodatud käivitusrajata ütleb teile ainult, et midagi juhtus.
Iga omanik hoiab oma konfiguratsiooni erinevas kohas. systemd-iga hallatav OpenVPN-i server loeb oma konfiguratsiooni käivitamisel, seega see, mis on failis alglaadimise ajal, on see, mis töötab. wg-quick-i liides tuletab oma aadressid, marsruudid ja DNS-i samast failist, mis tähendab, et käsitsi kestast üles tõstetud ja kunagi üksusena lubamata liides ei tule tagasi. Konteiner toob tagasi oma sisenemispunkti, kuid mitte hosti tulemüüri muudatusi, kui need ei ela väljaspool konteinerit.
Kõigepealt baasjoon, muidu ei tähenda tulemus midagi
Jäädvustage töötav olek, kuni see töötab: aadressid tunnelil, marsruudid kliendi alavõrgule, NAT-i või edastamise reeglid, kuulav sokkel ja edastamise sysctl. ip addr show wg0, ip route, nft list ruleset või iptables-save, ss -lunp ja sysctl net.ipv4.ip_forward on enamikul hostidel piisavad.
Kirjutage üles, kuidas teenus on käivitamiseks konfigureeritud, mitte ainult see, et see töötab. systemctl is-enabled wg-quick@wg0 ja systemctl is-active wg-quick@wg0 vastavad erinevatele küsimustele ning just lubatud olek on alglaadimisel oluline, nagu on kirjeldatud jaotises systemctl(1). OpenVPN puhul kontrollige, millist malli host kasutab, sest openvpn@server ja openvpn-server@server on erinevad üksused erinevate vaikeväärtustega.
Viige taaskäivitus läbi ja lugege esimest tõrget
Käivitage tahtlikult uuesti valitud ajavahemikus, avatud konsooli või ribavälise teega. Jälgige sündmuste järjekorda, mitte lõppolekut: host on kättesaadav, üksus aktiveeritud, liides olemas, marsruudid paigaldatud, tulemüürireeglid olemas, kuulaja seotud, klient vastu võetud. Esimene samm, mida ei juhtu, on leid; kõik pärast seda on müra.
Deemon võib olla aktiivne, samal ajal kui tunnel on kasutuskõlbmatu, ja see on kõige tavalisem vale läbiminek. Käivitamine võib lõppeda enne, kui võrk on võrgus, kui üksus ootab ainult network.target, mitte network-online.target. Viidatud failid, näiteks sertifikaadid, võtmed või CRL, võivad sel hetkel olla loetamatud, sest haakepinge või saladuste tee pole veel valmis. Kumbki probleem ei ilmu systemctl status-s enne, kui loete üksuse logi.
Testige väljaspool hosti. Klient samas LAN-is võib õnnestuda marsruudi kaudu, mida ükski kaugklient ei kasutaks, ja SSH-sessioon masinasse ei tõesta tunnelist midagi. Ühenduge, lahendage sisemine nimi, jõudke privaatse ressursini ja seejärel ühenduge uuesti, et kinnitada, et tühistamise olek ja võtmed kehtivad endiselt.
Kolm tingimust, mis määravad teie paranduse
Kui tunnel tuleb tagasi, kuid kliendid ei jõua kuhugi, on tõrge marsruutimises või NAT-i püsivuses. Kui kliendid ei suuda isegi kätlust lõpule viia, on tõrge liideses või autentimismaterjalis. Kui teenus ei käivitu kunagi, on tõrge üksusefailis või selle sõltuvustes. Need kolm haru viivad erinevate parandusteni, mistõttu pime taaskäivitus ilma baasjooneta maksab rohkem aega, kui säästab.
Tehke parandus seal, kus säte asub. Pange edastamine sysctl drop-in'i, pange NAT-i reeglid reeglistikku, mis laaditakse alglaadimisel, lubage üksus selle käivitamise asemel ja hoidke saladusi teel, mis on olemas enne üksuse käivitumist. Une lisamine üksusele peidab sõltuvuse, selle asemel et seda deklareerida.
Kirjutage tulemus runbooki
Kirjutage üles, mis tuli ise tagasi, mida pidite käivitama ja kui kaua lünk kestis. Lisage täpsed käsud, mida kontrollimiseks kasutasite, et järgmine inimene kordaks testi, selle asemel et uut välja mõelda. Kui mõni samm nõudis käsitsi käsku, kuulub see käsk konfiguratsiooni, mitte runbooki alalise sammuna.
Seejärel ajastage järgmine test pärast hosti võrgupinu järgmist muudatust, mitte kalendrikuupäevale kuue kuu pärast. Tõrkerežiim, mille vastu te kaitsete, on ajutine käsk, mis tundus püsiv, ja need ilmuvad täpselt siis, kui keegi muudab tulemüürireegleid või viib teenuse uude üksusesse.