Pengawas ping tidak dapat membezakan terowong rosak daripada terowong sihat
Ping ke internet membuktikan lebih sedikit daripada yang kelihatan. Periksa terowong dari dalam, kira kegagalan sebelum bertindak dan anggap peralihan pelayan sebagai keputusan berasingan.
Tiga keadaan menentukan sama ada pengawas membantu atau memudaratkan: apa yang dapat dibezakan oleh pemeriksaan, berapa kegagalan berturut-turut yang mewajarkan tindakan, dan sama ada tindakan itu penyambungan semula atau peralihan. Satu baris cron yang mengeping alamat awam tidak menjawab mana-mana satu dengan baik. Ia menyambung semula terowong yang sihat dan membiarkan terowong yang rosak, dan melakukan kedua-duanya tanpa sebarang rekod. Reka bentuk yang wajar dikekalkan menjadikan ketiga-tiga pilihan itu jelas.
Pemeriksaan ialah bahagian yang menentukan segala-galanya.
Apa yang sebenarnya dibuktikan oleh ping ke internet
Mengeping resolver awam menunjukkan laluan internet tempatan masih hidup. Ia tidak membuktikan terowong membawa trafik, dan pada profil terowong penuh ping itu sendiri melalui terowong, jadi balasan sihat dan terowong rosak boleh wujud serentak sementara klien masih menghantar paket. Jika profil menghantar carian nama melalui terowong, kegagalan DNS dibaca sebagai pautan mati dan memulakan penyambungan semula yang tidak dapat membaiki apa-apa.
Tiada satu pun daripada dua arah ralat itu muncul dalam kod keluar. Pengawas yang dibina atas isyarat itu ialah lambungan syiling dengan jadual cron.
Periksa sesuatu yang hidup di belakang terowong
ip -brief addr show tun0 ip route get 10.100.20.10 nc -z -w3 10.100.20.10 443
Periksa dari dalam, pemeriksaan paling murah dahulu. Sama ada antara muka wujud memberitahu terowong sudah naik; carian laluan ke alamat dalaman yang diketahui memberitahu trafik akan masuk ke situ; pemeriksaan TCP ke hos di sebelah sana memberitahu ada sesuatu yang benar-benar menjawab. Hanya permintaan echo mengelirukan: banyak hos dalaman menjawab TCP dengan senang hati tetapi membuang ICMP, jadi pengawas berasaskan ping terus menyambung semula terowong yang tidak pernah berhenti berfungsi.
Kekalkan pemeriksaan terbatas dalam masa dan berikannya status keluar tersendiri. Pemeriksaan yang tergantung tiga puluh saat menjadikan pengawas pengesan gangguan dengan kelewatan terbina.
Pilih antara satu baris dan satu gelung
* * * * * nc -z -w5 10.100.20.10 443 || myvpn reconnect
Entri cron ialah satu baris tanpa memori, sesuai untuk komputer riba yang penyambungan semula tambahan tidak memakan apa-apa. Gelung yang diawasi menyimpan pembilang dan bertindak hanya selepas beberapa kali terlepas, yang menghalang pautan tidak stabil daripada mencetuskan ribut penyambungan semula. Walau apa pun, jalankannya di bawah penyelia supaya ia terselamat daripada ranap dan menulis ke jurnal. Pilih berdasarkan sama ada penyambungan semula palsu itu penting, bukan berdasarkan versi mana yang lebih pendek.
failures=0 while sleep 30; do if nc -z -w5 10.100.20.10 443; then failures=0 else failures=$((failures+1)); fi if [ $failures -ge 3 ]; then myvpn reconnect; failures=0; fi done
Gelung itu mengira kegagalan berturut-turut dan bukannya pecahan sepanjang tetingkap. Tetingkap memerlukan jam dan memori sampel, dan kebanyakan pepijat dalam pengawas buatan tangan tinggal dalam aritmetik itu.
Peralihan pelayan ialah keputusan yang berbeza
Menukar pelayan berbeza daripada menyambung semula. Koyakkan pautan lama dahulu, kerana klien kedua yang bermula semasa yang pertama masih memegang alamat akan berlanggar. Kira kegagalan berturut-turut sebelum menukar, hadkan percubaan, dan periksa semula setelah pautan baharu naik dan bukannya mempercayai status keluar arahan connect. Konfigurasi yang salah tidak sepatutnya berputar melalui setiap pelayan dalam gelung.
Jangan periksa alamat awam pelayan VPN itu sendiri dari dalam terowong penuh. Pemeriksaan itu bergantung pada perkara yang diujinya, dan melaporkan kejayaan sedangkan laluan yang sepatutnya disahkan sudah tiada.
Catat pemeriksaan mana yang berjalan, apa yang dikembalikannya dan tindakan apa yang menyusul. Rekod itu menukar penyambungan semula yang misteri menjadi peristiwa yang boleh didiagnosis.