Door OpenVPN gepushte routes niet geïnstalleerd: timing, rechten of beleid
Een gepushte route kan verdwijnen in een timingrace, door ontbrekende rechten of door een clientbeleid. Vergelijk eerst de pushlijst van de server met de echte tabel.
De server zegt dat hij de route heeft gepusht, de client zegt dat hij verbonden is, en de bestemming is nog steeds onbereikbaar. Drie oorzaken leveren precies dat beeld op. De routetoewijzing liep voordat het apparaat bestond, de client miste de rechten om de tabel te wijzigen, of een beleid droeg de client op gepushte opties te negeren.
Van buiten lijken ze identiek en vragen ze om verschillende reparaties. Lees de clientlog op het punt waar de beslissing over de route wordt genomen.
Bewijs dat de route ontbreekt, niet alleen dat hij stuk is
Begin met te bewijzen dat de route ontbreekt in plaats van stuk is. Op Linux somt ip route show dev tun0 op wat de client op het tunnelapparaat heeft geïnstalleerd. Op Windows toont route print of Get-NetRoute hetzelfde in tabelvorm.
Een route die bestaat maar geen verkeer doorstuurt, is een ander probleem. Dat verplaatst het onderzoek naar doorstuur- en firewallregels, niet naar route-installatie.
Timing: de toewijzing liep voordat het apparaat bestond
De client verwerkt de PUSH_REPLY van de server nadat het controlekanaal actief is en nadat hij de interface heeft geconfigureerd. Pas dan raakt hij de routingtabel aan, met welk mechanisme het platform ook biedt. Linux gaat via netlink; Windows gebruikt een API die een verhoogd token nodig heeft. Een script of client dat routes toevoegt zodra het de configuratie leest, kan lopen voordat het TUN/TAP-apparaat bestaat, en de kernel weigert de toevoeging.
Dezelfde race verklaart waarom een handmatig getypte route werkt terwijl de automatische dat niet doet: tegen de tijd dat u hem typt, staat de interface al omhoog.
route-delay bestaat voor dit geval, en route-up noemt een script dat loopt nadat de interface en routes zijn geconfigureerd. Zet routes die van het tunneladres afhangen in die hook en niet in een vroege fase.
Rechten: wie mag de tabel wijzigen
Het wijzigen van de Windows-routingtabel vereist een verhoogd token. Een GUI die door een standaardgebruiker is gestart, kan het adapteradres via de service instellen en toch geen route kunnen toevoegen. De log toont dan een fout in de trant van toegang geweigerd in plaats van een ontbrekende push.
De GUI als administrator starten, of de servicegebaseerde client gebruiken, verandert dat resultaat. Een geplande taak die de client zonder het vereiste token start, niet.
Controleer onder welk account de client werkelijk draait voordat u iets wijzigt. De versie en de servicemodus bepalen welke oorzaken überhaupt mogelijk zijn, dus noteer beide naast de route-uitvoer.
Beleid: gepushte routes kunnen met opzet worden weggegooid
route-nopull zorgt dat de client routes negeert die de server pusht, inclusief een gepushte standaardroute, terwijl het tunneladres nog steeds wordt geaccepteerd. Gepushte DNS- en DHCP-opties worden door dezelfde richtlijn weggegooid. Zo'n client is niet defect; hij verwacht expliciete routeregels in zijn eigen configuratie.
route-noexec is een andere controle: het stopt de client volledig met het uitvoeren van routewijzigingen. Een topologie die de client niet kan koppelen, kan een vergelijkbaar resultaat geven, waarbij de route als geweigerd in plaats van toegevoegd wordt gelogd. Lees de logregel die de beslissing meldt in plaats van te raden welke van de drie geldt. Controleer daarna het effectieve profiel, want een importeur of beheertool kan opties toevoegen die de gebruiker nooit heeft bewerkt.
Een profiel dat er in een teksteditor schoon uitziet, kan tijdens runtime toch een toegevoegde richtlijn bevatten.
Vergelijk de pushlijst met de tabel
Zet na het verbinden de pushlijst van de server naast de tabel van de client. Op Linux is dat ip route show dev tun0; op Windows route print of Get-NetRoute. Ontbreekt de route, herstel dan eerst de installatie. Bestaat hij en faalt het verkeer, ga dan verder naar doorstuur- en firewallbeleid.
Noteer de clientversie, het account waaronder hij draait en of hij servicegebaseerd is. Die drie feiten vertellen de volgende persoon welke oorzaken zijn uitgesloten.