Негде у скрипти за распоређивање постоји провера да ли је тунел активан пре него што почне копирање. Доступна су три одговора и она не значе исто: стање услуге које пријављује scutil, рута коју је изабрало језгро и то да ли друга страна заиста одговара. Њихово поређење је разлика између провере која предвиђа копирање и оне која само украшава дневник.

Три одговора на питање да ли је VPN активан

Стање услуге је чињеница контролне равни. macOS зна да је конфигурација повезана јер је то рекао њен клијентски процес. Рута је чињеница податковне равни: језгро ће послати ово одредиште кроз тај интерфејс. Доступност је чињеница од краја до краја и може да закаже из разлога које ниједан од других два не види.

SignalAnswersBlind spot
scutil --nc statusIs the service connected?Third-party clients, wrong routes
route -n getWhere would this go?The peer may be down
A request to the far sideDoes 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 послаће следећу особу да тражи на погрешном месту.

Повезани чланци