„Прекъсване“ е състояние, което клиентът съобщава, докато разглобява тунел, а не присъда, че трафикът е спрял. На Mac това разглобяване върви като кратка последователност и етикетът се сменя само след като компонентът, който притежава връзката, отговори. Когато някоя стъпка чака помощник, плъгин или решение на политика, етикетът може да остане там след изчезването на интерфейса или тунелът може да продължи да препраща, докато менюто още го показва. Приемайте текста като „разглобяване в ход, резултатът е неизвестен“ и определете коя половина е вярна.

Две повреди изглеждат еднакво от менюто и изискват противоположни реакции. В едната тунелът още носи пакети и само показването е остаряло. В другата тунелът е изчезнал, но отделна политика държи трафика блокиран, което често е умишлено. Маршрутите и състоянието на DNS ги разделят по-бързо от всяко взаимодействие с менюто.

Какво проследява етикетът

VPN клиентът поддържа малка машина на състоянията, а лентата с менюто е нейна проекция. При връзка, управлявана от самия macOS, тази машина се намира в системната рамка за VPN. При тунел, управляван от приложение, тя е в приложението и неговия привилегирован помощник. Последната стъпка от спирането не е затваряне на сокет. Тя е освобождаване на онова, което е карало тунела да работи: интерфейса utun, маршрутите, които сочеха към него, записите на резолвера, които клиентът е вмъкнал, и всяко правило на защитна стена или политика, която блокираше трафика по време на връзката.

Тези стъпки са отделни, така че спирането може да заседне на която и да е от тях. Помощник, който спре да отговаря, маршрут, който втори интерфейс също претендира, или запис на резолвера, притежаван от друг профил, могат да оставят клиента да чака. Етикетът е отчет за собствения напредък на клиента, което го прави авторитетен за намерението и ненадежден за мрежата.

Намерете компонента, който притежава връзката

За вградени конфигурации scutil --nc list отпечатва услугите, които системата познава, и състоянието им, а scutil --nc status "Work VPN" дава подробности за една услуга. Тунел, държан от приложение на трета страна, може изобщо да не се появи в този списък, така че празен резултат не е доказателство, че нищо не е свързано.

Когато профилът принадлежи на приложение, разчитайте на изгледа на състоянието в него и на описаната му команда „Прекъсване“. Затварянето на прозореца не е заявка за спиране, ако фонов помощник притежава тунела; иконата изчезва, а помощникът поддържа интерфейса жив. Справка за настройките на VPN обхваща вградените контроли и откъде идват управляваните настройки.

Прочетете интерфейсите, маршрутите и DNS

Три проверки отговарят на по-голямата част от въпроса, без да пипат връзката. Важно е да се тълкуват заедно, защото всяка поотделно подвежда.

scutil --nc list
netstat -rn -f inet | head -20
ifconfig | grep -A 3 '^utun'
scutil --dns | head -30
  • има интерфейс utun, през него минава маршрут по подразбиране или разделен маршрут, резолверът сочи към доставчика: тунелът още е вдигнат и етикетът е остарял.
  • няма utun, обикновен маршрут по подразбиране, DNS от DHCP, няма интернет: политика, която блокира при прекъсване, си върши работата.
  • няма utun, няма маршрут, резолверът още сочи към доставчика: разглобяването е спряло по средата и DNS е остатъкът за изчистване.

След това изпратете една заявка до вътрешен хост, който трябва да отговаря само през тунела, и една до публичен хост. Достижимостта разделя политиката от остатъчното състояние, без да превръща проверката в упражнение по измерване. Първо запазете отдалечената работа, ако пътят още отговаря, и осигурете втори път за достъп, преди да промените мрежовите настройки на машина, която администрирате отдалечено.

Защо масовото убиване и изтриването на профил подвеждат

Имена на процеси като pppd, racoon и configd принадлежат на конкретни реализации. Убиването им може да засегне други връзки, оставя маршрути и utun интерфейси след себе си и не ви дава запис коя стъпка е заседнала. Старото име на процес също не е доказателство, че той притежава текущия профил.

Изтриването и пресъздаването на профила е по-голяма промяна от изчистване на заседнал преход. То може да изхвърли управлявани настройки и локален идентификационен материал, без да обясни какво се е объркало, а на Mac под надзор може просто да бъде възстановено. Запазете изтриването за конфигурация, която наистина е остаряла, и вместо това диагностицирайте прехода.

Последователност за спиране, която оставя следа

Редът по-долу оставя собствените контроли на връзката начело и създава запис, ако заседването се върне. Той също така ви пази да не превърнете проблем с показването в мрежова промяна.

  1. Запазете отдалечената работа и потвърдете, че можете да стигнете до Mac по друг начин, ако е отдалечен.
  2. Отбележете името на клиента, версията и профила. Заснемете кратък прозорец с log show --last 5m --predicate 'subsystem == "com.apple.networkextension"'; по-старите издания пазят по-малко история, затова го пуснете скоро след заседването.
  3. Използвайте описаната команда „Прекъсване“, изчакайте, после повторете проверките на интерфейса и маршрутите.
  4. Ако етикетът е остарял, но тунелът е спрян, оставете го и позволете на клиента да се обнови, вместо да насилвате процеси.
  5. Ако разглобяването наистина е заседнало, рестартирайте клиента, после планирайте рестарт на Mac, след като работата е запазена. Управляваните машини изискват процедурата на администратора.

След възстановяване потвърдете, че обикновеният маршрут по подразбиране и DHCP резолверът са се върнали и че блокираният трафик е или възстановен, или умишлено още блокиран. Запишете профила и версията на клиента със симптома, за да започне следващият случай от доказателства, а не от догадка по менюто.

Подобни статии