Skript háčku se spustí, přečte ppp0 a aplikuje trasy na rozhraní, které ten název v tu chvíli vlastní. Někdy je to tunel, který jste zamýšleli; někdy je to relace, která se připojila o minutu dřív. Další opětovné připojení číslo posune a stejný skript tiše nakonfiguruje špatné spojení. Řešením je vzít rozhraní z volání, které právě proběhlo, a nést s ním zamýšlený profil.

Sledujte jednu relaci od voleb k háčku

Začněte tam, kde se relace vytváří. xl2tpd spouští pppd se souborem voleb, který pojmenovává pppoptfile daného tunelu, takže plugin, číslo jednotky a jakákoli značka profilu se rozhodují tam, ne v globálním souboru. Správce připojení může generovat vlastní volby, což znamená, že úprava /etc/ppp/options není důkazem, že se tunel, na kterém vám záleží, změnil. Když spojení naskočí, pppd spustí oznamovací skripty z dispečeru distribuce. Tyto skripty dostanou název rozhraní jako první argument a značku profilu jako šestý.

Prostředí nese stejná fakta pod názvy jako IFNAME a PPP_IPPARAM, ale jejich dostupnost závisí na nainstalovaném dispečeru. Přečtěte si dispečer, než se na proměnnou spolehnete: některé distribuce zachovávají původní pořadí argumentů, jiné filtrují prostředí před voláním vašeho skriptu. Skript, který používá jen $1 a šestý argument, funguje v obou případech.

Čtěte rozhraní z volání

Tradiční háček dostává rozhraní jako první. Tato poziční hodnota je identifikátor rozhraní, který popisuje relaci, jež skript spustila. Uložte ji nahoře do proměnné a pak tuto proměnnou používejte pro trasy, pravidla firewallu a úklid.

ipparam office-vpn

Značku profilu připevněte tam, kde se definují volby, ne do skriptu. S tímto řádkem v souboru voleb tunelu nese každá relace vytvořená z tohoto souboru office-vpn jako šestý argument. Skript může větvit podle značky a přitom jednat na skutečném rozhraní. Držte obojí v kódu oddělené, protože značka je stabilní a rozhraní se přiděluje pro každou relaci.

Žádejte název jen tehdy, když je odmítnutí správné

Pevný název vypadá jednodušeji než čtení argumentů, ale mění chování při selhání. Volba unit žádá číslo pro odchozí spojení a pppd přejde na dynamické přidělení, když je tato jednotka už obsazená. Nic v tomto výsledku nerezervuje ppp0 pro váš profil.

ifname ppp-office

Volba ifname se chová jinak: je-li požadovaný název už používán nebo jej nelze přiřadit, pppd skončí, místo aby zvolil jiný. To je politické rozhodnutí, ne kosmetické přejmenování. Použijte ji, když má být druhá souběžná instance stejného profilu odmítnuta, a ověřte, že nainstalovaný pppd a váš správce připojení volbu předávají.

Ať tak či onak, název, který skript vidí, je ten, na který je třeba jednat. Nakonfigurovaný název neodstraňuje potřebu číst volání, protože restartovaná relace může stále předložit jiný název než předchozí.

Slaďte úklid s relací, kterou jste nakonfigurovali

Trasy a pravidla firewallu přežijí skript, který je vytvořil, takže úklid musí odstranit přesně objekty, které relace vlastní. Označte pravidla značkou profilu i rozhraním a mazejte podle této značky. Mohou-li být aktivní dva tunely, mazání všeho, co zmiňuje ppp, je způsob, jak jedno odpojení rozbije druhé spojení.

Otestujte případ, který chybu odhalí: zvedněte druhou relaci PPP, dokud je první ještě připojená, pak znovu připojte první a sledujte, které rozhraní háček hlásí. Úspěšné spuštění s jedinou relací nic nedokazuje o přidělování názvů. Zopakujte to se zastavenou VPN, abyste potvrdili, že úklid nezanechává zastaralou trasu.

Uchovávejte značku, rozhraní a cestu k háčku v poznámkách k nasazení. Když se číslo po restartu změní, tyto tři hodnoty vysvětlí, proč se skript choval jinak bez jakékoli úpravy konfigurace.

Související články