Di suatu tempat dalam skrip penggunaan ada semakan sama ada terowong aktif sebelum salinan bermula. Tiga jawapan tersedia, dan semuanya tidak bermaksud sama: keadaan perkhidmatan yang dilaporkan scutil, laluan yang dipilih kernel, dan sama ada hujung jauh benar-benar membalas. Membandingkannya ialah perbezaan antara semakan yang meramal salinan dan semakan yang hanya menghiasi log.

Tiga jawapan kepada soalan sama ada VPN aktif

Keadaan perkhidmatan ialah fakta satah kawalan. macOS tahu konfigurasi bersambung kerana proses kliennya berkata begitu. Laluan ialah fakta satah data: kernel akan menghantar destinasi ini melalui antara muka itu. Kebolehsampaian ialah fakta hujung ke hujung, dan ia boleh gagal atas sebab yang tidak dilihat oleh dua yang lain.

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

Semakan yang berguna menggabungkan dua yang pertama dan menggunakan yang ketiga sebagai pengesahan bahawa dua yang lain tidak berbohong. Mana-mana satu sahaja ialah tekaan dengan cap masa.

Baca pengecam, bukan nama paparan

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

Penyenaraian mencetak satu baris bagi setiap perkhidmatan, dan setiap baris membawa status dalam kurungan diikuti pengecam perkhidmatan, jenis dan nama paparan. Tulis skrip berdasarkan pengecam, kerana nama paparan ialah apa yang seseorang taip dalam Tetapan Sistem dan boleh berubah tanpa notis. Perintah status mencetak satu perkataan diikuti statistik untuk sesetengah jenis perkhidmatan; padankan perkataan pertama itu dan bukannya mencari nama dalam seluruh output, yang juga muncul di tempat lain.

Memulakan perkhidmatan boleh menimbulkan gesaan kebenaran atau ditolak terus apabila profil diurus. Penolakan itu bukan kerosakan terowong; ia ialah kenyataan dasar tentang siapa yang boleh menghidupkannya.

Klien pihak ketiga bersembunyi daripada senarai

Senarai kosong tidak bermaksud tiada VPN. Konfigurasi yang dibuat dalam tetapan rangkaian sistem itu sendiri muncul di sini; klien vendor, profil pengurusan atau aplikasi pihak ketiga boleh memegang terowong aktif yang tidak pernah dilihat oleh perintah ini. Alatnya sendiri ialah kuasa bagi perkhidmatannya sendiri. Bertanya kepada scutil tentang klien yang tidak pernah mendaftar dengannya mengembalikan tiada apa, dan tiada apa bukan jawapan yang sama seperti terputus.

Apabila senarai kosong tetapi trafik jelas disulitkan, cari antara muka: peranti utun atau ppp dengan alamat dalam julat yang dijangka ialah bukti bahawa sesuatu telah membina terowong. Itu isyarat yang lebih lemah daripada keadaan perkhidmatan, jadi pasangkannya dengan semakan laluan dan bukannya menganggap antara muka sebagai bukti identiti. Beberapa klien boleh mencipta beberapa antara muka sedemikian, dan hanya satu daripadanya milik terowong yang anda maksudkan.

Status bukan penghalaan

Perkhidmatan yang bersambung berkata terowong itu wujud. Ia tidak berkata destinasi anda menggunakannya. Baca alamatnya, kemudian tanya kernel secara terus:

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

Klien terowong penuh memasang laluan lalai melalui terowong; klien terowong berpecah memasang awalan peribadi tertentu. Kedua-duanya melaporkan Connected, dan skrip yang hanya menyemak status akan berlari dengan gembira di laluan yang salah. Menghentikan terowong tidak semestinya membuang laluan yang dipasang oleh klien lain, dan itulah salah satu cara mesin berakhir dengan perkhidmatan bersambung dan laluan basi pada masa yang sama. Lihat destinasi yang anda pedulikan, bukan seluruh jadual laluan.

Penamaan ialah masalah berasingan

Mesin lain tidak dapat mencapai Mac mengikut nama sedangkan alamatnya berfungsi, dan itu dilaporkan sebagai kerosakan VPN. Nama hos setempat, nama hos dan rekod DNS ialah tiga perkara berbeza. scutil --get LocalHostName menunjukkan nama Bonjour; sudo scutil --set HostName mac-office menetapkan nama yang dilaporkan sistem.

Tiada satu pun tetapan itu mencipta rekod dalam zon pejabat. Jika hos lain perlu menyelesaikan nama melalui DNS, pemilik zon mesti menambahnya, atau skrip patut menggunakan alamat itu. Menetapkan nama yang stabil menjadikan pengumuman konsisten; ia tidak menyebabkan penyelesai menjawab.

Catat pengecam perkhidmatan dan bentuk laluan yang dijangka bersama-sama dalam skrip, dan semak kedua-duanya sebelum salinan. Terowong yang aktif tetapi dihalakan ke arah yang salah gagal sama seperti tiada terowong, dan baris log yang menyebut Connected akan menghantar orang seterusnya mencari di tempat yang salah.

Artikel berkaitan