Ein stad i eit distribusjonsskript er det ein sjekk på om tunnelen er oppe før ei kopi startar. Tre svar er tilgjengelege, og dei tyder ikkje det same: tenestetilstanden som scutil rapporterer, ruta kjernen valde, og om den andre enden faktisk svarar. Å samanlikne dei er skilnaden mellom ein sjekk som føreser kopien og ein som berre pyntar på loggen.

Tre svar på spørsmålet om VPN er oppe

Tenestetilstanden er eit faktum på kontrollplanet. macOS veit at ein konfigurasjon er tilkopla fordi klientprosessen sa det. Ruta er eit faktum på dataplanet: kjernen vil senda denne destinasjonen gjennom det grensesnittet. Rekkjevidde er eit faktum frå ende til ende, og det kan svikta av grunnar som ingen av dei to andre ser.

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

Ein nyttig sjekk kombinerer dei to første og brukar den tredje som stadfesting på at dei to andre ikkje ljugde. Kvar av dei åleine er ei gjetting med tidsstempel.

Les identifikatoren, ikkje visningsnamnet

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

Oppføringa skriv ut éi linje per teneste, og kvar linje har ein status i parentes, deretter tenesteidentifikatoren, typen og visningsnamnet. Skriv skriptet mot identifikatoren, fordi visningsnamnet er det nokon skreiv inn i Systeminnstillingar og kan endrast utan varsel. Statuskommandoen skriv ut eitt ord, og for nokre tenestetypar statistikk etter det; samanlikn det første ordet i staden for å leita etter namnet i heile utskrifta, som òg dukkar opp andre stader.

Å starte ei teneste kan gje ein autorisasjonsførespurnad eller bli blankt avvist når profilen er administrert. Den avvisinga er ikkje ein feil i tunnelen; det er ei policyfråsegn om kven som får henta han opp.

Ein tredjepartsklient skjuler seg frå lista

Ei tom liste tyder ikkje at det ikkje finst VPN. Konfigurasjonar laga i systemet sine eigne nettverksinnstillingar viser seg her; ein leverandørklient, ein administrasjonsprofil eller ein tredjepartsapp kan halda ein aktiv tunnel som denne kommandoen aldri ser. Verktøyet deira er autoriteten for deira eigen teneste. Å spørje scutil om ein klient som aldri registrerte seg hos han gjev ingenting, og ingenting er ikkje same svar som fråkopla.

Når lista er tom, men trafikken tydeleg er kryptert, sjå etter grensesnittet: ein utun- eller ppp-eining med adresse i det forventa området er bevis på at noko har etablert ein tunnel. Det er eit svakare signal enn tenestetilstanden, så kombiner det med ein rutesjekk i staden for å handsame grensesnittet som bevis på identitet. Fleire klientar kan laga fleire slike grensesnitt, og berre eitt av dei høyrer til tunnelen du meinte.

Status er ikkje ruting

Ei tilkopla teneste seier at tunnelen finst. Ho seier ikkje at destinasjonen din brukar han. Les adressene, og spør deretter kjernen direkte:

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

Ein klient med full tunnel installerer ei standardrute gjennom tunnelen; ein klient med delt tunnel installerer bestemte private prefiks. Begge rapporterer Connected, og eit skript som berre sjekkar status vil trygt køyre over feil veg. Å stoppe ein tunnel fjernar ikkje nødvendigvis ruter som ein annan klient installerte, og det er ein måte ei maskin endar med ei tilkopla teneste og ei forelda rute samstundes. Sjå på destinasjonen du bryr deg om, ikkje på heile rutetabellen.

Namngjeving er eit eige problem

Andre maskinar når ikkje Macen ved namn medan adressa verkar, og det blir rapportert som ein VPN-feil. Det lokale vertsnamnet, vertsnamnet og DNS-oppføringa er tre ulike ting. scutil --get LocalHostName viser Bonjour-namnet; sudo scutil --set HostName mac-office set namnet systemet rapporterer.

Ingen av innstillingane lagar ei oppføring i kontorsona. Viss andre vertar må slå opp namnet via DNS, må soneeigaren leggje det til, eller skriptet bør bruke adressa i staden. Eit stabilt namn gjer kunngjeringane konsistente; det får ikkje oppløysaren til å svare.

Noter tenesteidentifikatoren og den forventa ruteforma saman i skriptet, og sjekk begge før kopien. Ein tunnel som er oppe men ruta feil veg feilar nøyaktig som ingen tunnel, og logglinja som seier Connected sender neste person til å leite på feil stad.

Relaterte artiklar