Қосымша Mac VPN маршруттарына ие керек, кіру скрипті емес
Кіру кезінде бір рет қосылған маршрут — қайта қосылу саясаты емес. Шалғай префикстерге ие беріңіз және олардың сол қосылыммен қалай пайда болатынын, өзгеретінін және жоғалатынын шешіңіз.
VPN арқылы жеке префикске жету — ұзақтығы бар талап: ол сол қосылым пайдалануға жарамды болғанша күшінде болады және қосылым аяқталғанда аяқталады. Кіру скрипті мұны білдіре алмайды, өйткені кіру мен туннельдің көтерілуі — әртүрлі сәттер, ал кіру кезінде бар туннель бір минуттан кейін трафикті тасымалдайтын туннель болмауы мүмкін. Бірінші шешім — қандай пәрменді іске қосу емес. Ол — префиксті қай компонент иеленетіні.
Префикске ие керек, сәт емес
Талапты бастауышы бар сөйлем ретінде жазып бастаңыз: жетіңіз 10.77.0.0/24 кеңсе VPN арқылы, сол қосылым тұрғанша. Бұл сөйлем префиксті, қосылымды және шартты атайды, әрі екі танымал баламаны бірден жоққа шығарады: кіру ілгегін және мынадай интерфейс атауын ppp0 немесе utun2.
Интерфейс атаулары орындалу уақытында беріледі және қайта қосылулар арасында тұрақты емес. Өткен аптада көрген атауға сәйкес келетін ілгек не іске қосылмайды, не басқа біреудің интерфейсіне қарсы іске қосылады. Екі нәтиже де ескірген болжам ретінде емес, маршруттау қатесі ретінде көрінеді. Дәл сол қарсылық тек белгілі бір туннель тұрғанда ғана бар атауға байланған кез келген скриптке де қатысты.
Маршрут ниетінің қолдау көрсетілген көзін пайдаланыңыз
Шлюз, басқарылатын профиль немесе ие клиенттің құжатталған маршрут механизмі — бұл механизм талапты білдіре алса, дұрыс орын сол. Қайсысы қолданылатыны протокол мен провайдерге байланысты, ал кілттер олардың арасында жүрмейді, сондықтан профильді конфигурациялайтын мән OpenVPN түпнұсқа L2TP немесе IKEv2 клиенті туралы ештеңе айтпайды.
| Mechanism | Can carry extra prefixes | Who owns the lifetime |
|---|---|---|
| Gateway-pushed routes | Often, if the gateway is configured for it | The connection |
| Managed profile settings | Depends on the client and profile format | The profile |
| Provider tunnel settings | Yes, as included and excluded routes | The provider process |
| Manual command | Yes, once | Nobody |
Пакеттік туннель әзірлеушілері үшін Apple-дың IPv4 туннель параметрлері қосылған және шығарылған маршруттарды анық көрсетеді, ал IPv6-ның да өз баламасы бар. Бұлар — провайдер пайдаланатын API-лер, әрбір түпнұсқа VPN панелі әкімшіге еркін маршрут тізімін ұсынады деген дәлел емес. Егер қазіргі үйлесім қажет префикстерді білдіре алмаса, келесі қадам — оператор тарапынан қолдау көрсетілген конфигурация жолы, жақсырақ ұстайды деген үмітпен орнатылған басқа қолданба емес.
Қызмет мерзімі тазартуды қамтиды
Кейде сыртқы көмекші шынымен қажет, және сол кезде «маршрутты қос» оның жұмысының ең кішкентай бөлігі. Ол қай қосылымға қызмет ететінін және сол қосылым қай интерфейсті пайдаланатынын білуі, тиісті желі күйі орныққанша күтуі, қатарынан екі рет іске қосылғанда идемпотентті болып қалуы, және өзі орнатпаған ештеңені тазартпауы керек.
Соңғы шарт — ең ауыратыны. Кеңсе префиксіне сәйкес келетін әрбір маршрутты жоятын көмекші ерте ме, кеш пе өзі қоспаған маршрутты да жояды. Пайда болған үзіліс VPN клиентіне жабылады, өйткені клиент — пайдаланушы көретін бөлік. Көмекшінің неге ие екенін жазбас бұрын шешу, кейін жергілікті қосалқы желі неге жауап бермей қалғанын түсіндіргеннен арзан.
Қайта қосылу жарысы
Жылдам қайта қосылуды елестетіңіз. A сессиясы құлайды, B сессиясы көтеріліп өз маршрутын орнатады, содан кейін A-ның кешіктірілген тазартуы ақыры іске қосылады. Егер бұл тазарту маршруттарды префикс бойынша жойса, ол B-ның жарамды күйін де ала кетеді, ал бір секунд бұрын жұмыс істеген қосылым енді ешқайда маршруттайды.
Бұл — иелік жарысы, ал скриптке ұйқы қосу тек қай тарап ұтатынын өзгертеді. Шешім — тазартуды сәйкестікке тәуелді ету: көмекші орнатқан интерфейс пен сессияны әлі күшіндегілермен салыстырыңыз және тек сәйкескенде ғана жойыңыз.
Нені сынау керек және маршрут не істей алмайды
Қабылдау төрт ауысуды қамтуы керек: бірінші қосылым, басқа интерфейске қайта қосылу, сәтсіз қосылу әрекеті және соңғы ажырату. Әрқайсысынан кейін жүйе шалғай жақтағы мекенжайға шын мәнінде таңдаған маршрутты оқыңыз, күткен маршрутты емес.
route -n get 10.77.0.5
netstat -rn -f inet
Қиын жағдайларды да сол айналымға қосыңыз: қажет жерде IPv6, шалғай префикспен қабаттасатын жергілікті префикс және туннель тұрғанша жұмысын жалғастыруы тиіс қоғамдық VPN соңғы нүктесіне маршрут. Содан кейін маршрут не емес екенін жазыңыз. Ол пакеттерді таңдайды; ол шалғай жақта рұқсат бермейді және қайту жолын жасамайды, ал олар бөлек иелері бар бөлек талаптар болып қалады.
Сіз қалайтын нәтиже — әр ауысуда өзінің қолдау көрсетілген қосылым иесін ұстанатын префикс, ал жазылған машинада бір рет кездейсоқ сәтті болған пәрмен емес.