Бир нече vpnc тоннелин профил боюнча текшерүүлөр менен иштетип туруңуз
Пакеттеги кайра туташуу скрипти бир тоннелди болжолдойт. Ар бир vpnc профилине өз портун бериңиз, чыныгы кызматты текшериңиз жана текшерүүлөрдү бир туруктуу тартипте тизмектеңиз.
Бир vpnc профили роумингден кийин таза кайра туташат; үчөө кезеги менен бири-биринин сокеттерин, маршруттарын жана чечүүчүнүн абалын бузат. Пакеттеги кайра туташуу скрипти бир тоннел үчүн жазылган, ошондуктан алардын кайсы бири өчсө, ал ар бир профилди кайра баштайт. Муну оңдоо үчүн үч нерсе керек: өзүнчө жергиликтүү порттор, ар бир профиль үчүн чыныгы кызматты текшерген текшерүү жана эч качан эки туташууну бир убакта иштетпеген бир тартипке салынган тизмек.
Ар бир профилге өзүнүн жергиликтүү портун бериңиз
Демейки жергиликтүү портто калтырылган vpnc профили буга чейин иштеп жаткан профил менен атаандашат. Биринчиси портту кармап турганда экинчи туташуу ишке ашпайт, жана журнал сабы жергиликтүү кагылыш эмес, шлюз көйгөйү сыяктуу көрүнөт. Анын ордуна ар бир профиль файлы үчүн бир сап жазыңыз:
Local Port 0Нөл ядрого кыска мөөнөттүү порт тандоого жол берет, ошондуктан эки профилди бир убакта түзсө болот. Ар бир файлды ал кызмат кылган шлюз менен топтун атынан атаңыз, аны root гана окуй ала тургандай кармап туруңуз жана ар дайым жалпы демейкинин ордуна дал келген профил менен туташыңыз. Жалпы демейки файл — бул бирөө профилдин атын өзгөрткөндөн кийин скрипт туура эмес тоннелди кайра туташтырган жол.
Профиль файлдары каттоо маалыматтарын алып жүрөт, ошондуктан укуктар долбоордун бөлүгү, үй ишинин эмес. /etc/vpnc астында баары окуй алган файл топтун сырын ар бир жергиликтүү колдонуучуга берет. Режимди 0600 кылып, ээси root болсун, жана скрипттер сырларды аргументтерге көчүрүүнүн ордуна файлды root катары окусун. Ошондуктан текшерүү скрипти файлдын мазмунун эч качан журналга басмашы керек.
Ар бир профиль үчүн бир кызматты текшериңиз, тоннелдин дарегин эмес
Тоннелдин өз дарегине жиберилген жаңыртма суроо негизинен интерфейстин бар экенин далилдейт. Ал артындагы хост тоннелди актаган колдонмого дагы эле жетеби деген жөнүндө эч нерсе айтпайт. Интерфейс күйүп турушу мүмкүн, ал эми анын артындагы маршрут буга чейин кеткен.
Ар бир профиль үчүн бир кызматты кыска TCP мөөнөтү менен текшериңиз жана текшерүүсү ишке ашпаган профилди гана кайра туташтырыңыз. Эки секунд өлүк жолду жай жолдон ажыратат, ал эми TCP текшерүү жолдун кайсы жеринде ICMP уруксат берилгенине көз каранды эмес. Профилдердин ортосунда максатты жана конфигурациянын атын гана өзгөртүңүз:
#!/bin/bash
set -eu
if ! nc -z -w 2 10.63.7.20 8443; then
/usr/sbin/vpnc-connect ops.conf
fiМуну /usr/local/bin/ensure-vpn-ops.sh катары сактаңыз, аткарылуучу кылып жасаңыз жана ар бир профиль үчүн текшерүү максаты менен конфигурациянын атын гана өзгөртүп кайталаңыз. Протокол суроосуна жооп берген текшерүү жаңыртманы таштаган, бирок колдонуучуларга маанилүү кызматтарды уланта берген шлюздерден аман өтөт.
Текшерүүлөрдү эч качан жарышпай тургандай тизмектеңиз
Пакеттеги кайра туташуу скрипти текшерүүлөрүңүздү кезек менен чакыра алат, жана кезектүүлүк — бүткүл маселе. Чогуу иштеген эки vpnc-connect чакыруусу маршруттоо таблицасын эч ким көзөмөлдөбөгөн тартипте кайра жазат, жана ден соолугу чың профиль өз маршрутун ушундай жоготуп алат.
Чакырууларды алдыңкы планда кармаңыз, астындагы интерфейс үчүн кыска турукташтыруу кечигүүсүн кошуңуз жана тизмекти root'тун cron таблицасынан пландаштырыңыз, анткени тоннелдин маршруттарын кайра жазууга root гана жөндүү:
#!/bin/bash
sleep 20
/usr/local/bin/ensure-vpn-ops.sh
/usr/local/bin/ensure-vpn-lab.shЖүктөө скрипти менен cron жазуусунун ортосундагы тартипти бирдей кармаңыз, анткени жүктөө учурунда башка тартипте иштеген тизмек чынында башка программа. Бир профиль экинчисинин маршруттарына көз каранды болсо, көз карандылыкты биринчи коюңуз жана мурунку тоннель көтөрүлүп жатканда кийинки текшерүү зыянсыз ишке ашпасын.
Журналды көзөмөлдөңүз, анан бирөөнү атайылап бузуңуз
Ар бир иштөө үчүн бир сап жазыңыз: профиль, текшерүү максаты, жыйынтык жана кабыл алынган чара. Ансыз ар бир мүнөттө термелген тоннель эч качан түшпөгөн тоннелге окшош болот, жана текшерүү катасын шлюздын үзгүлтүгүнөн айырмалоо мүмкүн эмес. Журнал тизмектин ишке ашпаган профилге гана тийгенин да далилдейт. Аны кайра жүктөөдөн кийин да калган жерге жазыңыз, болбосо далилдер процесс менен кошо кетет.
Анан тоннелди атайылап бузуңуз жана эмне болорун караңыз. Бир профилди токтотуп, кайсы процесс жана маршруттар дагы эле бар экенин ырастаңыз:
pgrep -a vpnc
ip -4 route show | grep -E '10[.]63|10[.]90'
tail -n 5 /var/log/ensure-vpn.logТоктотулган профиль гана кайра туташып, калган сессиялар процесс менен маршруттарын тең сакташы керек. Эгер эки профиль кайра башталса, тизмегиңиз сиз күтпөгөн жерде параллель иштеп жатат.
Күзөтчү эмне кылбашы керек
Бир нерсе ишке ашпаганда баарын кайра баштаган күзөтчү сыноо учурунда ден соолугу чың көрүнөт жана тейлөө терезесинде үзгүлтүк жаратат. Профиль боюнча кайра баштаңыз, эч качан глобалдык түрдө эмес.
Шлюз ошол эле протокол үчүн тейленүүчү клиентти сунуштаса, ошону тандаңыз, жана сырсөздү скриптке эч качан катуу жазып койбоңуз же аны буйрук сабында бербеңиз, анткени профиль файлы сырды буга чейин сактайт. Эгер тапшырма тоннель көтөрүлгөндөн кийин жөнөкөй колдонуучу катары иштеши керек болсо, бүт тизмекти ошол эсептин астында иштетүүнүн ордуна скрипттин ичинен артыкчылыктарды азайтыңыз. Аягында, кайра туташкандан кийин маршруттарды кайра окуңуз, анткени профиль башка дайындалган дарек менен кайтып, тоннелдин дарегине багытталган эч бир текшерүү байкабаган эскирген маршрут калтырышы мүмкүн.