Kaks skripti, mis võitlevad sama marsruudi pärast, on Linuxi VPN-i probleemi tavaline kuju, mis kantakse marsruutimisvea nime alla. Üks komponent loob tunneliseadme, teine lisab vaikemarsruudi, kolmas kirjutab üle resolveri konfiguratsiooni ja neljas laeb uuesti tulemüüri reeglid. Ükskõik milline neist võib teise töö tühistada, ja võitja on lihtsalt see, kes jooksis viimasena. Küsimus, millele tasub vastata, ei ole see, millist paketti paigaldada, vaid see, milline komponent on iga olekuosa jaoks volitatud.

Kirjutage see kaart korra üles, ja enamik taasühendamise tõrkeid lakkab olemast mõistatuslikud. Olulised on neli objekti: seade ja selle aadressid, marsruudid ja poliitikareeglid, DNS-i konfiguratsioon ja tulemüür.

Seade ja selle aadressid

Tunneliseadme loob kas profiili tundev haldur või deemon, mille keegi käsitsi käivitas. Mõlemad korraldused töötavad eraldi; nende segamine mitte. Kui profiil kuulub NetworkManagerile, las kuulub talle ka seade, ja ärge käivitage haldamata OpenVPN-protsessi sama tunnelinime vastu.

Pange kirja, kes seadme sessiooni lõppedes eemaldab. Seade, mis oma sessiooni üle elab, on kõige tavalisem aegunud aadresside ja neile järgneva segaduse allikas.

Marsruudid ja poliitikareeglid

Just marsruutidel teevad omandikonfliktid nähtavat kahju. Ühendusehaldur paigaldab tunnelile vaikemarsruudi ja kaugvõrgule täpsema marsruudi; käsitsi kirjutatud skript lisab siis oma vaikemarsruudi teise meetrikaga ning võidab või kaotab vaikselt, sõltuvalt ajastusest. Otsustage, millised kirjed on ühendusega seotud, millised on püsiv poliitika ja milline komponent värskendab neid pärast taasühendamist. Seejärel hoidke teised komponendid sellest tabelist eemal.

Poliitikareeglid väärivad sama selgust, sest reegel, mis osutab tabelile, mida keegi ei täida, tekitab musta augu, mis näeb täpselt välja nagu surnud tunnel. Kui reegel on olemas, et suruda liiklust kuhugi, peab tabelit, mille see valib, haldama sama omanik.

DNS on alati eraldi omanik

Resolveri deemon töötab oma protsessina oma identiteedi all, seega ei päri see tunnelit marsruutimisotsuseid kogemata. Kui VPN surub DNS-serverid, peab miski tõlkima selle iga lingi konfiguratsiooniks, mida resolver järgib, ja miski peab selle hiljem eemaldama.

Müüt on siin see, et nimeserveri profiili kirjutamine muudab seda, kuhu päringud lähevad. See muudab seda, mida resolverile öeldakse, mitte seda, millist soklit resolver ülesvoolu kasutab. Testige päringu ja marsruudiotsinguga, selle asemel et faili usaldada.

Tulemüüri olek ja kes selle taastab

Tulemüüri reeglid on VPN-hostis kõige sagedamini üle kirjutatav objekt. Haldur võib lisada ühenduse kohta NAT-i või edastusreegleid, samal ajal kui käivitamisaegne tulemüüriteenus laeb salvestatud reeglistiku uuesti ja kustutab need. Valige poliitika jaoks üks volitatud osapool ja tehke teisest selle tarbija, või leppige sellega, et taaskäivitamine muudab käitumist vaikselt. Ühendusega seotud erandid kuuluvad faili, mille laeb sama omanik, mitte iptables käsku, mis trükitakse tõrkeotsingu ajal.

Kui reeglid peavad taasühendamise üle elama, öelge seda selgesõnaliselt. Kui ei pea, öelge ka seda, sest järgmine insener eeldab mugavamat vastust.

Elutsükkel: käivitamine, taasühendamine, lammutamine

Andke kõigile kolmele hetkele omanik. Käivitamisel otsustage, mis valmistab eeldused ette ja mis järjekorras. Pehmel taaskäivitusel pidage meeles, et seade võib üle elada, samas kui sessiooni olek mitte, seega peab jooksma valideerija, mitte looja. Lammutamisel eemaldage ainult see, mille see ühendus lõi, sest iga marsruudi lähtestamine või kogu tulemüüri tühjendamine ei ole sama asi kui ühe tunneli teenistusest väljaviimine.

Vaatlemiseks näitab ip monitor link address route tuumamuudatusi nende toimumise ajal, kuid see teatab sündmustest, mitte kavatsusest: kustutatud marsruut ei ütle midagi selle kohta, milline protsess selle kustutas. Siduge see omandikaardiga ja segane sulgemine muutub lühikeseks kandidaatide loendiks.

Eranditel on samuti hind. Terve seadmeklassi haldamata märkimine konflikti vältimiseks annab selle oleku mitte kellelegi, mis on otsus, mitte parandus.

Seotud artiklid