Дзесьці ў скрыпце разгортвання ёсць праверка таго, ці падняты тунель перад пачаткам капіявання. Ёсць тры адказы, і яны не азначаюць адно і тое ж: стан службы, які паведамляе 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 адправіць наступнага чалавека шукаць у няправільным месцы.

Падобныя артыкулы