Жаран минут, эсвэл гуч, эсвэл зуун хорь: дугуй интервалд унах тасалдал бараг хэзээ ч сүлжээ биш. OpenVPN таймерын дагуу өгөгдлийн сувгийг хамгаалах түлхүүрийн материалыг шинэчилдэг бөгөөд таны таамагласнаас богино таймер байнга бүтэлгүйтдэг холбоостой яг адил харагдана. Хэрэглэгчид тасарсан холболтын талаар мэдээлдэг бол лог нь амжилттай түлхүүр солилцсон тухай мэдээлдэг. Доорх заавар тэр шинэчлэлтийг жинхэнэ дахин эхлүүлэлтээс ялгаж, үнэхээр үйлчилж буй утгыг уншиж, зардал ширээн дээр тавигдсаны дараа л өөрчилдөг.

Алхмуудыг дарааллаар гүйцэтгээрэй, учир нь эхнийх нь хуудасны үлдсэн хэсэг танд огт хамаарах эсэхийг шийддэг. Урагш алгасвал түүнтэй ямар ч холбоогүй гэмтлийн төлөө таймерыг тохируулж нэг оройг өнгөрөөнө.

Зөөлөн дахин тохируулалтыг дахин эхлүүлэлтээс ялгаарай

Лог мөр бол бүх оношилгоо. Дахин хэлэлцээр зөөлөн дахин тохируулалт бичээд дараа нь мөн тэр хонгилын дотор шинэ түлхүүр солилцоо хийнэ: интерфэйс өөрийн хаягаа хадгална, маршрутууд дахин нэмэгдэхгүй, тогтоосон TCP сессүүд ихэвчлэн завсарлагатайгаар амьд үлддэг. Жинхэнэ дахин эхлүүлэлт сессийг тасдаж, интерфэйсийг дахин бүтээж, өөр клиентийн хаяг олгож болох бөгөөд бүх урт хугацааны холболтыг устгана. Хоёр үйл явдал хоёулаа энгийн; зөвхөн нэг нь тасарсан дуудлагыг тайлбарладаг.

journalctl -u openvpn-client@office -b --no-pager | grep -nE 'soft reset|Connection reset|reneg|TLS Error'
openvpn --version | head -n 1

Хувилбарын мөр нь чухал, учир нь лог хэллэг хувилбаруудын хооронд өөрчлөгддөг бөгөөд 2.3-аас санаж байгаа мессеж 2.6-д өөрөөр бичигдсэн байж болно. Бусдын форумын ишлэл биш өөрийнхөө логийг уншаарай. Тусламж гуйхдаа яг тэр мөрийг иш татаарай, учир нь дахин өгүүлэл үйл явдлыг таних нарийн ширийг алддаг. Хэрэв үйл явдын турш интерфэйсийн хаяг өөрчлөгдөөгүй бөгөөд сессийн жагсаалт амьд үлдсэн бол та шинэчлэлтийг харж байна, үлдсэн хэсгүүд хамаарна.

Үйлчилж буй таймерыг уншаарай, өөрийн файлыг биш

reneg-sec нь өгөгдлийн сувгийн дахин хэлэлцээрүүдийн хоорондох секундын тоо бөгөөд түүний анхдагч утга 3600. Тал бүр өөрийн утгыг авч явдаг бөгөөд хоёрын бага нь шинэчлэлтийг үнэхээр өдөөдөг. Энэ ганц дүрэм ихэнх мэдээллийг тайлбарладаг: том тоо тавьсан клиентийн профайл ч сервер анхдагч утгыг хадгалж байвал цаг тутам дахин тохируулагддаг.

grep -Rn --include='*.conf' -E 'reneg-sec|reneg-bytes' /etc/openvpn
# server side, including included files
grep -Rn -E '^reneg-sec' /etc/openvpn/server/

Клиентийн файлаас дүгнэлт хийхийн өмнө серверийн үйлчилж буй тохиргоог, түүний түлхэж буй бүх зүйлийг оруулан уншаарай. Дараа нь нарийвчлалыг өсгөж нэг интервалыг эхнээс дуустал ажиглаарай: 3-р түвшин дахин хэлэлцээрийн мөрүүдийг аль хэдийн харуулдаг бөгөөд цагийн тэмдэглэгээ нь үйл явдал 3600 секунд тутам давтагдаж байгаа эсэх, эсвэл идэвхжлийг дагаж байгаа эсэхийг хэлнэ.

Үнэхээр түлхэгддэг газарт нь өөрчлөөрэй

Тархаж буй эм бол клиентийн профайл дахь нэг мөр бөгөөд ойролцоогоор хагас тохиолдолд буруу газар. Хажуугийн бага утга ялдаг тул таймерыг тэг болгосон клиент ч өөрчлөгдөөгүй серверээр дахин хэлэлцээр хийлгэж болно.

# on both ends, or on the side that owns the pushed configuration
reneg-sec 0

Профайлуудыг төвлөрсөн байдлаар үүсгэдэг бол, байршуулсан хуулбарыг биш загварыг засна уу, эс бөгөөс дараагийн хангамжийн ажиллагаа дөнгөж устгасан утгыг сэргээнэ. Нэг биш хоёр интервалыг ажиглаж шалгаарай: нэг тайван цаг 7200-д тавьсан таймертай ч нийцдэг.

Холимог байршуулалтад юу болохыг ч шийдээрэй. Өөрчлөлтийг эхлээд клиентүүдэд тараавал сервер шинэчлэлтийг одоо ч өдөөж байх цонх үлддэг; энэ нь хор хөнөөлгүй ч баталгаажуулахын тулд логийг ажиглаж байгаа бол төөрөгдүүлнэ. Бага утгатай талыг эхлээд өөрчилбөл шинж тэмдэг таны хүлээж буй цэгт алга болно.

Дахин хэлэлцээрийг унтрааснаар юу алдаж байна

Тогтмол дахин хэлэлцээр нь өгөгдлийн сувгийн түлхүүрийн нэг багц трафикийг хэр удаан хамгаалахыг хязгаарладаг. Таймерыг унтраах нь хонгилыг эвддэггүй бөгөөд гэрийн маршрутлагч эсвэл жижиг оффисын гарц дээр практик өртөлт даруухан. Энэ нь бүгд адил солилцоо бөгөөд үүнийг хийхээс өмнө солилцоог нэрлэх нь зүйтэй. Өөрчлөгдөх нь нэг түлхүүрийн багц сессийг хэр удаан хамгаалах вэ, хонгил огт ажиллаж байгаа эсэх биш.

Унтраах үндэслэлтэй тохиолдол бол үргэлжлүүлэх боломжгүй зүйлийг эвддэг дахин тохируулалт: тасрах дуудлага, дахин тогтоох шаардлагатай алсын ширээний сесс, эхнээс эхэлдэг нөөц хуулбар. Хэрэв завсарлага хэрэглэгчдэд үл үзэгдэх бол анхдагч утгыг үлдээх нь юу ч зарцуулдаггүй бөгөөд танд өгсөн түлхүүрийн эргэлтийг хадгална.

Загвар зөвшөөрвөл шалтгааныг засахыг илүүд үзээрэй. Эхний гар барилт амжилттай болсон ч хагаст нь бүтэлгүйтдэг шинэчлэлт нь таймерыг биш замыг заадаг: илүү том хяналтын сувгийн солилцоонд пакетын хэмжээний асуудал, урсгалыг унагадаг төлөвт галт хана, эсвэл зөвхөн эхний оролдлогод амжилттай болдог саналыг хайгаарай. Тэдгээр нь тус бүр дөнгөж уншсан тэр л логид ул мөр үлдээдэг. Таймерыг унтраах нь тэр нотолгоог нуудаг.

Интервал өөр тийш заах үед

Тохиргоон дахь хоёр хөрш ижил төстэй шинж тэмдэг, өөр засварыг үүсгэдэг. Тодорхой хугацаанд юу ч ирэхгүй бол ping-restart хонгилыг дахин эхлүүлдэг бол ping-exit клиентийг бүрмөсөн унагадаг. Логд хаана ч дахин хэлэлцээргүй сул зогсолтын тасалдал эдгээрт, эсвэл UDP-ийн буулгалтыг өөрийн хуваариар дуусгасан NAT төхөөрөмжид хамаарна.

Хэрэглэгчийн маршрутлагч, гар утасны хотспот, операторын түвшний NAT бүгд сул зогссон UDP сессийн хугацааг хэнд ч хэлэлгүй дуусгадаг. Тэр гэмтэл нь цагийг биш сул зогсолтыг дагадаг бөгөөд энэ нь тэмдэг юм: арван тайван минутын дараа тасарч, нэг цаг тогтвортой трафикийг давсан сесс дахин хэлэлцээр хийдэггүй.

Дөрөв дэхийг өөрчлөхийн өмнө гурван зүйлийг бичээрэй: хэмжсэн интервал, олсон үйлчилж буй утга, түүнийг харуулсан команд. Хэрэв таймер хөдлөхөд интервал ч хөдөлдөг бол механизм тодорхойлогдсон бөгөөд засвар нь дээрх солилцооны тухай шийдвэр юм. Хэрэв хөдлөхгүй бол тохиргоог буцааж тавиад keepalive, NAT-ийн төлөв, пакетын алдагдлыг үргэлжлүүлэн ажиглаарай.

Холбоотой нийтлэлүүд