Ping күзөтчүсү бузулган туннелди соолуктагыдан ажырата албайт
Интернетке ping көрүнгөндөн аз далилдейт. Туннелди ичинен текшериңиз, аракеттен мурун ийгиликсиздиктерди санаңыз жана серверди алмаштырууну өзүнчө чечим деп караңыз.
Үч шарт күзөтчүнүн жардам берерин же зыян келтирерин аныктайт: текшерүү эмнени ажырата алат, канча катары менен ийгиликсиздик аракетти актайт жана аракет кайра туташуубу же алмаштыруубу. Коомдук дарекке ping жасаган cron сабы алардын бирине да жакшы жооп бербейт. Ал соо туннелдерди кайра туташтырат жана бузулгандарын ошол бойдон калтырат, жана экөөнү тең эч кандай жазуусуз жасайт. Сактоого татыктуу дизайн ушул үч тандоону ачык кылат.
Текшерүү — калган баарын аныктаган бөлүк.
Интернетке ping чындыгында эмнени далилдейт
Коомдук resolverге ping жасоо жергиликтүү интернет жолунун тирүү экенин көрсөтөт. Ал туннелдин трафик ташып жатканын далилдебейт, ал эми толук туннел профилинде ping өзү туннел аркылуу өтөт, ошондуктан соо жооп менен бузулган туннел бир убакта болушу мүмкүн, кардар дагы эле пакеттерди жиберип жатканда. Эгер профиль аттарды издөөнү туннел аркылуу жиберсе, DNS бузулушу өлгөн байланыш катары окулат жана эч нерсени оңдой албаган кайра туташууну баштайт.
Катанын эки багытынын бири да чыгуу кодунда көрүнбөйт. Ушул сигналга курулган күзөтчү cron графиги менен тыйын ыргытуу гана.
Туннелдин артында жашаган нерсени текшериңиз
ip -brief addr show tun0 ip route get 10.100.20.10 nc -z -w3 10.100.20.10 443
Ичинен текшериңиз, эң арзан текшерүү биринчи. Интерфейстин бар экени туннел көтөрүлгөнүн айтат; белгилүү ички дарекке маршрут издөө трафиктин ага кирерин айтат; аркы тараптагы хостко TCP текшерүү чындыгында бир нерсе жооп берип жатканын айтат. Жалгыз echo суроолору адаштырат: көп ички хосттор TCPге кубаныч менен жооп беришет, бирок ICMPни ташташат, ошондуктан pingге курулган күзөтчү иштебей калбаган туннелди дайыма кайра туташтырат.
Текшерүүнү убакыт менен чектеп кармаңыз жана ага өзүнчө чыгуу статусун бериңиз. Отуз секунд илинип турган текшерүү күзөтчүнү ичине киргизилген кечигүүсү бар үзүлүү тапкычка айландырат.
Бир сап менен циклдин ортосунда тандаңыз
* * * * * nc -z -w5 10.100.20.10 443 || myvpn reconnect
cron жазуусу — эстутуму жок бир сап, бул кошумча кайра туташуу эч нерсе турбаган ноутбукка жарашат. Көзөмөлдөгү цикл эсептегичти кармайт жана бир нече өткөрүп жиберүүдөн кийин гана аракеттенет, бул туруксуз байланыштын кайра туташуу бороонуна жол бербейт. Кандай болбосун, аны көзөмөлчүнүн астында иштетиңиз, ошондо ал кулоодон аман калат жана журналга жазат. Ашыкча кайра туташуу маанилүүбү — ошого карап тандаңыз, кайсы версия кыска экенине карап эмес.
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
Бул цикл терезедеги үлүштү эмес, катары менен ийгиликсиздиктерди санайт. Терезеге саат жана үлгүлөрдүн эстутуму керек, ал эми кол менен жасалган күзөтчүлөрдүн каталарынын көбү ушул арифметикада жашайт.
Серверди алмаштыруу — башка чечим
Серверлерди алмаштыруу кайра туташуудан өзгөчөлөнөт. Адегенде эски байланышты үзүңүз, анткени биринчиси дагы эле даректи кармап турганда башталган экинчи кардар кагылышат. Алмаштыруудан мурун катары менен ийгиликсиздиктерди санаңыз, аракеттерди чектеңиз жана жаңы байланыш көтөрүлгөндөн кийин кайра текшериңиз, connect буйругунун чыгуу статусуна ишенүүнүн ордуна. Туура эмес конфигурация цикл менен бардык серверлерди айланып өтпөшү керек.
VPN серверинин өзүнүн коомдук дарегин толук туннелдин ичинен текшербеңиз. Бул текшерүү өзү сынап жаткан нерсеге көз каранды жана текшерилиши керек болгон жол жок болгондо ийгилик тууралуу билдирет.
Кайсы текшерүү жүргөнүн, эмнени кайтарганын жана кандай аракет болгонун жазыңыз. Бул жазуу сырдуу кайра туташууну диагностикалоого боло турган окуяга айландырат.