VPN статус на macOS од терминал: scutil, рути или ping
Состојбата на услугата, рутата во јадрото и вистинското барање одговараат на три различни прашања. Пишете скрипта според идентификаторот на услугата и проверете ја и рутата.
Некаде во скриптата за распоредување има проверка дали тунелот е активен пред да почне копирањето. Достапни се три одговори и тие не значат исто: состојбата на услугата што ја пријавува scutil, рутата што ја избрало јадрото и дали спротивниот крај навистина одговара. Нивната споредба е разликата меѓу проверка што го предвидува копирањето и проверка што само го украсува дневникот.
Три одговори на прашањето дали VPN е активен
Состојбата на услугата е факт од контролната рамнина. macOS знае дека конфигурацијата е поврзана зашто така рече нејзиниот клиентски процес. Рутата е факт од податочната рамнина: јадрото ќе ја испрати оваа дестинација низ тој интерфејс. Достапноста е факт од крај до крај и може да не успее од причини што ниту еден од другите два не ги гледа.
| Signal | Answers | Blind spot |
|---|---|---|
scutil --nc status | Is the service connected? | Third-party clients, wrong routes |
route -n get | Where would this go? | The peer may be down |
| A request to the far side | Does it work now? | Slow, and it changes state |
Корисна проверка ги спојува првите две и третата ја користи како потврда дека првите две не лажеле. Секоја сама по себе е претпоставка со временска ознака.
Читајте го идентификаторот, а не прикажаното име
scutil --nc list
scutil --nc status "Office"
Списокот печати по една линија за секоја услуга, а секоја линија носи статус во загради, потоа идентификаторот на услугата, типот и прикажаното име. Пишете скрипта според идентификаторот, зашто прикажаното име е она што некој го внел во Системски поставки и може да се смени без известување. Командата за статус печати еден збор, а за некои типови услуги по него статистика; споредете го тој прв збор наместо да го барате името во целиот излез, кое се појавува и на други места.
Стартувањето услуга може да предизвика барање за авторизација или директно да биде одбиено кога профилот е управуван. Тоа одбивање не е дефект на тунелот; тоа е изјава за политиката за тоа кој смее да го подигне.
Клиент од трета страна се крие од списокот
Празен список не значи дека нема VPN. Конфигурациите создадени во сопствените мрежни поставки на системот се појавуваат овде; клиент од добавувач, профил за управување или апликација од трета страна можат да држат активен тунел што оваа команда никако не го гледа. Сопствената алатка е авторитет за сопствената услуга. Прашањето на scutil за клиент што никогаш не се регистрирал кај него враќа ништо, а ништо не е истиот одговор како исклучено.
Кога списокот е празен, но сообраќајот е очигледно шифриран, побарајте го интерфејсот: уред utun или ppp со адреса во очекуваниот опсег е доказ дека нешто воспоставило тунел. Тоа е послаб сигнал од состојбата на услугата, па спарете го со проверка на рутата наместо интерфејсот да го сметате за доказ за идентитет. Неколку клиенти можат да создадат неколку такви интерфејси, а само еден од нив припаѓа на тунелот што го мислевте.
Статусот не е рутирање
Поврзана услуга вели дека тунелот постои. Не вели дека вашата дестинација го користи. Прочитајте ги адресите, потоа прашајте го јадрото директно:
ifconfig | grep -A4 utun
netstat -rn -f inet
route -n get 10.40.0.20
Клиент со целосен тунел поставува стандардна рута низ тунелот; клиент со поделен тунел поставува конкретни приватни префикси. И двата пријавуваат Connected, а скрипта што проверува само статус лесно ќе тргне по погрешен пат. Запирањето тунел не мора да ги отстрани рутите што ги поставил друг клиент, и тоа е еден од начините машината да има истовремено поврзана услуга и застарена рута. Гледајте ја дестинацијата што ви е важна, не целата табела со рути.
Именувањето е посебен проблем
Другите машини не можат да го достасат Mac по име додека неговата адреса работи, и тоа се пријавува како дефект на VPN. Локалното име на домаќинот, името на домаќинот и DNS записот се три различни работи. scutil --get LocalHostName го покажува Bonjour името; sudo scutil --set HostName mac-office го поставува името што го пријавува системот.
Ниту една од поставките не создава запис во канцелариската зона. Ако други домаќини мора да го решат името преку DNS, сопственикот на зоната мора да го додаде, или скриптата треба да ја користи адресата. Поставувањето стабилно име ги прави објавите доследни; тоа не го тера решавачот да одговори.
Запишете ги заедно во скриптата идентификаторот на услугата и очекуваната форма на рутата и проверете ги двете пред копирањето. Тунел што е активен, но насочен во погрешна насока, паѓа исто како да нема тунел, а линијата во дневникот што вели Connected ќе го испрати следниот човек да бара на погрешно место.