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