ppp0 или ppp1? Како да се именува PPP VPN сесија за скрипти
pppd на секоја сесија ѝ дава име на интерфејс и означувач на профил. Прочитајте ги двете од куката, а не од ppp0. Резервирајте фиксно име само кога одбивањето е намерно.
Скриптата на куката се активира, чита ppp0 и применува маршрути на интерфејсот што во тој момент го носи тоа име. Понекогаш тоа е тунелот што го мислевте; понекогаш тоа е сесија што се поврзала една минута порано. Следното повторно поврзување го поместува бројот, и истата скрипта тивко ја конфигурира погрешната врска. Решението е да го земете интерфејсот од повикот што штотуку се изврши и да го носите предвидениот профил до него.
Следете една сесија од опциите до куката
Започнете таму каде што се создава сесијата. xl2tpd го стартува pppd со датотеката со опции што ја именува pppoptfile на тој тунел, па приклучокот, бројот на единицата и секој означувач на профил се одлучуваат таму, а не во глобална датотека. Менаџерот за врски може да генерира свои опции, што значи дека уредувањето на /etc/ppp/options не е доказ дека тунелот што ве интересира се променил. Кога врската ќе се подигне, pppd ги извршува скриптите за известување од испраќачот на дистрибуцијата. Тие скрипти го добиваат името на интерфејсот како прв аргумент, а означувачот на профил како шести.
Окружувањето ги носи истите факти под имиња како IFNAME и PPP_IPPARAM, но нивната достапност зависи од инсталираниот испраќач. Прочитајте го испраќачот пред да се потпрете на променлива: некои дистрибуции го задржуваат редот на upstream аргументите, други ја филтрираат околината пред да ја повикаат вашата скрипта. Скрипта што користи само $1 и шестиот аргумент работи во двата случаи.
Прочитајте го интерфејсот од повикот
Традиционалната кука прва го добива интерфејсот. Таа позициска вредност е идентификаторот на интерфејсот што ја опишува сесијата што ја активирала скриптата. Зачувајте го во променлива на почетокот, потоа користете ја таа променлива за маршрути, правила на огнениот ѕид и расклопување.
ipparam office-vpn
Прикачете означувач на профил таму каде што се дефинирани опциите, а не во скриптата. Со тој ред во датотеката со опции на тунелот, секоја сесија создадена од таа датотека носи office-vpn како шести аргумент. Скриптата може да се разгранува по означувачот додека сѐ уште дејствува на вистинскиот интерфејс. Држете ги двете одделно во кодот, бидејќи означувачот е стабилен, а интерфејсот се доделува по сесија.
Побарајте име само кога одбивањето е точно
Фиксното име изгледа поедноставно од читањето аргументи, но го менува однесувањето при неуспех. Опцијата unit бара број за излезна врска, и pppd се враќа на динамичка додела кога таа единица е веќе зафатена. Ништо во тој резултат не резервира ppp0 за вашиот профил.
ifname ppp-office
Опцијата ifname се однесува поинаку: ако бараното име е веќе во употреба или не може да се додели, pppd излегува наместо да избере друго. Тоа е избор на политика, не козметичко преименување. Користете ја кога треба да се одбие втор паралелен примерок од истиот профил, и потврдете дека инсталираниот pppd и вашиот менаџер за врски ја пренесуваат опцијата.
Во секој случај, името што го гледа скриптата е она по кое треба да се дејствува. Конфигурираното име не ја отстранува потребата да се чита повикот, бидејќи рестартирана сесија сѐ уште може да претстави различно име од претходното.
Усогласете го расклопувањето со сесијата што ја конфигуриравте
Маршрутите и правилата на огнениот ѕид го надживуваат скриптот што ги создал, така што расклопувањето мора да ги отстрани точно објектите што ги поседува сесијата. Означете ги правилата со означувачот на профил, како и со интерфејсот, и бришете по таа ознака. Ако два тунели можат да бидат активни, бришењето на сѐ што споменува ppp е начинот на кој едно исклучување ја крши другата врска.
Тестирајте го случајот што ја открива грешката: подигнете ја втората PPP сесија додека првата е сѐ уште поврзана, потоа повторно поврзете ја првата и гледајте кој интерфејс го известува куката. Успешно извршување со една сесија не докажува ништо за доделувањето имиња. Повторете со запрен VPN за да потврдите дека расклопувањето не остава застарчен маршрут.
Чувајте ги означувачот, интерфејсот и патеката до куката во белешките за распоредување. Кога бројот се менува по рестартирање, тие три вредности објаснуваат зошто скриптата се однесувала поинаку без никакво уредување на конфигурацијата.