Welke component bezit echt een OpenVPN-routelimit?
Een routelimit kan toebehoren aan de OpenVPN-engine, de NetworkManager-plug-in of de server. Benoem de eigenaar voordat je een profiel bewerkt of een getal verhoogt.
Een profiel met tweehonderd routes werkt op de ene machine en installeert er veertig op een andere. De engine, de integratie die hem start en de server die hem voedt hebben allemaal een stem, en elk kan de lijst op een ander punt stoppen. De fout als één limiet lezen stuurt je naar het verkeerde bestand. Het mechanisme heeft drie fasen, en de fase die stopte laat zichtbaar bewijs achter als je weet waarnaar je moet zoeken.
Drie fasen, drie verschillende limieten
Eerst parseert de engine de optie en beslist of deze versie hem begrijpt. Dan installeert de integratie wat de engine meldt, en haar eigen code kan de lijst beperken of hervormen. Ten slotte beslist de server hoeveel routes hij naar een bepaalde identiteit stuurt, voordat welke clientfase dan ook iets ziet. Drie fasen, drie plafonds, en slechts één ervan is het getal in het profiel.
Eén plafond verhogen doet niets voor de andere. Een geweigerde verzonden route kan een beleidsbeslissing op de server zijn, een overlap die de client heeft opgelost, of een installatielimiet die het overschot weggooide. Elk daarvan heeft een andere oplossing.
Scheid de drie voordat je iets meet. Een parserfout noemt een token, een installatielimiet laat een korte routetabel achter, en een beleidsbeslissing laat helemaal niets achter. Het bewijs vertelt je welke fase je eerst moet onderzoeken.
| Stage | Who decides | What you can see |
|---|---|---|
| Parse | Client engine | An error naming the option |
| Install | Activation owner | A route count below the pushed count |
| Offer | Server policy | A route absent from the pushed list |
De parser spreekt eerst
Een onbekende optie faalt luid en vroeg, en de fouttekst noemt het token. Dat is de gemakkelijkst te herkennen fase: vergelijk het exacte bericht met de geïnstalleerde engineversie, want een optie die in de ene release is toegevoegd is onbekend in de vorige. Een profiel dat uit een nieuwere uitrol is gekopieerd is de gebruikelijke bron van die mismatch. De parser negeert nooit stilzwijgend een richtlijn die hij niet herkent.
Een geaccepteerde optie zegt niets over het resultaat. Het parsen lukt, en de lijst kan alsnog door de installatie worden ingekort of nooit door de server worden aangeboden. Behandel een schone parse als toestemming om door te gaan, niet als bewijs.
Noteer de versiestring uit het binaire bestand dat werkelijk draaide, niet uit het idee van de pakketbeheerder over wat er is geïnstalleerd. Die twee zijn het vaker oneens dan verwacht.
De installatie heeft haar eigen plafond
De component die de activering bezit kan een NetworkManager-plug-in zijn in plaats van het binaire bestand van de engine, en kan haar eigen limiet opleggen voordat er een tunnel bestaat. De editor kan een veld tonen dat de draaiende engine nooit leest, of een veld lezen dat de editor niet toont. Beide situaties lijken van buitenaf op een clientfout. Geen van beide wordt verholpen door het profiel te bewerken.
Tel wat er is aangekomen in plaats van wat is geconfigureerd. Het commando ip route show dev tun0 toont de geïnstalleerde routes, en dat aantal met de verzonden lijst vergelijken scheidt een weggegooide route van een die nooit is verzonden. Een aantal dat overeenkomt met de verzending schuift de verdenking terug naar de server.
Een shell-wrapper rond het binaire bestand van de engine om een groter getal af te dwingen vertroebelt upgrades en maakt terugrollen giswerk. Hij verbergt ook de echte limiet voor iedereen die de configuratie daarna leest.
De server beslist wat jou is aangeboden
Beleid per client kan de lijst verkleinen voordat die wordt verzonden. Een clientspecifiek bestand kan routes toevoegen voor één identiteit, of een groepsbeleid kan ze weglaten, en de client kan een gefilterde route niet onderscheiden van een die nooit is gedefinieerd. Die dubbelzinnigheid is waarom het serverrecord ertoe doet. Vraag om de effectieve verzendlijst voor die identiteit, niet om de sjabloon.
Vergelijk het serverrecord met de ontvangen lijst. Het gat ertussen is de beleidslaag, en het is meestal kleiner dan het profiel suggereert.
Als het ontwerp het toelaat, vat aangrenzende netwerken samen en verwijder verouderde vermeldingen. Minder en grotere routes lossen meer gevallen op dan een hoger plafond.
Wijzig het getal op de juiste plek
Gebruik de gedocumenteerde instelling van de component die de limiet werkelijk bezit. Als het veld in de plug-in ontbreekt, controleer dan of de plug-in ouder is dan de functie of dat een andere achtergrond de routes bezit. Documenteer daarna de versies van de engine, de plug-in en de server naast de waarde die je koos. De volgende upgrade opent de vraag opnieuw, en de notitie is wat haar beantwoordbaar maakt.
Test opnieuw na elke upgrade van elk van de drie. Een limiet die op de juiste plek is verhoogd verschuift alsnog wanneer de component die hem handhaaft verandert. Het versierecord is het enige dat die verschuiving voorspelbaar maakt.