Qo'riqchi yordam beradimi yoki zarar qiladimi, buni uch shart belgilaydi: tekshiruv nimani ajrata olishi, nechta ketma-ket muvaffaqiyatsizlik harakatni oqlashi va harakat qayta ulanishmi yoki almashtirishmi. Ommaviy manzilga ping yuboradigan cron satri ularning birortasiga ham yaxshi javob bermaydi. U sog'lom tunnellarni qayta ulaydi va buzilganlarini o'z holida qoldiradi, ikkalasini ham hech qanday yozuvsiz bajaradi. Saqlashga arziydigan dizayn bu uch tanlovni ochiq qiladi.

Tekshiruv qolgan hamma narsani belgilaydigan qismdir.

Internetga ping aslida nimani isbotlaydi

Ommaviy resolverga ping yuborish mahalliy internet yo'li tirikligini ko'rsatadi. Bu tunnel trafik tashirayotganini isbotlamaydi, to'liq tunnel profilida pingning o'zi tunneldan o'tadi, shuning uchun sog'lom javob va buzilgan tunnel bir vaqtda mavjud bo'lishi mumkin, mijoz hali ham paketlarni uzatayotgan paytda. Agar profil nom qidiruvlarini tunneldan yuborsa, DNS nosozligi o'lik bog'lanish deb o'qiladi va hech narsani tuzata olmaydigan qayta ulanishni boshlaydi.

Xatoning ikkala yo'nalishidan hech biri chiqish kodida ko'rinmaydi. Shu signalga qurilgan qo'riqchi cron jadvali bilan tanga tashlashdir.

Tunnel orqasida yashaydigan narsani tekshiring

ip -brief addr show tun0
ip route get 10.100.20.10
nc -z -w3 10.100.20.10 443

Ichkaridan tekshiring, eng arzon tekshiruv birinchi. Interfeys borligi tunnel ko'tarilganini aytadi; ma'lum ichki manzilga marshrut qidiruvi trafik unga kirishini aytadi; narigi tomondagi xostga TCP tekshiruvi haqiqatan nimadir javob berayotganini aytadi. Faqat echo so'rovlari chalg'itadi: ko'plab ichki xostlar TCP ga bajonidil javob beradi, lekin ICMP ni tashlab yuboradi, shuning uchun pingga asoslangan qo'riqchi hech qachon ishlashdan to'xtamagan tunnelni tinimsiz qayta ulaydi.

Tekshiruvni vaqt bilan chegaralab turing va unga alohida chiqish holatini bering. O'ttiz soniya osilib turadigan tekshiruv qo'riqchini ichida kechikish bo'lgan uzilish aniqlagichiga aylantiradi.

Bitta satr va bitta sikl orasidan tanlang

* * * * * nc -z -w5 10.100.20.10 443 || myvpn reconnect

cron yozuvi xotirasiz bitta satrdir, bu qo'shimcha qayta ulanish hech narsa turmaydigan noutbukka mos keladi. Nazorat ostidagi sikl hisoblagich tutadi va bir necha o'tkazib yuborishdan keyingina harakat qiladi, bu beqaror ulanishning qayta ulanish bo'ronini keltirib chiqarishini oldini oladi. Qanday bo'lsa ham, uni nosozlikdan omon qolishi va jurnalga yozishi uchun nazoratchi ostida ishga tushiring. Qaysi versiya qisqaroq ekaniga qarab emas, ortiqcha qayta ulanish muhimmi yoki yo'qmi, shunga qarab tanlang.

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

Bu sikl oyna bo'yicha ulush emas, ketma-ket muvaffaqiyatsizliklarni sanaydi. Oyna soat va namunalar xotirasini talab qiladi, qo'lda yozilgan qo'riqchilardagi xatolarning ko'pchiligi aynan shu arifmetikada yashaydi.

Server almashtirish boshqa qaror

Serverni almashtirish qayta ulanishdan farq qiladi. Avval eski ulanishni uzib tashlang, chunki birinchisi hali manzilni ushlab turganda boshlangan ikkinchi mijoz to'qnashadi. Almashtirishdan oldin ketma-ket muvaffaqiyatsizliklarni sanang, urinishlarni cheklang va yangi ulanish ko'tarilgandan keyin yana tekshiring, connect buyrug'ining chiqish holatiga ishonish o'rniga. Noto'g'ri konfiguratsiya sikl ichida har bir serverdan aylanib o'tmasligi kerak.

To'liq tunnel ichidan VPN serverining o'z ommaviy manzilini tekshirmang. Bu tekshiruv o'zi sinayotgan narsaga bog'liq va tekshirishi kerak bo'lgan yo'l allaqachon yo'q bo'lsa ham muvaffaqiyat haqida xabar beradi.

Qaysi tekshiruv ishlaganini, nima qaytarganini va qanday harakat kelganini yozib qo'ying. Bu yozuv sirli qayta ulanishni aniqlash mumkin bo'lgan hodisaga aylantiradi.

O'xshash maqolalar