Twee skrifte wat oor dieselfde roete veg, is die gewone vorm van ’n Linux-VPN-probleem wat as ’n roetefout aangemeld word. Een komponent skep die tonneltoestel, ’n ander voeg ’n verstekroete by, ’n derde herskryf die resolveerder-konfigurasie, en ’n vierde herlaai firewall-reëls. Enige van hulle kan ’n ander se werk ongedaan maak, en die wenner is bloot die een wat laaste gehardloop het. Die vraag wat die moeite werd is om te beantwoord, is nie watter pakket om te installeer nie, maar watter komponent vir elke stuk toestand gesaghebbend is.

Skryf daardie kaart een keer neer, en die meeste herverbindingfoute hou op om raaiselagtig te wees. Vier objekte maak saak: die toestel en sy adresse, die roetes en beleidsreëls, die DNS-konfigurasie en die firewall.

Die toestel en sy adresse

’n Tonneltoestel word geskep óf deur ’n bestuurder wat die profiel ken, óf deur ’n daemon wat iemand met die hand begin het. Albei reëlings werk op hul eie; om hulle te meng nie. As NetworkManager die profiel besit, laat dit ook die toestel besit, en moenie ’n onbestuurde OpenVPN-proses teen dieselfde tonnelnaam begin nie.

Teken aan wie die toestel verwyder wanneer die sessie eindig. ’n Toestel wat sy sessie oorleef, is die algemeenste bron van verouderde adresse en van die verwarring wat daarop volg.

Roetes en beleidsreëls

Roetes is waar eienaarskapkonflikte sigbare skade aanrig. ’n Verbindingsbestuurder installeer ’n verstekroete vir die tonnel plus ’n meer spesifieke roete vir die afgeleë netwerk; ’n handgeskrewe skrip voeg dan sy eie verstek by met ’n ander metrieke waarde en wen of verloor stilweg, afhangende van die tydsberekening. Besluit watter inskrywings aan die verbinding gekoppel is, watter permanente beleid is, en watter komponent hulle ná ’n herverbinding verfris. Maak dan die ander komponente uit daardie tabel.

Beleidsreëls verdien dieselfde duidelikheid, want ’n reël wat na ’n tabel wys wat niemand vul nie, skep ’n swart gat wat presies soos ’n dooie tonnel lyk. As ’n reël bestaan om verkeer êrens heen te forseer, moet die tabel wat dit kies deur dieselfde eienaar onderhou word.

DNS het altyd ’n aparte eienaar

’n Resolveerder-daemon loop as sy eie proses onder sy eie identiteit, dus erf dit nie per ongeluk die tonnel se roetebesluite nie. Wanneer die VPN DNS-bedieners stoot, moet iets dit vertaal in per-skakel-konfigurasie wat die resolveerder eerbiedig, en iets moet dit daarna weer verwyder.

Die mite hier is dat om ’n naambediener in die profiel te skryf, verander waar navrae gaan. Dit verander wat aan die resolveerder gesê word, nie watter sok die resolveerder opstroom gebruik nie. Toets met ’n navraag plus ’n roete-opsoek eerder as om die lêer te vertrou.

Firewall-toestand, en wie dit herstel

Firewall-reëls is die objek wat die meeste op ’n VPN-gasheer oorskryf word. ’n Bestuurder kan NAT- of aanstuur-reëls per verbinding byvoeg, terwyl ’n firewall-diens by die selflaai ’n gestoorde reëlstel herlaai en hulle uitwis. Kies een gesag vir beleid en maak die ander ’n verbruiker daarvan, of aanvaar dat ’n herlaai die gedrag stilweg verander. Aan die verbinding gekoppelde uitsonderings hoort in ’n lêer wat dieselfde eienaar laai, nie in ’n iptables-opdrag wat tydens foutsoeking getik word nie.

As reëls ’n herverbinding moet oorleef, sê dit uitdruklik. As hulle nie moet nie, sê dit ook, want die volgende ingenieur sal die antwoord aanneem wat die gerieflikste is.

Lewensiklus: selflaai, herverbinding, aftakeling

Gee elkeen van daardie drie oomblikke ’n eienaar. By selflaai, besluit wat voorvereistes voorberei en in watter volgorde. By ’n sagte herbegin, onthou dat die toestel kan oorleef terwyl die sessietoestand nie, so ’n valideerder moet hardloop eerder as ’n skepper. By aftakeling, verwyder net wat hierdie verbinding geskep het, want om elke roete te herstel of die hele firewall te leegmaak is nie dieselfde as om een tonnel uit diens te stel nie.

Vir waarneming wys ip monitor link address route kernelewysigings soos hulle gebeur, maar dit rapporteer gebeure eerder as bedoeling: ’n verwyderde roete sê niks oor watter proses dit verwyder het nie. Koppel dit aan die eienaarskapkaart, en ’n verwarrende afsluiting word ’n kort lys kandidate.

Uitsonderings het ook ’n koste. Om ’n hele toestelklas as onbestuur gemerk te merk om ’n konflik te ontvlug, gee daardie toestand aan niemand, wat ’n besluit is eerder as ’n regstelling.

Verwante artikels