Трајне руте за Mac VPN: networksetup или hook за повезивање?
Рута унета после сваког поновног повезивања није политика. Одлучите да ли префикс припада VPN услузи, привременом тесту или hook-у за адресе познате само после преговора.
Рута унета после сваке везе решава тренутак, а не недељу. На macOS-у је трајан избор обично префикс сачуван уз VPN услугу, јер га услуга поново инсталира при сваком повезивању и уклања када је услуга искључена. Алтернативе су привремени route add за тестирање и hook за повезивање за адресе познате само после преговора.
Одлучите да ли рута припада услузи или сесији
Питајте о чему зависи префикс. Ако је то фиксна приватна мрежа иза изворне VPN услуге, рута припада тој услузи. Ако зависи од адресе партнера која се мења при свакој вези, hook или задатак вођен стањем може бити бољи власник. Ако само проверавате пут за следећих пет минута, привремена рута је довољна.
Рута везана за услугу има најчистији животни циклус. Појављује се са услугом и нестаје када услуга није повезана, па не може надживети тунел на који показује. То својство вреди више од погодности једнолинијске команде.
Рута везана за сесију припада интерфејсу, а тај број се мења без најаве. Поновно повезивање може тунелу дати друго име utun од оног које је користила претходна сесија, што тврдо кодирану команду претвара у руту која не показује ни на шта или, горе, на други тунел.
Прочитајте тренутно стање руте и услуге
Почните с именима која систем заиста користи. Име услуге у подешавањима мреже је идентификатор за команде испод, а тренутна табела рута показује шта је повезани клијент инсталирао. Прочитајте обоје док је тунел активан.
scutil --nc list
networksetup -listnetworkserviceorder
netstat -rn | head -30
route get 10.20.5.5
То претраживање показује који би пролаз и интерфејс кернел изабрао за ову адресу у овом тренутку. Ако већ бира тунел, префикс је покривен и нова рута би била сувишна. Ако бира локални рутер, тунелу недостаје тај префикс.
Забележите адресу партнера док сте повезани. Она постаје вредност пролаза у рути везаној за услугу и обично је одредиште приказано за подразумевану руту тунела у netstat -rn.
Сачувајте префикс помоћу networksetup
Алат networksetup прикључује додатне руте мрежној услузи. За услугу имена OfficeVPN и приватни префикс доступан кроз партнера тунела, облик је:
sudo networksetup -setadditionalroutes OfficeVPN 10.20.0.0 255.255.0.0 10.8.0.6
networksetup -getadditionalroutes OfficeVPN
Свака тројка после имена услуге даје одредиште, његову мрежну маску и партнера тунела као пролаз. Један позив може носити неколико префикса, а празан позив брише сачувану листу. Читач је корак провере; ако је листа празна, подешавање није примењено на услугу коју мислите.
Пролаз мора бити партнер тунела, а не физички рутер. Рута која именује локални пролаз шаље приватни префикс кроз физички интерфејс, што је изворни квар са додатним корацима. Застарео партнер је најчешћи разлог зашто рута која изгледа исправно никада не преноси саобраћај. Поново прочитајте партнера из повезаног стања уместо да копирате адресу из старе белешке.
Користите route add само за тест
Директна рута је корисна да докаже да префикс ради пре него што га учините трајним. Облик са интерфејсом избегава тражење пролаза:
sudo route -n add -net 10.20.0.0/16 -interface utun4
Рута нестаје при следећем повезивању и зависи од броја интерфејса који данас постоји. То је чини дијагностиком, а не применом. Ако тест ради, а рута везана за услугу не, прво упоредите вредност пролаза; то је поље које је најчешће погрешно.
Будите пажљиви са саветима који замењују подразумевану руту VPN-а да би наметнули поделу. Клијент који намеће пуни тунел може поново инсталирати своје руте после поновног повезивања или освежавања политике, па се ручна промена тихо поништава. Неколико приватних префикса је проблем рутирања; држати сав интернет саобраћај локалним упркос политици пуног тунела одлука је на страни сервера.
Изаберите hook само када се адреса преговара
За везе засноване на PPP-у, као што је L2TP, macOS извршава /etc/ppp/ip-up након успостављања везе. Скрипта прима име интерфејса и преговаране локалну и удаљену адресу, па може додати руту која зависи од партнера којег је сервер доделио. То је управо случај који фиксна рута услуге не може изразити.
IKEv2 и клијенти произвођача можда уопште не користе тај PPP пут, што значи да скрипта може остати нема целу сесију. Када се то догоди, задатак launchd који проверава scutil --nc status и реагује на промену стања је еквивалентни механизам, са малим кашњењем.
Који год hook користили, учините га идемпотентним и нека уклања само руте које је сам створио. Скрипта која брише сваку руту која помиње тунел на крају ће обрисати руту која држи VPN сервер доступним, и веза ће пасти чим успе.
Завршите провером приватног одредишта, уобичајеног прегледања и циклуса поновног повезивања или спавања. Затим прегледајте scutil --dns, јер је разрешавање имена одвојена политика и рута која ради не доказује да се приватна имена разрешавају.