Клиент туташат, TLS сүйлөшүүлөрү учурунда ийгиликсиз болот, күтөт жана ошол эле серверди ошол эле жыйынтык менен кайра сынап көрөт. Ийгиликсиз процессти кайра баштаган көзөмөлчүнүн астында бул аракеттер журналда түбөлүк циклге айланат, ал эми биринчи диагностикалык сап кол жеткис жерге кетет. OpenVPN ошол сүйлөшүү ийгиликсиздигин дагы бир аракеттин ордуна көрүнүктүү чыгууга айландырган параметрди сунуштайт. Бул диагностика жана көзөмөл жөндөөсү, оңдоо эмес, ошондуктан аны процесстин чындап токтоп турушуна жол берген саясат менен айкалыштырыңыз.

Биринчи катаны жашырган цикл

Көрүп жатканыңыз бир ийгиликсиздик эмес, кайталанма блок: туташуу аракети, TLS катасы, тыныгуу, анан ошол эле ырааттуулук. Ар бир кайталоо баштапкы сапты журналда жогору жакка түртөт. Эгер бирдик ийгиликсиздикте кайра башталса, цикл бир нече саатка созулушу мүмкүн, ал эми себебин эч ким окубайт. Симптом — цикл, бирок негизги кемчилик сүйлөшүүнүн бир маселеси.

Интерактивдүү сессиялар буга чыдайт, анткени өткөөл ийгиликсиздик кийинки аракетте кетиши мүмкүн. Автоматташтырылган туташуулар ушундай оптимизмге жол бере албайт: процесс токтоп калышы керек, ошондо адам же монитор абалды көрөт.

Бир нерсени өзгөртүүдөн мурун бир толук циклди жазып алыңыз. Алыскы даректи, катада аталган TLS баскычын жана процесс жалпы чыгабы, белгилеңиз.

Циклдин артындагы кайталоо механизми

Кайталоо демейки, анткени бир нече байланышсыз тайм-аут бир эле механизмди бөлүшөт. connect-retry туташуу аракеттеринин ортосундагы аралыкты белгилейт, connect-retry-max ар бир алыскы жазуу канча жолу сыналаарын чектей алат, ал эми resolv-retry кайталанма ат издөөнү башкарат. TLS сүйлөшүү ийгиликсиздиги бул механизмге транспорттук окуя катары жетет, ошондуктан клиент билдирүүнүн ордуна дагы бир аракетти пландайт. Демейки маани туруксуз линияга жардам берет жана айыга албаган кемчиликке зыян келтирет.

--tls-exit параметри сүйлөшүү учурун гана өзгөртөт. Нускама аны TLS сүйлөшүүсү ийгиликсиз болгондо чыгуу деп сүрөттөйт, бул ар бир катада чыгуудан тар. Тайм-ауттар, чечүүчүнүн каталары жана аутентификациядан баш тартуулар өз жүрүм-турумун сактайт.

Клиентти TLS ийгиликсиздигинде чыгууга мажбурлоо

tls-exit параметрин клиент чындап жүктөгөн профилге коюңуз же иштетүүдө --tls-exit бериңиз, анан аны бир жолу алдыңкы планда иштетиңиз. Чыгуу абалын жана журналдын акыркы сабын окуңуз, анткени көзөмөлчү абалга жараша аракет кылат. Сүйлөшүү ийгиликсиздигинен кийин нөлгө барабар эмес чыгуу — күтүлгөн жыйынтык. Эгер процесс бүтүүнүн ордуна кайталоону улантса, параметр клиент чындап жүктөгөн профилде жок.

Ошол чыгуу көрүнөбү, жокпу — көзөмөлчү чечет. Restart=always же Restart=on-failure бар systemd бирдиги клиентти кайра баштайт, ошондуктан цикл уланат жана параметр эч нерсе кылбагандай көрүнөт. Клиентти күнөөлөөдөн мурун саясатты текшериңиз:

systemctl show -p Restart -p RestartSec openvpn-client@office
journalctl -u openvpn-client@office -n 40 --no-pager

Restart=no процесстин төмөндө калышына жол берет, ал эми Restart=on-failure нөлгө барабар эмес абалдан кийин да кайра баштайт. Эгер ийгиликсиздиктин көрүнүшүн, бирок кызматтын байланышсыз кыйроолордон калыбына келишин кааласаңыз, Restart=on-failure коюңуз жана кайра баштоо бороонун токтотуу үчүн StartLimitBurst менен StartLimitIntervalSec колдонуңуз. Анан акыркы чыгуу кодун ырастоо үчүн бирдиктин абалын окуңуз: systemctl status аны билдирет, журнал болсо биринчи катаны кайра баштоолордун үстүндө сактайт.

Чечимди бирдикке же профиль жазууларына жазыңыз. TLS ийгиликсиздигинде чыккан профиль себеби жазылбаса, кийинки адамга кырсык сыяктуу көрүнөт. Кайсы ийгиликсиздиктер процессти токтотушу керек жана кайсылары кайталанышы керек экенин көрсөтүңүз.

Аны бир жолку акыркы чекит менен далилдөө

Жүрүм-турумду ага ишенүүдөн мурун көрүү үчүн профилди көчүрүп, көчүрмөнү TCP туташуусун кабыл алган, бирок эч качан OpenVPN сүйлөбөгөн акыркы чекитке багыттаңыз. Жооп берип, анан унчукпай калган угуучу жетиштүү. tls-exit менен кол алышуу ийгиликсиз болгондо клиент бүтүшү керек; ансыз ошол эле профиль айланууну улантышы керек. Көчүрмөнү колдонуңуз, жумушчу профилди эч качан эмес.

Эки иштетүүнү чыгуу абалы жана биринчи ката сабы боюнча салыштырыңыз, ар бири канча убакытка созулганы боюнча эмес. Абал параметрдин иштегенин, ал эми биринчи сап кайсы баскыч ийгиликсиз болгонун айтат.

Бүткөндөн кийин сыноо профилин алып салыңыз. Атайын туура эмес акыркы чекити бар көчүрмө — кийинчерээк каталогдогу бардык профилди иштеткендер үчүн тузак.

Бул параметр эч качан жетпеген баскычтар

Аутентификациядан баш тартуу — кийинки баскыч. Эгер сервер эсепти баалап, андан баш тартса, TLS мурун эле сүйлөшүлгөн, ошондуктан tls-exit иштебейт. Аутентификацияны кайталоо жөндөөлөрү — кийинки кароочу жер, ал эми сервердин себеби клиенттин акыркы сабынан маанилүүрөөк. Туура эмес сырсөз жана жок сертификат клиент тарапта окшош билдирүүлөрдү жаратышы мүмкүн.

Жок маршрут, туура эмес чечүүчү же жеткиликсиз шлюз да параметрден тышкары, анткени алар сүйлөшүү ийгиликсиздиктери эмес. Пакеттердин үнсүз жоголушу — эң ачык эмес учур: алмашуу канчалык илгерилегенине жараша клиент сүйлөшүү ийгиликсиздигин билдириши же жөн эле тайм-аутка түшүшү мүмкүн.

Айырмачылыкты жазууларыңызда сактаңыз. Жөндөө оңдоо үчүн эмес, диагностика жана көзөмөл үчүн, ошондуктан ал шифр дал келбестигин, сертификат маселесин же туура эмес портту оңдобойт. Адегенде ийгиликсиз сүйлөшүүнүн себебин оңдоңуз, анан дароо чыгуу жайгаштырууга дагы эле ылайыктуубу, чечиңиз.

Тектеш макалалар