Жүйе параметрлерінде сақталған VPN қызметіңіз бар және терминал оны іске қосқанын қалайсыз. macOS-та қолдау көрсетілетін жол — scutil --nc, бірақ тек жүйенің өзінің желілік байланыс менеджеріне тиесілі қызметтер үшін. Мәзір жолағы API емес: үшінші тарап клиенттерінің әдетте өз автоматтандыруы болады, ал басқару қызметі жіберген профиль жергілікті іске қосуды қабылдамауы мүмкін. Бұл мен орындайтын тексеру тізімі: нақты қызметті табыңыз, оның күйін оқыңыз, оны іске қосыңыз, күйдің өзгеруін күтіңіз, содан кейін трафиктің шынымен туннельді пайдаланатынын дәлелдеңіз. Бірінші сәйкес келмейтін қадамда тоқтаңыз, өйткені әр келесі пәрмен алдыңғысының сәтті болғанын болжайды.

Іске қосуды талап етпес бұрын қызметті табыңыз

Есте сақтаған профиль атауынан емес, түгендеуден бастаңыз:

scutil --nc help
scutil --nc list

Әр жол күйді қызмет идентификаторымен, түрімен және көрсетілетін атауымен жұптайды. Идентификатор — скрипт жазылатын мән, өйткені көрсетілетін атаулар қайталанады және өңделуі мүмкін. Apple-дың scutil нұсқаулығы желілік қосылым режимін құжаттайды, ал орнатылған --nc help сол Mac-тағы ішкі пәрмендердің беделді тізімі; ескі нұсқаулықтағы жалауша әлі де macOS нұсқаңызда бар деп ойламаңыз.

Бос тізім — нәтиже, қате емес. Жеткізуші клиенті немесе басқару профилі жасаған қызмет осында көрінбей тұрып белсенді болуы мүмкін, немесе жергілікті контроллер басқара алмайтын түрмен көрінуі мүмкін. Бұл жағдайда жеткізуші құралын немесе профиль құжаттамасын пайдаланыңыз. Іске қосатын нәрсе болуы үшін ғана параллель жергілікті профиль жасау — нашар мәміле.

Ағымдағы күйді оқып, селекторды растаңыз

Іске қоспас бұрын қызметтен күйін сұраңыз, сәтті іске қосу нені өзгертуі керектігін білу үшін:

scutil --nc status "Office VPN"

Егер екі қызмет бір көрсетілетін атауды бөліссе, атау екіұшқы. Оның орнына идентификаторды беріңіз; пәрмен екеуін де қабылдайды, бірақ бір қызметті таңдауға тек идентификатор кепілдік береді. Скриптте талдау алдында күй сөзі таныс екенін тексеріңіз — әдетте Connected, Disconnected, Connecting немесе Disconnecting. Сондай-ақ профиль басқарылатынын тексеріңіз, өйткені құлыпталған конфигурация пәрменді қабылдап, оны елемеуі немесе растауды сұрауы мүмкін.

Бұл күй шақыруы арзан, сондықтан оны автоматтандыруда күзетші ретінде пайдаланыңыз: күй Disconnected болғанда ғана іске қосыңыз және Connecting-ті сәтсіздік деп санамаңыз. Егер қызмет әлдеқашан Connected болса, жұмыс істеп тұрған туннельді үзудің орнына іске қосуды өткізіп жіберіңіз.

Қосылымды іске қосып, күйдің тұрақталуын күтіңіз

Іске қосу сұранысы асинхронды. Пәрмен сұраныс қабылданғанда қайтады, аутентификация аяқталғанда немесе маршруттар орнатылғанда емес. Оны іске қосыңыз, содан кейін шектеулі күтумен күйді сұрап, қызмет Disconnected-қа оралса шығыңыз:

scutil --nc start "Office VPN"
n=0
while [ "$n" -lt 30 ]; do
  state=$(scutil --nc status "Office VPN" | head -n 1)
  [ "$state" = "Connected" ] && break
  [ "$state" = "Disconnected" ] && { echo "start failed"; exit 1; }
  sleep 2
  n=$((n + 1))
done

Ешқашан шешілмейтін Connecting күйі әдетте тіркелгі деректеріне, MFA-ға немесе серверге нұсқайды, scutil-ге емес. Пәрмен интерактивті кіруді бере алмайды, сондықтан токен немесе аппараттық кілт күтетін профиль Connecting-те қалып, ақырында кері шегінеді. Қайта әрекеттерді қоспас бұрын күй сөзін оқыңыз; аутентификация сұранысына қарсы цикл сәтті бола алмайды.

Қабықтың шығу күйін дайындық деп санамаңыз. Пайдалы сигнал — күй жолы, содан кейін туннельдің трафик тасымалдайтыны туралы дәлел. Тыныш қайтатын іске қосу пәрмені сізді ешқашан аутентификацияланбайтын қосылыммен қалдыруы мүмкін.

Туннельдің трафик тасымалдайтынын дәлелдеңіз, тек Connected дегенін емес

Connected қосылымды сипаттайды, маршруттау шешімін емес. Жергілікті PPP және IKEv2 қызметтері ppp немесе utun интерфейсін жасап, маршруттарды орнатады, ал бөлінген туннель әдепкі маршрутты әдейі тимей қалдырады. Интерфейстерді және екі мекенжай тұқымын тексеріңіз:

ifconfig -l
netstat -rn -f inet
netstat -rn -f inet6
scutil --dns

Нөмірді болжаудың орнына қызмет жасаған интерфейсті табыңыз, содан кейін маршруттау кестесінен нақты тағайындау қай интерфейсті пайдаланатынын сұраңыз: route -n get 10.0.0.10, оның орнына ішкі хост қойып. Егер ол физикалық интерфейсті хабарласа, туннель қосылған, бірақ сол ағынды тасымалдамайды. Бөлінген туннель маршруттарын, шешуші ретін және туннель интерфейсіне рұқсат беріп, процеске бермейтін кез келген жергілікті firewall ережесін тексеріңіз.

Атауларды шешу — әдеттегі жалған теріс нәтиже. Ішкі атаулар туннель толық сау болған кезде қате шешуші арқылы шешілуі мүмкін, бұл VPN ақауы сияқты көрінеді, бірақ олай емес. scutil --dns macOS қолданатын ретті көрсетеді; шешуші өзгергеннен кейін кэшті dscacheutil -flushcache және sudo killall -HUP mDNSResponder арқылы тазалаңыз.

Тіркелгі деректері мен артықшылықтарды пәрмен жолынан тыс ұстаңыз

Құпия сөзді, алдын ала бөлісілген кілтті немесе токенді аргументтерге ешқашан салмаңыз. Аргументтер процесс тізімдерінде көрінеді және қабық тарихына түседі, ал көшірілген қолдау жазбасы оларды ағызуы мүмкін. Профильдің өзінің тіркелгі деректерін өңдеуі — Keychain элементі, жүйелік сұраныс немесе клиенттің аутентификация ағыны — құпиялардың орны.

Пәрменді sudo-мен іске қосу интерактивті кіруді қадағалаусыз етпейді. Ол тиімді пайдаланушыны өзгертеді, GUI сұранысының, аппараттық токеннің немесе кіру Keychain-інің қолжетімділігін емес. LaunchAgent пайдаланушы кіріп, Keychain ашылғаннан кейін қызметті іске қоса алады; LaunchDaemon әдетте пайдаланушы сессиясының сол бөліктеріне жете алмайды. Егер ұйым қызметті басқарса, оның өмірлік цикл ережелері кез келген жергілікті скрипттен басым.

Қызметті тоқтатып, оның тоқтаған күйде қалғанын тексеріңіз

Іске қосу үшін пайдаланған сол селектормен тоқтатыңыз, содан кейін туннель жоғалды деп ойлаудың орнына күйді қайта оқыңыз:

scutil --nc stop "Office VPN"
scutil --nc status "Office VPN"

Disconnected-қа оралған тоқтату әлі де бір нәрсені тексеруді қалдырады: профиль сұраныс бойынша қосылуға орнатылған ба, бұл оны скриптіңізсіз қайта әкелуі мүмкін. Егер сол Mac-та басқа клиенттің маршруттары болса, олар жергілікті тоқтатудан аман қалуы мүмкін. Машина VPN-нен тыс деп қорытындыламас бұрын маршрутты қайта тексеріңіз.

Қолмен іске қосылатын қаптама үшін ретті бекітіп ұстаңыз: тізім, күй, іске қосу, сұрау, маршрут сынағы, тоқтату, тексеру. Идентификатор қолжетімді болғанда еркін форматты шығыстан достық атауды талдамаңыз және іске қосу пәрменінің шығуын дайындық деп санамаңыз. Қосылым менеджері күйді хабарлайды; сіздің дәлеліңіз — күй және туннельге сілтейтін маршрут.

Қатысты мақалалар