Дасягненне прыватнага прэфікса праз VPN — гэта патрабаванне з працягласцю: яно дзейнічае, пакуль гэта злучэнне прыдатнае, і сканчаецца разам са злучэннем. Скрыпт уваходу не можа гэтага выказаць, бо ўваход і ўзняцце тунэля — розныя моманты, і тунэль, які існуе пры ўваходзе, можа не быць тым, што праз хвіліну нясе трафік. Першае рашэнне — не які загад выканаць. Гэта пытанне, які кампанент валодае прэфіксам.

Прэфіксу патрэбны ўладальнік, а не момант

Пачніце з таго, што запішаце патрабаванне як сказ з дзейнікам: дасягніце 10.77.0.0/24 праз офісны VPN, пакуль гэта злучэнне ўзнятае. Гэты сказ называе прэфікс, злучэнне і ўмову, і ён адразу адхіляе два папулярныя заменнікі: хук уваходу і назву інтэрфейса, такую як ppp0 або utun2.

Назвы інтэрфейсаў прызначаюцца ў час выканання і не стабільныя паміж перападключэннямі. Хук, які супастаўляе назву, убачаную на мінулым тыдні, або не спрацуе, або спрацуе супраць чужога інтэрфейса. Абодва вынікі выглядаюць як памылка маршрутызацыі, а не як састарэлае дапушчэнне, якім яны з'яўляюцца. Тое ж пярэчанне датычыцца любога скрыпта, прывязанага да назвы, якая існуе толькі пакуль узняты пэўны тунэль.

Выкарыстоўвайце падтрыманую крыніцу намеру маршруту

Шлюз, кіраваны профіль або дакументаваны механізм маршрутызацыі кліента-ўладальніка — вось дзе гэта месца, калі такі механізм можа выказаць патрабаванне. Які з іх прымяняецца, залежыць ад пратакола і пастаўшчыка, і ключы не пераносяцца паміж імі, таму значэнне, якое наладжвае профіль OpenVPN нічога не кажа пра родны кліент L2TP або IKEv2.

MechanismCan carry extra prefixesWho owns the lifetime
Gateway-pushed routesOften, if the gateway is configured for itThe connection
Managed profile settingsDepends on the client and profile formatThe profile
Provider tunnel settingsYes, as included and excluded routesThe provider process
Manual commandYes, onceNobody

Для распрацоўшчыкаў пакетных тунэляў налады тунэля IPv4 ад Apple явна паказваюць уключаныя і выключаныя маршруты, і IPv6 мае свой адпаведнік. Гэта API, якія выкарыстоўвае пастаўшчык, а не доказ таго, што кожная родная панэль VPN прапануе адміністратару адвольны спіс маршрутаў. Калі бягучая камбінацыя не можа выказаць патрэбныя прэфіксы, наступны крок — падтрыманы шлях наладкі ад аператара, а не іншая праграма, усталяваная ў надзеі, што яна паводзіць сябе лепш.

Тэрмін службы ўключае прыборку

Часам знешні памочнік сапраўды патрэбны, і тады «дадайце маршрут» — самая дробная частка яго працы. Ён мусіць ведаць, якому злучэнню ён служыць і які інтэрфейс выкарыстоўвае гэта злучэнне, дачакацца, пакуль адпаведны стан сеткі ўсталюецца, заставацца ідэмпатэнтным пры двух запусках запар, і нічога не прыбіраць таго, што ён сам не ўсталяваў.

Апошняя ўмова — самая балючая. Памочнік, які выдаляе кожны маршрут, што адпавядае офіснаму прэфіксу, раней ці пазней выдаліць маршрут, які ён не дадаваў. Выніковая аварыя спішацца на кліент VPN, бо кліент — гэта тое, што бачыць карыстальнік. Вызначыць, чым валодае памочнік, да напісання танчэй, чым потым тлумачыць, чаму лакальная падсетка перастала адказваць.

Гонка перападключэння

Уявіце хуткае перападключэнне. Сеанс A падае, сеанс B уздымаецца і ўсталёўвае свой маршрут, а потым нарэшце запускаецца адкладзеная прыборка A. Калі гэтая прыборка выдаляе маршруты па прэфіксе, яна забірае з сабой сапраўдны стан B, і злучэнне, якое працавала секунду таму, цяпер маршрутызуецца ў нікуды.

Гэта гонка ўладання, і даданне паузы ў скрыпт змяняе толькі тое, які бок яе выйграе. Рашэнне — зрабіць прыборку ўмоўнай ад ідэнтычнасці: параўнайце інтэрфейс і сеанс, якія ўсталяваў памочнік, з тымі, што яшчэ актуальныя, і выдаляйце толькі пры супадзенні.

Што тэсціраваць і чаго маршрут не можа

Прыёмка мусіць пакрываць чатыры пераходы: першае злучэнне, перападключэнне на іншы інтэрфейс, няўдалую спробу злучэння і канчатковае адключэнне. Пасля кожнага чытайце маршрут, які сістэма фактычна выбрала для адраса на далёкім баку, а не той, які вы чакалі.

route -n get 10.77.0.5
netstat -rn -f inet

Уключыце нязручныя выпадкі ў той жа праход: IPv6 там, дзе ён патрабуецца, лакальны прэфікс, які перакрывае далёкі, і маршрут да самога публічнага канцавога пункта VPN, які мусіць працаваць, пакуль узняты тунэль. Затым запішыце, чым маршрут не з'яўляецца. Ён выбірае пакеты; ён не дае дазволу на далёкім баку і не стварае зваротны шлях, і гэта застаецца асобнымі патрабаваннямі з асобнымі ўладальнікамі.

Жаданы вынік — гэта прэфікс, які ідзе за сваім падтрыманым уладальнікам злучэння праз кожны пераход, а не загад, які выпадкова аднойчы атрымаўся на машыне, дзе быў напісаны.

Падобныя артыкулы