macOS VPN-állapot terminálból: scutil, útvonalak vagy ping
A szolgáltatás állapota, a kernel útvonala és egy valódi kérés három különböző kérdésre válaszol. A szkriptet a szolgáltatás-azonosítóra építse, és az útvonalat is ellenőrizze.
Egy telepítő szkript valahol ellenőrzi, hogy az alagút fut-e, mielőtt a másolás elkezdődik. Három válasz áll rendelkezésre, és nem ugyanazt jelentik: a szolgáltatás állapota, amelyet scutil jelent, a kernel által választott útvonal, és hogy a túlsó vég valóban válaszol-e. Ezek összevetése a különbség az aközött az ellenőrzés között, amely megjósolja a másolást, és aközött, amely csak díszíti a naplót.
Három válasz arra, hogy fut-e a VPN
A szolgáltatás állapota vezérsík-tény. A macOS tudja, hogy egy konfiguráció csatlakozva van, mert a kliensfolyamata ezt mondta. Az útvonal adatsík-tény: a kernel ezt a célt azon a felületen keresztül küldi. Az elérhetőség végponttól végpontig terjedő tény, és olyan okokból is meghiúsulhat, amelyeket a másik kettő egyike sem lát.
| 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 |
Egy hasznos ellenőrzés az első kettőt ötvözi, a harmadikat pedig annak megerősítésére használja, hogy az első kettő nem hazudott. Bármelyik önmagában időbélyeggel ellátott találgatás.
Az azonosítót olvassa, ne a megjelenő nevet
scutil --nc list
scutil --nc status "Office"
A lista szolgáltatásonként egy sort ír ki, és minden sor zárójelben tartalmazza az állapotot, majd a szolgáltatás-azonosítót, a típust és a megjelenő nevet. A szkriptet az azonosítóra építse, mert a megjelenő név az, amit valaki a Rendszerbeállításokban beírt, és figyelmeztetés nélkül megváltozhat. Az állapotparancs egyetlen szót ír ki, egyes szolgáltatástípusoknál statisztikát utána; azt az első szót illessze, ne a teljes kimenetben keresse a nevet, amely máshol is előfordul.
A szolgáltatás indítása engedélyezési kérést válthat ki, vagy egyenesen elutasítható, ha a profil kezelt. Ez az elutasítás nem az alagút hibája; ez szabályzat arról, ki hozhatja fel.
A harmadik féltől származó kliens rejtve marad a listáról
Az üres lista nem azt jelenti, hogy nincs VPN. A rendszer saját hálózati beállításaiban létrehozott konfigurációk itt jelennek meg; egy szállító kliensprogramja, egy kezelési profil vagy egy harmadik féltől származó alkalmazás olyan aktív alagutat tarthat fenn, amelyet ez a parancs soha nem lát. A saját szolgáltatására a saját eszköze a mérvadó. Ha scutil-tól kérdezünk egy olyan kliensről, amely soha nem regisztrált nála, semmit kapunk, a semmi pedig nem ugyanaz a válasz, mint a leválasztott.
Amikor a lista üres, de a forgalom egyértelműen titkosított, keresse a felületet: a várt tartományba eső című utun vagy ppp eszköz bizonyíték arra, hogy valami alagutat hozott létre. Ez gyengébb jel a szolgáltatás állapotánál, ezért párosítsa útvonal-ellenőrzéssel, ahelyett hogy a felületet az azonosság bizonyítékának tekintené. Több kliens több ilyen felületet is létrehozhat, és közülük csak egy tartozik ahhoz az alagúthoz, amelyre gondolt.
Az állapot nem útválasztás
A csatlakozott szolgáltatás azt mondja, hogy létezik az alagút. Nem azt mondja, hogy a célja használja. Olvassa el a címeket, majd kérdezze meg közvetlenül a kernelt:
ifconfig | grep -A4 utun
netstat -rn -f inet
route -n get 10.40.0.20
A teljes alagutas kliens alapértelmezett útvonalat telepít az alagúton át; a megosztott alagutas kliens meghatározott privát előtagokat telepít. Mindkettő Connected állapotot jelent, és a csak az állapotot ellenőrző szkript vígan elindul a rossz úton. Az alagút leállítása nem feltétlenül távolítja el a másik kliens által telepített útvonalakat, és ez az egyik módja annak, hogy egy gép egyszerre kerül csatlakozott szolgáltatással és elavult útvonallal. Azt a célt nézze, amely fontos önnek, ne a teljes útvonaltáblát.
Az elnevezés külön probléma
Más gépek nem érik el a Macet név szerint, miközben a címe működik, és ezt VPN-hibaként jelentik. A helyi gépnév, a gépnév és a DNS-rekord három különböző dolog. scutil --get LocalHostName a Bonjour-nevet mutatja; sudo scutil --set HostName mac-office beállítja a nevet, amelyet a rendszer jelent.
Egyik beállítás sem hoz létre rekordot az irodai zónában. Ha más gazdagépeknek DNS-en keresztül kell feloldaniuk a nevet, a zóna tulajdonosának hozzá kell adnia, vagy a szkriptnek inkább a címet kell használnia. Egy stabil név beállítása egységessé teszi a bejelentéseket; nem készteti válaszra a feloldót.
Rögzítse a szolgáltatás-azonosítót és a várt útvonalformát együtt a szkriptben, és a másolás előtt ellenőrizze mindkettőt. Egy futó, de rossz irányba irányított alagút pontosan úgy meghiúsul, mint a semmilyen alagút, a Connected szót tartalmazó naplósor pedig a következő embert rossz helyre küldi keresni.