Тоннелийн нэг тал нөгөө тал хэзээ ч шалгадаггүй түлхүүрийн слоттой хяналтын сувгийг гарын үсэг зурж, нэг ч гэрчилгээ солилцохоос өмнө холболт баталгаажуулалтын алдаагаар үхдэг. tls-auth-ийн чиглэлийн зөрүү ийм харагддаг бөгөөд энэ нь детерминист юм: ижил хоёр файл оролдлого бүрт, ямар ч сүлжээнээс бүтэлгүйтдэг. Бүртгэлд таны хайж буй тохиргооны нэр байхгүй тул хүмүүс хэзээ ч эвдрээгүй түлхүүрүүдийг дахин бүтээж, гэрчилгээг дахин олгодог. Шийдэл нь хоёр талыг нөхөх болгох эсвэл хоёуланг нь хоёр чиглэлтэй үлдээх бөгөөд шалгалтыг сулруулах биш.

Алдаа нь гэрчилгээнүүдээс өмнө тохиолддог

tls-auth-д хоёр тал ижил хуваалцсан түлхүүрийг барьж, тус бүр түүнээс үүссэн хоёр слотын нэгийг ашигладаг: нэг слот гадагшлах хяналтын пакетуудад гарын үсэг зурдаг, нөгөө нь орж ирэх пакетуудыг шалгадаг. 0 чиглэл ба 1 чиглэл эдгээр үүргийг эсрэг дарааллаар оноодог тул HMAC шалгалтууд таарахын тулд хос нь нөхөх байх ёстой. Нэг талд оноолт эргэвэл хүлээн авагч буруу слотод гарын үсэг хайж, пакетыг татгалздаг. Сессия тэнд дуусдаг тул алдаа нь пакетын баталгаажуулалтад хамаарах бөгөөд гэрчилгээний сан үүсгэх зүйлд биш.

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

What you seeWhat it rules outNext check
Authentication error before any certificate is sentThe data channel is irrelevant; the control channel never authenticatedCompare tls-auth and its direction on both ends
Certificate or handshake failure after the control channel authenticatesThe shared key and its direction already agreeCheck the CA, the certificate dates and the hostname
Session completes but throughput or cipher warnings appearDirection was never the problemCompare the data-channel cipher settings
Startup stops on an options errorThe number itself is not the issueRe-read the inline versus external directive syntax

Тоо хаана амьдардаг

Гарын авлага OpenVPN 2.6 чиглэлийн хоёр газрыг баримтжуулдаг: түлхүүр тусдаа файлд байх үед tls-auth-ийн хоёр дахь аргумент, түлхүүр профайлд оруулсан үед тусдаа key-direction мөр. Хоёулаа ижил утгыг тогтоодог тул профайл нэг хэлбэрийг эсвэл нөгөөг нь ашиглах ёстой, хэзээ ч хоёуланг нь биш. Орхих нь бас сонголт бөгөөд аль ч тал чиглэл заагаагүй үед ажилладаг хоёр чиглэлт зохион байгуулалтад хоёр талыг байрлуулдаг. Ижил тоотой хоёр тал тэр зохион байгуулалтад байхгүй: тус бүр нэг слотод гарын үсэг зурж, нөгөөд нь шалгана гэж хүлээдэг бөгөөд хоёулаа үүнийг адилхан хийдэг.

# server.conf, external key
tls-auth ta.key 0

# client.ovpn, external key
tls-auth ta.key 1

# client.ovpn, inline key
key-direction 1

Оруулсан хэлбэр нь өөрийн мөрөнд байх заавар бөгөөд түлхүүрийн блокийн нээх таг дээрх шинж чанар биш, тэр таг дээр аргумент нэмэх нь алдаа, чиглэлийн өөрчлөлт биш. Байршил ч чухал: заавар нь өөрт хамаарах блокийн гадна байдаг тул блокийн дотор бичсэн утгыг түлхүүрийн материал гэж уншдаг. Профайлын түгээгчийн зорьсон зохион байгуулалтыг хуулбарлаарай, хосыг зохиохын оронд, учир нь нэг серверийн эсрэг ажилладаг профайл нөгөө талд аль хэдийн тусгагдсан байж магадгүй.

Тохиргоо юуг хөндөхгүй

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

Энэ нь tls-crypt-д хамаарахгүй, өөрийн тохиргоо, түлхүүрийн боловсруулалттай өөр хяналтын сувгийн механизм, аль ч талын гэрчилгээний таних тэмдгийн талаар юу ч хэлдэггүй. Тиймээс ажиллаж буй чиглэлийн тохирол нь хоёр тал хяналтын сувгийг хэрхэн баталгаажуулахыг зөвшилцсөнийг л нотолж, итгэлийн хэлхээ баталгаажсаныг биш.

Хосыг тэгшлээд дахин холбогдоорой

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

grep -n -E 'tls-auth|tls-crypt|key-direction' server.conf client.ovpn
openvpn --config client.ovpn --verb 4 2>&1 | grep -i -E 'hmac|tls error|control channel'

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

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

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