Ergens in 'n ontplooiingskrip is daar 'n kontrole of die tonnel op is voordat 'n kopie begin. Drie antwoorde is beskikbaar, en hulle beteken nie dieselfde ding nie: die diensstatus wat scutil rapporteer, die roete wat die kern gekies het, en of die ander kant werklik antwoord. Om hulle te vergelyk is die verskil tussen 'n kontrole wat die kopie voorspel en een wat net 'n log versier.

Drie antwoorde op die vraag of die VPN op is

Die diensstatus is 'n beheervlak-feit. macOS weet dat 'n konfigurasie gekoppel is omdat sy kliëntproses dit gesê het. Die roete is 'n datavlak-feit: die kern sal hierdie bestemming deur daardie koppelvlak stuur. Bereikbaarheid is 'n end-tot-end-feit, en dit kan misluk om redes wat nie een van die ander twee sien nie.

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

'n Nuttige kontrole kombineer die eerste twee en gebruik die derde as die bevestiging dat die ander twee nie gelieg het nie. Enige een alleen is 'n raaiskoot met 'n tydstempel.

Lees die identifiseerder, nie die vertoonnaam nie

scutil --nc list
scutil --nc status "Office"

Die lys druk een reël per diens, en elke reël dra 'n status tussen hakies, gevolg deur die diensidentifiseerder, die tipe en die vertoonnaam. Skryf jou skrip teen die identifiseerder, want die vertoonnaam is wat iemand in Stelselinstellings ingetik het en dit kan sonder waarskuwing verander. Die statusbevel druk 'n enkele woord, gevolg deur statistieke vir sommige dienstipes; pas daardie eerste woord, eerder as om die hele uitset vir die naam te deursoek, wat ook elders voorkom.

Om 'n diens te begin kan 'n magtigingsversoek uitlok of heeltemal geweier word wanneer die profiel bestuur word. Daardie weiering is nie 'n fout in die tonnel nie; dit is 'n beleidsverklaring oor wie dit mag opbring.

'n Derde-party-kliënt is onsigbaar in die lys

'n Leë lys beteken nie daar is geen VPN nie. Konfigurasies wat binne die stelsel se eie netwerkinstellings geskep is, verskyn hier; 'n handelaarkliënt, 'n bestuursprofiel of 'n derde-party-app kan 'n aktiewe tonnel hou wat hierdie bevel nooit sien nie. Sy eie gereedskap is die gesag vir sy eie diens. Om scutil te vra oor 'n kliënt wat nooit by hom geregistreer het nie, gee niks terug, en niks is nie dieselfde antwoord as ontkoppel nie.

Wanneer die lys leeg is maar verkeer duidelik geënkripteer is, soek eerder na die koppelvlak: 'n utun- of ppp-toestel met 'n adres in die verwagte reeks is bewys dat iets 'n tonnel opgestel het. Dit is 'n swakker sein as 'n diensstatus, so paar dit met 'n roetekontrole eerder as om die koppelvlak as bewys van identiteit te beskou. Verskeie kliënte kan verskeie sulke koppelvlakke skep, en net een van hulle behoort aan die tonnel wat jy bedoel het.

Status is nie roetering nie

'n Gekoppelde diens sê die tonnel bestaan. Dit sê nie dat jou bestemming dit gebruik nie. Lees die adresse en vra dan die kern direk:

ifconfig | grep -A4 utun
netstat -rn -f inet
route -n get 10.40.0.20

'n Voltonnel-kliënt installeer 'n verstekroete deur die tonnel; 'n split-tonnel-kliënt installeer spesifieke private voorvoegsels. Albei rapporteer Connected, en 'n skrip wat net die status kontroleer, sal gelukkig oor die verkeerde pad loop. Om 'n tonnel te stop verwyder nie noodwendig roetes wat 'n ander kliënt geïnstalleer het nie, en dit is een manier waarop 'n masjien gelyktydig 'n gekoppelde diens en 'n verouderde roete kry. Kyk na die bestemming wat jy saak maak, nie na die roetetabel as geheel nie.

Naamgewing is 'n aparte probleem

Ander masjiene kan die Mac nie by die naam bereik nie, terwyl sy adres werk, en dit word as 'n VPN-fout gerapporteer. Die plaaslike gasheernaam, die gasheernaam en die DNS-rekord is drie verskillende dinge. scutil --get LocalHostName wys die Bonjour-naam; sudo scutil --set HostName mac-office stel die naam wat die stelsel rapporteer.

Nie een van die instellings skep 'n rekord in die kantoor-sone nie. As ander gashere die naam deur DNS moet oplos, moet die sone-eienaar dit byvoeg, of die skrip moet eerder die adres gebruik. Om 'n stabiele naam te stel maak aankondigings konsekwent; dit laat die oplosser nie antwoord nie.

Teken die diensidentifiseerder en die verwagte roetevorm saam in die skrip aan, en kontroleer albei voor die kopie. 'n Tonnel wat op is en verkeerd gerouteer is, misluk presies soos geen tonnel nie, en die logreël wat Connected sê, sal die volgende persoon na die verkeerde plek laat kyk.

Verwante artikels