OpenVPN TLS алдааны дараа дахин оролдсоор байна: хэрхэн зогсоох вэ
TLS алдаа анхдагчаар дахин оролдогддог тул клиент эргэлдэж, эхний алдаа харагдахаа болино. tls-exit түүнийг гарахад хүргэдэг; юу түүнийг дахин эхлүүлж байгааг шалгаарай.
Клиент холбогдож, 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 ажиллахгүй. Баталгаажуулалтын дахин оролдлогын тохиргоо нь дараагийн харах газар бөгөөд серверийн шалтгаан клиентийн сүүлийн мөрөөс илүү чухал. Буруу нууц үг, байхгүй гэрчилгээ нь клиентийн талд ижил төстэй мессеж үүсгэж болно.
Байхгүй маршрут, буруу шийдвэрлэгч эсвэл хүрэх боломжгүй гарц мөн сонголтоос гадуур, учир нь тэдгээр нь хэлэлцээрийн бүтэлгүйтэл биш. Чимээгүй багц алдагдал нь хамгийн тод бус тохиолдол: солилцоо хэр урагшилснаас хамаарч клиент хэлэлцээрийн бүтэлгүйтэл мэдээлэх эсвэл зүгээр л хугацаа хэтрэх боломжтой.
Ялгааг тэмдэглэлдээ хадгаарай. Тохиргоо нь засварын бус, оношилгоо, хяналтын зориулалттай тул шифрийн зөрүү, гэрчилгээний асуудал эсвэл буруу портыг засдаггүй. Эхлээд бүтэлгүйтсэн хэлэлцээрийн шалтгааныг зас, дараа нь нэн даруй гарах нь байршуулалтад тохирсоор байгаа эсэхийг шийд.