Ikki saytli WireGuard markazi uchun IPv6 rejalashtirish: prefiks, hamkorlar, marshrutlar
Ikki LAN uchun xususiy IPv6 markazini ko'rib chiqing: prefiks tanlang, tunnel manzillarini zaxiralang, so'ng AllowedIPs qaysi hamkor qaysi quyi tarmoqqa ega ekanini bildirsin.
Ikki LAN, bitta WireGuard markazi va uchta alohida savolga javob berishi kerak bo'lgan IPv6 manzil rejasi: qaysi prefiks, qaysi manzil qaysi routerga tegishli va qaysi hamkor qaysi quyi tarmoqqa ega. Ulardan biri xato bo'lsa, qo'l berib ko'rishadigan, lekin hech narsani marshrutlamaydigan tunnel paydo bo'ladi. Quyidagi reja shu tartibda xususiy ikki saytli loyihani ko'rib chiqadi. U ataylab IPv6 orqali internetga chiqishni ta'minlamaydi.
Prefiks nima uchun ekanini hal qiling
Maqsad saytlar orasida xususiy yetib borish bo'lsa, fd00::/8 dan olingan noyob mahalliy prefiks tabiiy tanlov. Har bir joyga qaysi ISP xizmat ko'rsatishidan qat'i nazar barqaror qoladi va global marshrutlash jadvalida e'lon qilinmaydi, shuning uchun ichki raqamlashingizni internetga oqizib yubora olmaydi.
Xuddi shu xususiyat cheklov hamdir. ULA hech qanday ommaviy qaytish yo'lini bermaydi, chunki hech bir yuqori provayder uni sizning shlyuzingizga marshrutlash kerakligini bilmaydi. Talab IPv6 orqali internetga chiqishni o'z ichiga olsa, sizga kerak uni siz tomon marshrutlaydigan provayderdan ajratma, va bu o'z prefiks o'lchamiga ega alohida loyihaviy qaror.
Har bir joylashtirishga /48 kerak deb o'ylamang. RFC 6177 yakuniy saytning yagona majburiy o'lchamidan uzoqlashdi, va to'g'ri o'lcham siz boshqaradigan tarmoqlar soniga bog'liq. ULA ni RFC 4193 tartib-qoidasi bilan yarating, boshqa tashkilot ham ishlatishi mumkin bo'lgan prefiks o'ylab topish o'rniga. Natijani har qanday qurilma sozlanishidan oldin manzil rejasiga yozing, chunki hech kim qayd etmagan prefiks kimdir qayta ishlatadigan prefikstdir.
Prefiksni rollarga bo'ling
Quyidagi misol fd7c:2e91:4a00::/48 dan foydalanadi, jadval esa sayt bo'yicha emas, har bir blok qayerda yozilishi bo'yicha tartiblangan. Qiymatlarni namuna deb qabul qiling va biror narsani joylashtirishdan oldin o'zingiznikini yarating.
| Where it is written | What appears there | Block used | What it establishes |
|---|---|---|---|
| Hub wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::1/128 | The hub's own tunnel identity |
| Hub wg0.conf, Site A peer | Two ranges in one AllowedIPs line | ::2/128 and :10::/64 | That A owns its tunnel address and its LAN |
| Hub wg0.conf, Site B peer | Two ranges in one AllowedIPs line | ::3/128 and :20::/64 | That B owns its tunnel address and its LAN |
| Site A wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::2/128 | A's identity as the hub sees it |
| Site B wg0.conf, interface address | A single host address on the tunnel | fd7c:2e91:4a00:ff00::3/128 | B's identity as the hub sees it |
LAN bloklari /64, chunki oddiy SLAAC 64 bitli interfeys identifikatorini kutadi. LAN ni kichikroq blokka bo'lish ko'pchilik xostlarda bu taxminni buzadi, xususiy rejada manzil tejash uchun esa operatsion xarajat arzimaydi. Ikkala LAN bloki ham /48 ning o'rtasidan olinadi, past diapazon keyingi saytlar uchun bo'sh qoladi.
Tunnel manzillari ma'muriy zaxira, bog'lanishdagi tarmoq emas. Har bir interfeys undan bitta /128 oladi, shuning uchun hech bir xost tunnelda umumiy quyi tarmoqni taxmin qilmaydi va kerak bo'lmagan joyda qo'shni aniqlash ishlamaydi. Rollarni alohida saqlang va ularni tashkilotning manzil rejasiga yozib qo'ying, keyingi sayt blokni qayta ishlatmasin.
Har bir routerga bitta tunnel manzili bering
Har bir routerga bitta /128 ajrating va ishlayotgan markazning mavjud kalitlari va oxirgi nuqtalarini saqlang. Quyidagi uchta qiymat faqat xost qismida farq qiladi.
Hub: Address = fd7c:2e91:4a00:ff00::1/128
Site A: Address = fd7c:2e91:4a00:ff00::2/128
Site B: Address = fd7c:2e91:4a00:ff00::3/128
Bu /128 o'sha interfeysga ajratilgan yagona manzilni tavsiflaydi. Hamkor qancha manzilga marshrutlay olishi haqida hech narsa demaydi, chunki yetib borish interfeys prefiksida emas, AllowedIPs da ifodalanadi.
Har bir sayt routeriga o'z LAN blokida manzil va uni tarqatish yo'li ham kerak, odatda SLAAC uchun router e'lonlari. WireGuard bu e'lonlarni sizning nomingizdan yubormaydi va ikki LAN ni bog'lamaydi. Sayt routeri ikki yo'nalishda ham routerdir.
Quyi tarmoq egaligini AllowedIPs ga qo'ying
A sayti uchun markazning hamkor yozuvi A ning tunnel manziliga va A ning LAN iga ega, va bu juftlik butun egalik bayonotidir. Bu hamkor bo'limida boshqa hech narsa saytni tavsiflashi shart emas.
AllowedIPs = fd7c:2e91:4a00:ff00::2/128, fd7c:2e91:4a00:10::/64
B sayti uchun hamkor yozuvi mos juftlikka ega, bu yerda simmetriya qisqalikdan muhimroq. Ikki qatorni birga o'qing va egalik taqsimoti bir qarashda ko'rinadi.
AllowedIPs = fd7c:2e91:4a00:ff00::3/128, fd7c:2e91:4a00:20::/64
Bular ikki alohida hamkor bo'limi, bitta hamkor uchun raqobatlashadigan ikki ro'yxat emas. WireGuard AllowedIPs ni ikki yo'nalishda ishlatadi: chiqish manzili uchun hamkorni tanlaydi va uni ochgan hamkorga ajratilgan diapazonga manbasi mos kelmaydigan kiruvchi paketni rad etadi. Butun /48 ni ikkala hamkorga berish o'sha ikkinchi tekshiruvni o'chirib qo'yardi va qaysi sayt qaysi blokka ega ekanini xiralashtirardi. Aynan shu farq noto'g'ri manba manzilini jimgina qabul qilish o'rniga ko'rinadigan qiladi.
Har bir saytga faqat o'z markaz hamkori orqali yetib boriladigan manzillar kerak: A sayti markaz manzilini, B saytining tunnel manzilini va B ning LAN ini sanaydi, B sayti esa qarama-qarshi to'plamni sanaydi. Ro'yxatlar ataylab asimmetrik, chunki har bir router topologiyaning boshqa tomonini ko'radi. Ikkalasini ham manzil rejasidan yozing, boshqa sayt konfiguratsiyasidan emas, chunki eskirgan diapazon qayta raqamlashdan shu tarzda omon qoladi.
wg-quick bilan bu diapazonlar marshrutlar ham yaratadi. systemd-networkd yoki qo'lda sozlashda ekvivalent marshrutlarni o'zingiz qo'shing; aks holda tunnel yadro hech qachon yubormaydigan paketlarni tashiydi.
Uzatishni yakunlang va ikkala yo'nalishni sinab ko'ring
Markazda va ikkala sayt routerida IPv6 uzatishni yoqing, uzatish siyosatida kerakli saytlararo xizmatlarga ruxsat bering. ICMPv6 Packet Too Big xabarlarini foydalanishga yaroqli saqlang, chunki ularni tashlash yo'l MTU aniqlashni buzadi va ilova xatolariga o'xshaydigan katta uzatishlardagi to'xtashlarni keltirib chiqaradi. Firewall ruxsatisiz uzatadigan markaz paketni marshrutlash va tunnel o'rtasida tashlab yuboradi. Bu nosozlik rejimini bilish arziydi, chunki tunnel ishlab turadi va faqat ba'zi oqimlar o'ladi.
sysctl net.ipv6.conf.all.forwarding
ip -6 route
ping -6 -c 3 fd7c:2e91:4a00:20::1
A saytidagi xostdan B saytidagi xostga, so'ng qarama-qarshi yo'nalishda sinab ko'ring. Markazning tunnel manziliga ping faqat birinchi sakrashni sinaydi va LAN marshrutlari noto'g'ri bo'lsa ham o'tadi. Rejani xostdan xostga oqim isbotlaydi.
Tashqi WireGuard ulanishi IPv4 ustida ishlashi mumkin, ichki trafik esa IPv6 bo'lishi mumkin, va bu mustaqillik ko'chish paytida foydali. Agar keyinchalik global IPv6 chiqishi qo'shilsa, provayder ajratmasi, manba manzil tanlovi va qaytish marshrutlashini yangi loyihaviy qadam sifatida qayta ko'rib chiqing; yuqoridagi xususiy reja saytlararo trafik uchun amal qiladi.