Да се стигне до приватен префикс преку 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 крајна точка, која мора да продолжи да работи додека тунелот е кренат. Потоа запишете што рутата не е. Таа избира пакети; таа не дава дозвола на далечната страна и не создава повратен пат, и тие остануваат одделни барања со одделни сопственици.

Резултатот што го сакате е префикс што го следи својот поддржан сопственик на врската низ секој премин, а не команда што случајно успеала еднаш на машината каде што е напишана.

Поврзани статии