OpenVPN клиент нь сервер нь ижил хост дээр ажиллах үед зогсдог
Нэг хост дээрх хоёр OpenVPN инстанц ижил локал порт болон маршрутын хүснэгтийн төлөө тэмцдэг. Портыг тогтоож, төхөөрөмжүүдийг салгаж, аль хүснэгт ялахыг шалгана уу.
Надад алсын сайтаас туннель хүлээн авч, мөн нийлүүлэгчийн сүлжээ рүү залгадаг лабораторийн машин байсан. Гарах профайл долоо хоногуудын турш ажиллаж байсан. Ирж буй серверийг нэмсний дараа гарах нь холбогдоод дараа нь хэдхэн секундын дотор трафик дамжуулахаа болих, эсвэл хаяг аль хэдийн ашиглагдаж байна гэсэн алдаатай эхлэхээс татгалзсан. Тохиргооны файлууд өөрчлөгдөөгүй; хост порт, маршрутын талаар өөрийн гэсэн бодолтой хоёр дахь OpenVPN процесс авсан л юм.
Алдаа нь санамсаргүй бөгөөд энэ нь баталгаажуулалтын асуудал биш юм. Нэг машин дээрх хоёр демон ижил локал сокет болон ижил маршрутжуулалтын хүснэгтийн төлөө өрсөлдөж, хамгийн сүүлд эхлэх эсвэл дахин холбогдох нь ихэвчлэн ялдаг. Эдгээр хоёр мөргөлдөөний аль нь танд байгааг мэдэх нь эхлээд хаана харахыг тодорхойлдог.
Шинж тэмдгийг эсрэгээр уншина уу
Туннель хэзээ үхдэгээс эхэл. Эхлэх үеийн bind алдаа нь сонсож буй тал руу заана: ямар нэг зүйл тэр портыг аль хэдийн эзэмшиж байгаа бөгөөд OpenVPN түүнийг хуваалцахын оронд эхлэхээс татгалздаг. Босож, дараа нь чимээгүй болсон туннель нь маршрутжуулалт руу заана, учир нь нөгөө инстанцын суулгасан маршрут гадаад холболтын пакетуудыг замаас нь татаж болно.
Хоёр тохиолдол ижил хэрэглэгчийн гомдол үүсгэдэг тул дахин оролдлогын цикл болон хяналтын скриптүүд юу ч засдаггүй. Тэд клиентийг ижил зөрчилд дахин холбодог. Эхний ашигтай асуулт бол трафик зогсох үед процесс ажиллаж байгаа эсэх юм.
Инстанц бүрт нэг сокет, нэг төхөөрөмж
Сонсож буй сервер өөрийн портыг холбодог; гарах клиент мөн өөрийн капсуллагдсан трафикт локал порт хэрэгтэй. Хоёулаа нэг хост дээр амьдрах үед клиентийн анхдагч зан төлөв серверийн порттой мөргөлдөж болно. Клиентийн локал портыг тогтоож болно, мөн хамтрагч тогтмол эх порт шаардахгүй газарт холболтыг алгасаж болно:
lport 1195
nobind
dev tun1Эдгээр тоо нь жишээ бөгөөд шаардлага биш. Чухал нь клиент серверийн портын төлөө өрсөлдөхөө болих, инстанц бүр тусдаа туннелийн төхөөрөмж авах явдал юм. tun0-г хуваалцдаг хоёр демон портууд нь өөр байсан ч бие биенийхээ төхөөрөмжийн төлөвийг дарж бичдэг тул туннель бүрт нэг төхөөрөмж заавал байх ёстой.
nobind нь клиентийн талд хамаарна. Сервер одоо ч холбож, сонсох ёстой тул мөрийг серверийн тохиргоонд хуулахгүй, мөн хамтрагч нь тогтмол эх портоор шүүдэг клиент дээр холболтыг идэвхгүй болгохгүй.
Анхдагч маршрутад нэг эзэн сонгоно уу
Зөвхөн нэг холболт анхдагч маршрутыг суулгаж чадна. Хэрэв хоёр профайл бүх трафикийг чиглүүлбэл, хоёр дахь холболт эхнийхийг чимээгүйхэн орлуулж, эхнийх нь эвдэрсэн мэт харагдана. Эсвэл гарах туннелийг хуваасан хэвээр үлдээж зөвхөн нийлүүлэгчийн префиксүүдийг илгээ, эсвэл түүнд тусдаа маршрутжуулалтын хүснэгт өг.
ip rule add from 10.9.0.2 table 120
ip route add default dev tun1 table 120
ip route get 10.9.0.2Дээрх хаягууд болон хүснэгтийн дугаар нь орлуулагч юм. Дүрмийг нэмсний дараа шууд VPN серверийн өөрийн хаяг ердийн хүснэгтээр шийдэгдсээр байгаа эсэхийг баталгаажуул; гадаад тээврийг барьж авдаг хүснэгт нь түүнийг хамгаалах ёстой байсан туннелийг эвдэж, дараагийн дахин холболтын цикл нь найдваргүй нийлүүлэгч мэт харагддаг.
Дахин холболт болон дахин ачааллыг даван туулах ёстой тохиргоонд сүлжээний нэрийн орон зай нь илүү бат бөх хил юм. Хоёр дахь клиент өөрийн интерфейс, маршруттай өөрийн нэрийн орон зайд ажиллаж, хилийг давах ёстой үйлчилгээнүүд л ил болдог. Хост нэг анхдагч маршрутыг хадгалж, нэрийн орон зайн дахин холболт түүнийг дахин бичиж чадахгүй.
Статусын мөрөөр биш, хүснэгтээр шалгана уу
Холбогдсон гэж мэдээлж буй клиент зөвхөн өөрийн удирдлагын сувгийг л нотолдог. Холболт бүрийн өмнө болон дараа маршрутжуулалтын төлөвийг бүртгэж, дараа нь бодит очих газар ямар төхөөрөмж ашиглахыг цөмөөс асуу:
ip route show
ip route get 10.40.0.20
ss -lunp | grep 1194Хоёр дахь туннель эхлэх үед нийлүүлэгчийн хаягт сонгогдсон төхөөрөмж өөрчлөгдвөл танд маршрутын мөргөлдөөн байна. Хоёр процесс ижил локал порт дээр гарч ирвэл танд сокетын мөргөлдөөн байна. Хоёр дахьгүйгээр эхнийхийг засах нь алдааг дараагийн дахин холболт руу шилжүүлэх л юм.
Портууд, төхөөрөмжүүд, хүснэгтүүд болон маршрутын эзнийг хотын runbook-д бич. Эс бөгөөс гурав дахь туннель нэмэх дараагийн хүн мөн ижил мөргөлдөөнийг дахин илрүүлж, цорын ганц харагдах нотолгоо нь өөр хэн нэгний демон дахин ачаалагдах хүртэл ажилладаг холболт байх болно.