Bitta Pi-da ikkita VPN sakrash: qaysi marshrut qaysi hamrohni tashiydi
Bitta Pi-da ikkita tunnel manzili nosozlik emas. Har bir manzil o'z tashuvchisiga, o'z isbotiga va tashqi sakrash o'lganda e'lon qilingan zaxira rejaga muhtoj.
Kichik platada ikkita tunnel manzili xato kabi ko'rinadi va refleks bittasini o'chirishdir. Bu refleks tartibga solishi kerak bo'lgan narsani buzadi. Ikki sakrashni tashuvchi xost har bir ulanish uchun bitta manzil saqlaydi va har bir manzil boshqa marshrut tomonidan tanlanadi. So'rashga arziydigan savol qaysi marshrut qaysi manzil uchun qaysi tashuvchini tanlaydi, qancha manzil borligi emas.
Turli tashuvchilarni talab qiladigan uchta manzil
Ikki sakrashli zanjir bir-birining ustiga qo'yilgan uchta manzil sinfidir va har birini boshqa ulanish tashiydi. Tashqi hamrohga fizik aloqa orqali yetib borish kerak. Ichki hamrohga tashqi tunnel orqali yetib borish kerak. Qoplangan ilovaning manziliga ichki tunnel orqali yetib borish kerak, uning o'z transportini tashqi tunnel tashiydi.
| Destination class | View that names the carrier | Command that proves it | Symptom when the wrong carrier wins |
|---|---|---|---|
| Outer peer, 198.51.100.10 | the main table, by destination | ip route get 198.51.100.10 | the outer handshake never completes |
| Inner peer, 203.0.113.7 | the main table once the outer tunnel is up | ip route get 203.0.113.7 | the inner handshake leaves over the physical link |
| Application destination, 172.30.9.1 | the table the inner client's traffic is selected into | ip route get 172.30.9.1 from 10.8.0.2 | the exit address looks right and the traffic never crossed the outer hop |
| Parallel tunnels, one per source group | one policy per group, not the main table | ip rule show beside a marked test connection | both tunnels are up and one steals the other's traffic |
Marshrutga tegishdan oldin qatorlarni o'quvchining haqiqiy manzillari bilan to'ldiring, chunki jadval faqat aniq bo'lganda foydali. Ishlaydigan zanjir to'rt qatorni bir vaqtda qanoatlantiradi va yarim ishlaydigan zanjir odatda ulardan birini noto'g'ri tashuvchi bilan qanoatlantiradi. Noto'g'ri qatorni nosozlik deb o'qish marshrutlash muammosini butun tushdan keyingi tuzatishlarga aylantiradi.
Manzillarning soni emas, roli bor
Linux bitta interfeysda bir nechta manzilga va bitta xostda bir nechta tunnelga ruxsat beradi, shuning uchun son to'g'rilik haqida hech narsa aytmaydi. Muhimi qaysi manzil qaysi ulanishga tegishli ekani va berilgan hamroh uchun marshrut siz nazarda tutgan ulanishni tanlaydimi. Uchta ko'rinish bunga uch tomondan javob beradi va ularni har safar bir xil tartibda o'qishga arziydi.
Manzillar ro'yxati nima borligini va qaysi ulanish unga egalik qilishini ko'rsatadi. Marshrutlar jadvali oddiy manzil trafigi uchun tashuvchi savoliga javob beradi. Siyosat ko'rinishi manba yoki belgi bo'yicha tanlangan trafik uchun yana javob beradi, ikki mijoz bitta xostni bo'lishganda bu odatiy tartib.
ip -4 addr show
ip -4 route show table all
ip rule show
Ro'yxat uzun ko'ringani uchun manzilni o'chirish yo'lning bir qismini olib tashlashi mumkin, ortiqcha ko'ringani uchun marshrutni o'chirish xuddi shu ishni tinchroq qiladi. Ikkalasi ham xato bermaydi; hamroh faqat siz nazarda tutgan yo'lda javob berishni to'xtatadi, boshqa yo'l orqali yetib borish mumkinligicha qoladi. Ichki hamrohning chiqish manzilini xabar qiluvchi ilova trafik tashqi tunneldan o'tganini isbotlamaydi, chunki to'g'ridan-to'g'ri kirish ham xuddi shu kuzatuvni beradi. Kuzatuv va isbot o'rtasidagi shu bo'shliq tashuvchining marshrutlash qatlamida tekshirilishiga sabab.
Faollashtirish tartibi qat'iy kutishdan ustun
Agar ichki mijoz tashqi mijoz taqdim etadigan manzil yoki marshrutga bog'liq bo'lsa, faollashtirish kechikishni emas, o'sha resursni kutishi kerak. Kutish tashqi tunnel sekin bo'lgan kungacha ishlaydi, keyin hech kim qayta hosil qila olmaydigan tarzda vaqti-vaqti bilan muvaffaqiyatsiz bo'ladi. Bog'liqlikka asoslangan tartib taxminni olib tashlaydi va bog'liqlikni bir marta tasvirlashdan boshqa hech narsa talab qilmaydi. Interfeys nomlari ham tartib mexanizmi emas.
Yadro tun0 va tun1 kabi nomlarni yaratilish tartibida beradi va bu tartib qayta ishga tushirish yoki qayta ulanish o'rtasida o'zgarishi mumkin. Konfiguratsiyani asbob taqdim etadigan identifikatsiyaga yoki siz ataylab bergan nomga bog'lang. Siz tanlagan nom — shartnoma; yadro tanlagan nom — tasodif.
Har bir mijozning transportini boshqasining ilova marshrutidan tashqarida saqlang va OpenVPN 2.6 marshrutlash parametrlari aslida nimani va'da qilishini aniq biling. Hujjatlashtirilgan standart qayta yo'naltirish mexanizmi mijozga o'z uzoq hamrohiga allaqachon mavjud bo'lgan shlyuz orqali yetib borish imkonini saqlaydi va bu bitta aniq rekursiya halqasini uzadi. U bitta mijozni boshqasining tashuvchisiga aylantirmaydi, shuning uchun zanjirning qolgan qismi sizning dizayningiz bo'lib qoladi. Zanjir marshrut o'rniga siyosat talab qiladigan joyda aniq manba yoki belgi qoidasini yozing va uni mos kelishi kerak bo'lgan trafik bilan sinab ko'ring.
Tashqi sakrash o'lganda nima bo'ladi
Zanjir to'liq deb hisoblanishidan oldin tashqi sakrash yo'qolganda nima bo'lishini hal qiling. Ichki mijozning transporti u bilan birga o'ladi va keyingi qadam texnik emas, siyosat savoli: muvaffaqiyatsizlik, qayta urinish yoki fizik aloqa orqali to'g'ridan-to'g'ri qayta ulanish. Uchinchi natija o'ylashga arziydigan natijadir. U foydalanuvchi qamrov hali buzilmagan deb ishongan paytda ikki sakrashli dizaynni bir sakrashli dizaynga jimgina aylantiradi.
Agar ikki sakrash majburiy bo'lsa, tashqi yo'q bo'lganda ichki mijoz to'g'ridan-to'g'ri yo'l o'rnata olmasligi kerak va buni bilish yo'li tashqi sakrashni uzib, ichkinining nima qilishini kuzatishdir. Tasdiqlangan zaxira reja qonuniy javob, lekin u yozilishi, sinovdan o'tishi va e'lon qilinishi kerak. Hech kim hujjatlashtirmagan zaxira reja hodisani ko'rib chiqishda sizib chiqishdan farqlanmaydi.
DNS va boshqa manzil oilasi ham shu qarorga tegishli. Mahalliy yaratilgan so'rov xostning o'z siyosatiga amal qiladi, uzatilgan mijoznikiga emas, shuning uchun uzatilgan trafik uchun ishlaydigan hal qiluvchi xost o'zi ishlatadigani bo'lmasligi mumkin.
Har bir qatlamni qurgan tartibingizda qabul qiling
Zanjir qurilgan tartibda sinab ko'ring: avval yolg'iz tashqi tunnel, keyin tashqi tunnel orqali ichki mijozning transporti, keyin ichki tunnel orqali ilova. Har bir qabul allaqachon ochilgan sahifa emas, yangi ulanish bo'lishi kerak. Keyin har bir qatlamni alohida uzib, tiklang va keyingisi nima qilishini kuzating.
Zaxira rejaning natijasi bu yerda eng qimmatli kuzatuv va ommaviy IP sahifasi hech qachon ko'rsatmaydigan narsa. Hamrohlarning yo'llarini, ular ishlatadigan manzillarni va o'sha natijani konfiguratsiya yonida saqlang, chunki baxtli yo'l keyin so'raladigan qism emas.