Het hookscript wordt geactiveerd, leest ppp0 en past routes toe op welke interface die naam op dat moment bezit. Soms is het de tunnel die je bedoelde; soms is het een sessie die een minuut eerder verbinding maakte. De volgende herverbinding verschuift het nummer, en hetzelfde script configureert stilletjes de verkeerde link. De oplossing is de interface uit de aanroep te halen die net liep, en het beoogde profiel daarnaast te dragen.

Volg één sessie van opties tot hook

Begin waar de sessie wordt gemaakt. xl2tpd start pppd met het optiebestand dat door pppoptfile van die tunnel wordt genoemd, dus de plugin, het unitnummer en elke profielmarkering worden daar bepaald en niet in een globaal bestand. Een verbindingsbeheerder kan zijn eigen opties genereren, wat betekent dat het bewerken van /etc/ppp/options geen bewijs is dat de tunnel die je aangaat is veranderd. Wanneer de link omhoog komt, voert pppd de meldingsscripts uit van de dispatcher van de distributie. Die scripts ontvangen de interfacenaam als eerste argument en de profielmarkering als zesde.

De omgeving draagt dezelfde feiten onder namen als IFNAME en PPP_IPPARAM, maar hun beschikbaarheid hangt af van de geïnstalleerde dispatcher. Lees de dispatcher voordat je op een variabele vertrouwt: sommige distributies behouden de upstream-argumentvolgorde, andere filteren de omgeving voordat ze je script aanroepen. Een script dat alleen $1 en het zesde argument gebruikt, werkt onder beide regelingen.

Lees de interface uit de aanroep

De traditionele hook ontvangt de interface als eerste. Die positionele waarde is de interface-identificatie die de sessie beschrijft die het script activeerde. Sla hem bovenin een variabele op en gebruik die variabele vervolgens voor routes, firewallregels en afbraak.

ipparam office-vpn

Hang een profielmarkering waar de opties worden gedefinieerd, niet in het script. Met die regel in het optiebestand van de tunnel draagt elke sessie die uit dat bestand wordt gemaakt office-vpn als zesde argument. Het script kan op de markering vertakken terwijl het nog op de echte interface handelt. Houd de twee gescheiden in de code, omdat de markering stabiel is en de interface per sessie wordt toegewezen.

Vraag alleen om een naam als weigering juist is

Een vaste naam lijkt eenvoudiger dan argumenten lezen, maar verandert het faalgedrag. De optie unit vraagt een nummer voor een uitgaande verbinding, en pppd valt terug op dynamische toewijzing wanneer die unit al bezet is. Niets in dat resultaat reserveert ppp0 voor jouw profiel.

ifname ppp-office

De optie ifname gedraagt zich anders: als de gevraagde naam al in gebruik is of niet kan worden toegewezen, stopt pppd in plaats van een andere te kiezen. Dat is een beleidskeuze, geen cosmetische hernoeming. Gebruik hem wanneer een tweede gelijktijdige instantie van hetzelfde profiel moet worden geweigerd, en bevestig dat de geïnstalleerde pppd en je verbindingsbeheerder de optie doorgeven.

Hoe dan ook, de naam die het script ziet is degene waarop gehandeld moet worden. Een geconfigureerde naam neemt de noodzaak niet weg om de aanroep te lezen, omdat een herstarte sessie nog steeds een andere naam dan de vorige kan presenteren.

Laat de afbraak passen bij de sessie die je hebt geconfigureerd

Routes en firewallregels overleven het script dat ze heeft gemaakt, dus de afbraak moet precies de objecten verwijderen die de sessie bezit. Markeer regels met de profielmarkering én de interface, en verwijder op die markering. Als twee tunnels tegelijk actief kunnen zijn, is alles verwijderen wat ppp noemt de manier waarop de ene verbreking de andere verbinding breekt.

Test het geval dat de fout blootlegt: breng de tweede PPP-sessie omhoog terwijl de eerste nog verbonden is, herverbind daarna de eerste en kijk welke interface de hook meldt. Een geslaagde run met één sessie bewijst niets over naamtoewijzing. Herhaal met de VPN gestopt om te bevestigen dat de afbraak geen verouderde route achterlaat.

Bewaar de markering, de interface en het hookpad in de uitrolnotities. Wanneer het nummer na een herstart verandert, verklaren die drie waarden waarom het script zich anders gedroeg zonder enige configuratiewijziging.

Gerelateerde artikelen