Kven eig adressa, ruta, DNS-en og brannmuren på ein Linux-VPN?
Ein Linux-VPN treng éi styresmakt per objekt: eining, adresse, ruter, DNS, brannmur. Skriv ned kartet, og definer deretter kva oppstart, attkopling og nedrigging gjenopprettar.
To skript som kjempar om den same ruta er den vanlege forma for eit Linux-VPN-problem som blir registrert som ein rutefeil. Éin komponent opprettar tunneleininga, ein annan legg til ei standardrute, ein tredje skriv om resolvarkonfigurasjonen, og ein fjerde lastar inn brannmurreglar på nytt. Kven som helst av dei kan oppheve arbeidet til ein annan, og vinnaren er rett og slett den som køyrde sist. Spørsmålet som er verdt å svare på er ikkje kva pakke som skal installerast, men kva komponent som har styresmakt over kvar del av tilstanden.
Skriv ned det kartet éin gong, og dei fleste attkoplingfeil sluttar å vere mystiske. Fire objekt betyr noko: eininga og adressene hennar, rutene og policyreglane, DNS-konfigurasjonen og brannmuren.
Eininga og adressene hennar
Ei tunneleining blir oppretta anten av ein behandlar som kjenner profilen, eller av ein daemon som nokon starta for hand. Begge ordningane verkar for seg sjølv; å blande dei gjer det ikkje. Viss NetworkManager eig profilen, la han også eige eininga, og ikkje start ein uhandtert OpenVPN-prosess mot det same tunnelnamnet.
Noter kven som fjernar eininga når økta sluttar. Ei eining som overlever økta si, er den vanlegaste kjelda til utdaterte adresser og til forvirringa som følgjer.
Ruter og policyreglar
Det er på rutene at eigedomskonfliktar gjer synleg skade. Ein tilkoplingsbehandlar installerer ei standardrute for tunnelen pluss ei meir spesifikk rute for fjernnettet; eit handskrive skript legg deretter til si eiga standardrute med ein annan metrikk og vinn eller tapar stille avhengig av tidspunktet. Avgjer kva oppføringar som er tilkoplingsbundne, kva som er permanent policy, og kva komponent som oppdaterer dei etter ei attkopling. Hald deretter dei andre komponentane ute av den tabellen.
Policyreglar fortener den same klarleiken, for ein regel som peikar på ein tabell som ingen fyller ut, produserer eit svart hol som ser nøyaktig ut som ein død tunnel. Viss ein regel finst for å tvinge trafikk ein stad, må tabellen han vel, haldast ved av den same eigaren.
DNS er alltid ein separat eigar
Ein resolvardaemon køyrer som sin eigen prosess under sin eigen identitet, så han arvar ikkje rutingavgjerdene til tunnelen ved eit uhell. Når VPN-en dyttar DNS-tenarar, må noko omsetje det til ein konfigurasjon per lenkje som resolvaren respekterer, og noko må fjerne han etterpå.
Myten her er at det å skrive ein namnetenar i profilen endrar kvar spørjingane går. Det endrar kva resolvaren blir fortald, ikkje kva sokkel resolvaren brukar oppstraums. Test med ei spørjing pluss eit ruteoppslag i staden for å stole på fila.
Brannmurtilstanden, og kven som gjenopprettar han
Brannmurreglar er objektet som oftast blir skrive over på ein VPN-vert. Ein behandlar kan leggje til NAT- eller vidaresendingsreglar per tilkopling, medan ein brannmarteneste ved oppstart lastar inn eit lagra regelsett på nytt og slettar dei. Vel éi styresmakt for policyen og gjer den andre til ein forbrukar av han, eller godta at ein omstart stille endrar åtferda. Tilkoplingsbundne unntak høyrer heime i ei fil som den same eigaren lastar, ikkje i ein iptables-kommando som blir skriven inn under feilsøking.
Viss reglar må overleve ei attkopling, seier det eksplisitt. Viss ikkje, seier det også, for den neste ingeniøren vil anta det mest komfortable svaret.
Livssyklus: oppstart, attkopling, nedrigging
Gje kvart av dei tre augneblinkane ein eigar. Ved oppstart, avgjer kva som førebur føresetnadene og i kva rekkjefølgje. Ved ein mjuk omstart, hugs at eininga kan overleve medan økttilstanden ikkje kan, så ein validator må køyre i staden for ein skapar. Ved nedrigging, fjern berre det denne tilkoplinga oppretta, for å tilbakestille kvar rute eller tøme heile brannmuren er ikkje det same som å ta éin tunnel ut av drift.
Til observasjon viser ip monitor link address route kjerneendringar etter kvart som dei skjer, men det rapporterer hendingar snarare enn hensikt: ei sletta rute seier ingenting om kva prosess som sletta ho. Par det med eigarskapskartet, og ein forvirrande nedstenging blir ei kort liste med kandidatar.
Unntak har også ein pris. Å merke ein heil einingsklasse som uhandtert for å unnsleppe ein konflikt gjev den tilstanden til ingen, noko som er ei avgjerd snarare enn ei retting.