Kimdir sizga birinchi va oxirgi manzilni berib, VPN marshrutini so‘raydi. Ikkala uchni ham qamrab oluvchi eng qisqa prefiksni tanlash vasvasali qadamdir va bu qadam hech kim so‘ramagan manzillarni jimgina qo‘shadi. CIDR blokining o‘lchami har doim ikkining darajasi va boshlang‘ich manzili unga tekislangan bo‘ladi, shuning uchun ixtiyoriy oraliq odatda bittadan ko‘proq talab qiladi. Oraliqdan o‘ting, uni aniq bo‘ling, so‘ng uning tashqarisidagi manzillarni tekshiring.

Prefiksdan emas, oraliqdan boshlang

Boshqa narsa yozishdan oldin birinchi manzilni va oxirgi manzilni yozib qo‘ying. Juftlik talabning o‘zi; prefiks uning faqat bitta mumkin ifodasi, ba’zan esa noto‘g‘ri ifodasi. Ikki sonni tekshirish ham niqobdan ancha oson.

Tekislangan oraliq bitta blokka yig‘iladi. Tekislanmagan oraliq bir nechtaga bo‘linadi va bo‘linish taxminiy emas, aniq. Qilmasligingiz kerak narsa — tashqariga yaxlitlab, uni yetarlicha yaqin deb atash, chunki qo‘shimcha manzillar marshrut olib yurgan siyosatni oladi.

Xatoning ikkala yo‘nalishi ham muhim. Tunnelga kiruvchi marshrut uchun qo‘shimcha manzillar VPN ichiga tortiladi. Chetlab o‘tish istisnosi uchun qo‘shimcha manzillar uni tashlab ketadi. Natijalarning hech biri faqat siz o‘rnatgan prefiksni ko‘rsatuvchi marshrut jadvalida ko‘rinmaydi.

Birinchi holat: oraliq tasodifan tekislangan

198.51.100.64 dan 198.51.100.127 gacha oling. Birinchi manzil 64 manzil chegarasiga tekislangan va oraliq aynan 64 manzil, shuning uchun bitta /26 uni hech qanday qoldiqsiz tavsiflaydi.

Bu oson holat va uni tanigan ma’qul, chunki talabni prefikslar bilan o‘ylagan kishi yozgan bo‘lishi ehtimoli yuqori. Tekshiruv qisqa ekanini ham bildiradi: o‘lcham ikkining darajasi va boshlanish shu o‘lchamning karrali ekanini tasdiqlang.

Hujjat oraliqlari yaxshi misol bo‘ladi, chunki ularning egasi yo‘q. Bu manzillarni haqiqiy tunnelga o‘rnatmang va sizga berilgan oraliqni faqat g‘alati ko‘ringani uchun hujjat maydoni deb hisoblamang.

Ikkinchi holat: tekislanmagan, shuning uchun bo‘ling

Endi 198.51.100.100 dan 198.51.100.107 gacha oling. Bu sakkiz manzil, ya’ni ikkining darajasi, lekin 100 sakkizning karrali emas. Bu o‘lchamdagi bitta blok u yerdan boshlana olmaydi, shuning uchun oraliq bittadan ko‘p blok bilan qoplanishi kerak.

Aniq qoplama ikki /30 blok: 198.51.100.100/30 100 dan 103 gacha, 198.51.100.104/30 esa 104 dan 107 gacha qoplaydi. Jami sakkiz manzil, oraliqdan tashqarida hech narsa yo‘q va bo‘linish berilgan oraliq uchun yagona.

python3 -c "from ipaddress import ip_address, summarize_address_range as s; print(*s(ip_address('198.51.100.100'), ip_address('198.51.100.107')), sep='\n')"

Standart kutubxona funksiyasi hisob-kitobni siz uchun bajaradi va ipaddress hujjati nima qaytarishini belgilaydi. U qilmaydigan narsa — shlyuz tanlash, manzillar kimga tegishli ekanini hal qilish yoki ularning orqasidagi har qanday xizmatga ruxsat berish.

Kengroq prefiks nima ushlaganini o‘lchang

Qisqa yo‘lni qabul qilishdan oldin uning narxini hisoblang. 198.51.100.96 dan boshlanuvchi /28 96 dan 111 gacha qoplaydi, ya’ni sakkiz o‘rniga o‘n olti manzil. Qo‘shimcha sakkiztasi 96 dan 99 gacha va 108 dan 111 gacha, ularning har biri marshrutni meros olardi.

python3 -c "from ipaddress import ip_network as n; w=set(n('198.51.100.96/28')); t=set(n('198.51.100.100/30'))|set(n('198.51.100.104/30')); print(len(w), len(t), sorted(w-t))"

Sakkiz qo‘shimcha manzil — o‘zgartirish so‘roviga yozish mumkin bo‘lgan aniq son. Qisqa yo‘l maqbulmi yoki yo‘qmi, shuni hal qiladigan son ham shu, va bu hisob emas, siyosat masalasi.

Hisob va aniqlashni alohida tuting. Tarmoq operatori bergan oraliq aniq aylantiriladi. O‘zgaruvchi xizmatning bitta DNS javobi o‘sha xizmatning to‘liq yoki doimiy oralig‘ini tasdiqlamaydi va bog‘liq bo‘lmagan nomlar bitta manzilni bo‘lishishi mumkin.

Aniq to‘plamni o‘rnating va chekkalarni tekshiring

Har bir natijaviy prefiksni VPN konfiguratsiyasining egasiga bering va u qo‘llab-quvvatlanadigan mexanizm orqali o‘rnatsin. Agar talab ikkita yozuvni talab qilsa, shaklni qisqartirish uchun bittasini kengaytirish o‘rniga ikkita yozuvni saqlang.

sudo ip route add 198.51.100.100/30 via 10.90.0.1 dev tun0
sudo ip route add 198.51.100.104/30 via 10.90.0.1 dev tun0
ip route get 198.51.100.101
ip route get 198.51.100.97

Oxirgi ikki buyruq — odamlar tashlab ketadigan buyruqlar. Birinchi ichki manzil yangi marshrutga ergashishi kerak, oraliqdan tashqaridagi manzil esa ergashmasligi kerak. Agar ikkalasi bir yo‘ldan ketsa, oraliq talab bilan konfiguratsiya o‘rtasida bir joyda kengaytirilgan.

Birinchi manzilni, oxirgi manzilni va ularni ifodalovchi prefikslarni yozib oling. Qoidani keyingi ko‘rib chiqadigan kishi hisobni takrorlamasdan talabni konfiguratsiya bilan solishtira oladi va aniq marshrut bilan qulay marshrut o‘rtasidagi farq ko‘rinib turadi.

O'xshash maqolalar