VPN на Mac завісае на «Адключэнне»: што насамрэч працуе
Адключэнне — гэта пераход, а не спынены тунель. Праверце, які кампанент адказвае за разборку, прачытайце маршруты і DNS і пазбягайце шырокага забойства працэсаў.
«Адключэнне» — гэта стан, які кліент паведамляе, пакуль разбірае тунель, а не прысуд, што трафік спыніўся. На 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 пад наглядам профіль можа проста аднавіцца. Пакіньце выдаленне для канфігурацыі, якая сапраўды састарэла, і замест гэтага дыягнастуйце пераход.
Паслядоўнасць прыпынку, якая пакідае след
Парадак ніжэй пакідае ўласныя элементы кіравання злучэння адказнымі і стварае запіс, калі захрасанне вернецца. Ён таксама не дае вам ператварыць праблему выявы ў змену сеткі.
- Захавайце аддаленую працу і пераканайцеся, што можаце дасягнуць Mac іншым шляхам, калі ён аддалены.
- Запішыце назву кліента, версію і профіль. Захапіце кароткае акно з дапамогай
log show --last 5m --predicate 'subsystem == "com.apple.networkextension"'; старыя выпускі трымаюць менш гісторыі, таму запусціце гэта неўзабаве пасля захрасання. - Скарыстайцеся апісаным элементам «Адключыць», пачакайце, затым паўтарыце праверкі інтэрфейса і маршрутаў.
- Калі метка састарэла, але тунель спушчаны, пакіньте яе і дазвольце кліенту абнавіцца, замест таго каб прымушаць працэсы.
- Калі разборка сапраўды захрасла, перазапусціце кліента, затым заплануйце перазапуск Mac пасля захавання працы. Кіраваныя машыны патрабуюць працэдуры адміністратара.
Пасля аднаўлення пераканайцеся, што звычайны стандартны маршрут і рэзалвер DHCP вярнуліся, а заблакаваны трафік альбо адноўлены, альбо наўмысна ўсё яшчэ заблакаваны. Запішыце профіль і версію кліента разам з сімптомам, каб наступны выпадак пачынаўся з доказаў, а не з здагадкі па радку меню.