Menda uzoq saytdan tunnel qabul qiladigan va shu bilan birga yetkazib beruvchi tarmog'iga qo'ng'iroq qiladigan laboratoriya mashinasi bor edi. Chiquvchi profil haftalar davomida ishlagan edi. Kiruvchi server qo'shilgandan so'ng, chiquvchi ulanib, keyin bir necha soniya ichida trafikni o'tkazishni to'xtatdi yoki manzil allaqachon ishlatilmoqda xatosi bilan ishga tushishdan bosh tortdi. Konfiguratsiya fayllari o'zgarmagan edi; xost shunchaki portlar va marshrutlar haqida o'z fikriga ega ikkinchi OpenVPN jarayonini oldi.

Nosozlik tasodifiy emas va bu autentifikatsiya muammosi emas. Bitta mashinadagi ikkita demon bir xil mahalliy soket va bir xil marshrutlash jadvali uchun raqobatlashadi va oxirgi bo'lib ishga tushgan yoki qayta ulangan odatda g'alaba qozonadi. Ushbu ikki to'qnashuvdan qaysi biri sizda ekanini bilish birinchi navbatda qayerga qarashni belgilaydi.

Alomatni teskari o'qing

Tunnel qachon o'lishidan boshlang. Ishga tushishdagi bind xatosi tinglayotgan tomonga ishora qiladi: nimadir allaqachon o'sha portga egalik qiladi va OpenVPN uni bo'lishish o'rniga ishga tushishdan bosh tortadi. Ko'tarilib, keyin jim bo'lib qolgan tunnel marshrutlashga ishora qiladi, chunki boshqa nusxa o'rnatgan marshrut tashqi ulanish paketlarini o'z yo'lidan tortib olishi mumkin.

Ikkala holat ham bir xil foydalanuvchi shikoyatini keltirib chiqaradi, shuning uchun qayta urinish tsikllari va qo'riqchi skriptlar hech narsani tuzatmaydi. Ular mijozi yana o'sha ziddiyatga ulaydi. Birinchi foydali savol — trafik to'xtaganda jarayon hali ishlayaptimi.

Har bir nusxa uchun bitta soket va bitta qurilma

Tinglayotgan server o'z portini bog'laydi; chiquvchi mijoz ham o'zining inkapsulyatsiyalangan trafigi uchun mahalliy portga muhtoj. Ikkalasi bir xil xostda yashaganda, mijozning standart xatti-harakati server porti bilan to'qnashishi mumkin. Mijozning mahalliy portini mahkamlash mumkin va sherik qat'iy manba portiga muhtoj bo'lmagan joyda bog'lashni o'tkazib yuborish mumkin:

lport 1195
nobind
dev tun1

Bu raqamlar misollar, talab emas. Muhimi, mijoz server porti uchun raqobatlashni to'xtatishi va har bir nusxa alohida tunnel qurilmasini olishi. tun0 ni birgalikda ishlatadigan ikkita demon, portlari har xil bo'lsa ham, bir-birining qurilma holatini qayta yozadi, shuning uchun har bir tunnel uchun bitta qurilma majburiydir.

nobind mijoz tomoniga tegishli. Server hali ham bog'lashi va tinglashi kerak, shuning uchun satrni server konfiguratsiyasiga ko'chirmang va sherigi qat'iy manba porti bo'yicha filtrlaydigan mijozda bog'lashni o'chirmang.

Standart marshrut uchun bitta egasini tanlang

Faqat bitta ulanish standart marshrutni o'rnatishi mumkin. Agar ikkala profil ham barcha trafikni qayta yo'naltirsa, ikkinchi ulanish birinchisini jimgina almashtiradi va birinchisi buzilgandek ko'rinadi. Yoki chiquvchi tunnelni bo'lingan holda saqlang va faqat yetkazib beruvchi prefikslarini yuboring, yoki unga alohida marshrutlash jadvalini bering.

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

Yuqoridagi manzillar va jadval raqami to'ldiruvchilardir. Qoida qo'shilgandan so'ng darhol VPN serverining o'z manzili hali ham oddiy jadval orqali hal qilinishini tasdiqlang; tashqi transportni ushlab oladigan jadval himoya qilishi kerak bo'lgan tunnelni buzadi va undan keyingi qayta ulanish tsikli ishonchsiz provayderga o'xshaydi.

Qayta ulanishlar va qayta yuklashlarga bardosh berishi kerak bo'lgan sozlama uchun tarmoq nomlar fazosi mustahkamroq chegara hisoblanadi. Ikkinchi mijoz o'z nomlar fazosida o'z interfeyslari va marshrutlari bilan ishlaydi va faqat chegarani kesib o'tishi kerak bo'lgan xizmatlar ochiladi. Xost bitta standart marshrutni saqlaydi va nomlar fazosining qayta ulanishi uni qayta yozolmaydi.

Holat satri bilan emas, jadval bilan tekshiring

Ulanganligini xabar qilgan mijoz faqat o'z boshqaruv kanalini isbotlaydi. Har bir ulanishdan oldin va keyin marshrutlash holatini yozib oling, so'ng yadrodan haqiqiy manzil qaysi qurilmadan foydalanishini so'rang:

ip route show
ip route get 10.40.0.20
ss -lunp | grep 1194

Agar ikkinchi tunnel ishga tushganda yetkazib beruvchi manzili uchun tanlangan qurilma o'zgarsa, sizda marshrutlar to'qnashuvi bor. Agar ikkala jarayon ham bir xil mahalliy portda ko'rinsa, sizda soketlar to'qnashuvi bor. Ikkinchisiz birinchisini tuzatish nosozlikni keyingi qayta ulanishga ko'chiradi xolos.

Portlar, qurilmalar, jadvallar va marshrut egasini xostning runbookiga yozing. Aks holda uchinchi tunnelni qo'shadigan keyingi odam o'sha to'qnashuvni qayta kashf qiladi va yagona ko'rinadigan dalil boshqa birovning demoni qayta yuklanmaguncha ishlaydigan ulanish bo'ladi.

O'xshash maqolalar