macOSin VPN-tila päätteeltä: scutil, reitit vai ping
Palvelun tila, ytimen reitti ja todellinen pyyntö vastaavat kolmeen eri kysymykseen. Kirjoita skripti palvelun tunnisteen mukaan ja tarkista myös reitti.
Jossain käyttöönottoskriptissä tarkistetaan, onko tunneli päällä ennen kopioinnin alkua. Tarjolla on kolme vastausta, eivätkä ne tarkoita samaa: palvelun tila, jonka scutil raportoi, reitti, jonka ydin valitsi, ja se, vastaako toinen pää todella. Niiden vertaaminen on ero tarkistuksen välillä, joka ennustaa kopioinnin, ja sellaisen välillä, joka vain koristelee lokia.
Kolme vastausta kysymykseen, onko VPN päällä
Palvelun tila on ohjaustason tosiasia. macOS tietää, että kokoonpano on yhteydessä, koska sen asiakasprosessi sanoi niin. Reitti on datatason tosiasia: ydin lähettää tämän kohteen tuon liitännän kautta. Tavoitettavuus on päästä päähän -tosiasia, ja se voi epäonnistua syistä, joita kumpikaan muu ei näe.
| 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 |
Hyödyllinen tarkistus yhdistää kaksi ensimmäistä ja käyttää kolmatta vahvistuksena siitä, etteivät ne kaksi valehdelleet. Kukin yksinään on arvaus aikaleimalla.
Lue tunniste, älä näyttönimeä
scutil --nc list
scutil --nc status "Office"
Listaus tulostaa yhden rivin palvelua kohden, ja jokainen rivi kantaa suluissa olevan tilan, jota seuraa palvelun tunniste, tyyppi ja näyttönimi. Kirjoita skripti tunnisteen mukaan, sillä näyttönimi on se, minkä joku kirjoitti Järjestelmäasetuksiin, ja se voi muuttua ilman varoitusta. Tilakomento tulostaa yhden sanan ja joidenkin palvelutyyppien kohdalla sen perään tilastoja; sovita tuo ensimmäinen sana sen sijaan, että etsisit nimeä koko tulosteesta, joka esiintyy myös muualla.
Palvelun käynnistäminen voi nostaa valtuutuskehotteen tai tulla kokonaan hylätyksi, kun profiilia hallitaan. Hylkäys ei ole tunnelin vika; se on periaatelause siitä, kuka saa nostaa sen.
Kolmannen osapuolen asiakas piiloutuu listalta
Tyhjä lista ei tarkoita, ettei VPN:ää ole. Tässä näkyvät kokoonpanot, jotka on luotu järjestelmän omissa verkkoasetuksissa; toimittajan asiakasohjelma, hallintaprofiili tai kolmannen osapuolen sovellus voi pitää aktiivista tunnelia, jota tämä komento ei koskaan näe. Sen oma työkalu on sen oman palvelun auktoriteetti. Kysyä scutil-lta asiakkaasta, joka ei koskaan rekisteröitynyt siihen, palauttaa ei mitään, eikä mikään ole sama vastaus kuin irrotettu.
Kun lista on tyhjä mutta liikenne on selvästi salattua, etsi sen sijaan liitäntää: laite utun tai ppp, jonka osoite on odotetulla alueella, on todiste siitä, että jokin pystytti tunnelin. Se on heikompi signaali kuin palvelun tila, joten yhdistä se reittitarkistukseen sen sijaan, että pitäisit liitäntää identiteetin todisteena. Useat asiakkaat voivat luoda useita tällaisia liitäntöjä, ja vain yksi niistä kuuluu tunnelille, jota tarkoitit.
Tila ei ole reititystä
Yhdistetty palvelu sanoo, että tunneli on olemassa. Se ei sano, että kohteesi käyttää sitä. Lue osoitteet ja kysy sitten ytimeltä suoraan:
ifconfig | grep -A4 utun
netstat -rn -f inet
route -n get 10.40.0.20
Täyden tunnelin asiakas asentaa oletusreitin tunnelin läpi; jaetun tunnelin asiakas asentaa tietyt yksityiset etuliitteet. Molemmat raportoivat Connected, ja skripti, joka tarkistaa vain tilan, kulkee iloisesti väärää polkua. Tunnelin pysäyttäminen ei välttämättä poista reittejä, jotka toinen asiakas asensi, ja tämä on yksi tapa, jolla koneelle jää yhtä aikaa yhdistetty palvelu ja vanhentunut reitti. Katso kohdetta, josta välität, älä koko reititystaulukkoa.
Nimeäminen on erillinen ongelma
Muut koneet eivät tavoita Macia nimellä, vaikka sen osoite toimii, ja se raportoidaan VPN-viaksi. Paikallinen isäntänimi, isäntänimi ja DNS-tietue ovat kolme eri asiaa. scutil --get LocalHostName näyttää Bonjour-nimen; sudo scutil --set HostName mac-office asettaa nimen, jonka järjestelmä raportoi.
Kumpikaan asetus ei luo tietuetta toimiston vyöhykkeelle. Jos muiden isäntien on ratkaistava nimi DNS:n kautta, vyöhykkeen omistajan on lisättävä se, tai skriptin pitäisi käyttää sen sijaan osoitetta. Vakaan nimen asettaminen tekee ilmoituksista johdonmukaisia; se ei saa ratkaisijaa vastaamaan.
Kirjaa palvelun tunniste ja odotettu reitin muoto yhdessä skriptiin ja tarkista molemmat ennen kopiointia. Tunneli, joka on päällä ja reititetty väärin, epäonnistuu täsmälleen kuten ei tunnelia ollenkaan, ja Connected-kertova lokirivi lähettää seuraavan ihmisen etsimään väärästä paikasta.