Katayuan ng VPN sa macOS mula sa terminal: scutil, mga ruta o ping
Ang estado ng serbisyo, ruta ng kernel at tunay na kahilingan ay sumasagot sa tatlong magkakaibang tanong. Isulat ang script ayon sa identifier ng serbisyo at suriin din ang ruta.
May lugar sa isang deployment script na may pagsusuri kung aktibo ang tunnel bago magsimula ang pagkopya. May tatlong sagot na magagamit, at hindi sila pareho ng ibig sabihin: ang estado ng serbisyo na iniuulat ng scutil, ang rutang pinili ng kernel, at kung talagang tumutugon ang kabilang dulo. Ang paghahambing sa kanila ang pagkakaiba ng pagsusuring nakakahula sa pagkopya at ng pagsusuring nagdedekorasyon lamang ng log.
Tatlong sagot sa tanong kung aktibo ang VPN
Ang estado ng serbisyo ay katotohanan ng control plane. Alam ng macOS na konektado ang isang configuration dahil sinabi ito ng client process nito. Ang ruta ay katotohanan ng data plane: ipapadala ng kernel ang destinasyong ito sa interface na iyon. Ang maabot ay katotohanan mula dulo hanggang dulo, at maaari itong mabigo dahil sa mga dahilang hindi nakikita ng alinman sa dalawa.
| Signal | Answers | Blind spot |
|---|---|---|
scutil --nc status | Is the service connected? | Third-party clients, wrong routes |
route -n get | Where would this go? | The peer may be down |
| A request to the far side | Does it work now? | Slow, and it changes state |
Pinagsasama ng kapaki-pakinabang na pagsusuri ang unang dalawa at ginagamit ang pangatlo bilang kumpirmasyon na hindi nagsinungaling ang dalawa. Ang alinman sa kanila nang mag-isa ay haka-haka na may timestamp.
Basahin ang identifier, hindi ang display name
scutil --nc list
scutil --nc status "Office"
Nagpi-print ang listahan ng isang linya kada serbisyo, at bawat linya ay may estado sa panaklong, kasunod ang identifier ng serbisyo, ang uri at ang display name. Isulat ang script ayon sa identifier, dahil ang display name ang itinype ng isang tao sa System Settings at maaaring magbago nang walang abiso. Nagpi-print ang status command ng isang salita at, para sa ilang uri ng serbisyo, ng estadistika pagkatapos nito; itugma ang unang salitang iyon sa halip na hanapin ang pangalan sa buong output, na lumilitaw din sa ibang lugar.
Ang pagsisimula ng serbisyo ay maaaring maglabas ng kahilingan sa awtorisasyon o tahasang tanggihan kapag pinamamahalaan ang profile. Ang pagtanggi ay hindi depekto ng tunnel; ito ay pahayag ng patakaran kung sino ang maaaring magtaas nito.
Nagtatago ang kliyente ng third party mula sa listahan
Ang walang laman na listahan ay hindi ibig sabihin na walang VPN. Ang mga configuration na ginawa sa sariling network settings ng system ay lumilitaw dito; ang kliyente ng vendor, management profile o app ng third party ay maaaring may aktibong tunnel na hindi kailanman nakikita ng command na ito. Ang sariling tool nito ang awtoridad para sa sariling serbisyo nito. Ang pagtatanong sa scutil tungkol sa kliyenteng hindi kailanman nagrehistro rito ay walang ibinabalik, at ang wala ay hindi kaparehong sagot ng disconnect.
Kapag walang laman ang listahan pero malinaw na naka-encrypt ang trapiko, hanapin ang interface: ang device na utun o ppp na may address sa inaasahang saklaw ay ebidensiya na may nagtatag ng tunnel. Ito ay mas mahinang senyales kaysa estado ng serbisyo, kaya isama ito sa pagsusuri ng ruta sa halip na ituring ang interface na patunay ng pagkakakilanlan. Maraming kliyente ang maaaring gumawa ng maraming gayong interface, at isa lamang sa kanila ang pag-aari ng tunnel na ibig mong sabihin.
Ang estado ay hindi routing
Sinasabi ng konektadong serbisyo na umiiral ang tunnel. Hindi nito sinasabi na ginagamit ito ng destinasyon mo. Basahin ang mga address, pagkatapos tanungin ang kernel nang direkta:
ifconfig | grep -A4 utun
netstat -rn -f inet
route -n get 10.40.0.20
Ang kliyenteng may buong tunnel ay naglalagay ng default na ruta sa tunnel; ang kliyenteng may hati na tunnel ay naglalagay ng partikular na pribadong prefix. Pareho nilang iniuulat ang Connected, at ang script na estado lamang ang sinusuri ay masayang tatakbo sa maling landas. Ang paghinto ng tunnel ay hindi kinakailangang nag-aalis ng mga rutang inilagay ng ibang kliyente, at isa ito sa mga paraang nagtatapos ang isang makina na may konektadong serbisyo at lumang ruta nang sabay. Tingnan ang destinasyong mahalaga sa iyo, hindi ang buong talahanayan ng ruta.
Ang pagpapangalan ay hiwalay na problema
Hindi maabot ng ibang makina ang Mac sa pangalan habang gumagana ang address nito, at iniuulat ito bilang depekto ng VPN. Ang lokal na host name, host name at DNS record ay tatlong magkakaibang bagay. Ipinapakita ng scutil --get LocalHostName ang pangalang Bonjour; itinatakda ng sudo scutil --set HostName mac-office ang pangalang iniuulat ng system.
Wala sa mga setting na ito ang gumagawa ng record sa office zone. Kung kailangang i-resolve ng ibang host ang pangalan sa pamamagitan ng DNS, dapat itong idagdag ng may-ari ng zone, o dapat gamitin ng script ang address sa halip. Ginagawa ng stable na pangalan na pare-pareho ang mga anunsyo; hindi nito pinapasagot ang resolver.
Itala nang sabay sa script ang identifier ng serbisyo at ang inaasahang hugis ng ruta, at suriin ang dalawa bago ang pagkopya. Ang tunnel na aktibo pero naka-ruta sa maling direksiyon ay nabigo nang eksakto tulad ng walang tunnel, at ang log line na nagsasabing Connected ay magpapadala sa susunod na tao na maghanap sa maling lugar.