Екі LAN, бір WireGuard хабы және үш бөлек сұраққа жауап беруі тиіс IPv6 мекенжай жоспары: қай префикс, қай мекенжай қай маршрутизаторға тиесілі және қай теңдес қай субнетке ие. Олардың біреуі қате болса, қол алысатын, бірақ ештеңені маршруттамайтын туннель пайда болады. Төмендегі жоспар жеке екі алаң дизайнын осы ретпен қарастырады. Ол әдейі IPv6 интернет қатынасын бермейді.

Префикстің не үшін екенін шешіңіз

Мақсат алаңдар арасында жеке қолжетімділік болса, fd00::/8-ден алынған бірегей жергілікті префикс табиғи таңдау. Ол әр орынға қай ISP қызмет көрсететініне қарамастан тұрақты болып қалады және жаһандық маршруттау кестесінде жарияланбайды, сондықтан ішкі нөмірлеуіңізді интернетке шығара алмайды.

Сол қасиет шектеу болып табылады. ULA жария кері жол бермейді, өйткені ешбір жоғары ағын оны сіздің шлюзіңізге маршруттауды білмейді. Талап IPv6 интернет шығысын қамтитын болса, сізге қажет оны сізге маршруттайтын провайдерден бөлу, және бұл өз префикс өлшемі бар жеке дизайн шешімі.

Әр орнатуға /48 керек деп ойламаңыз. RFC 6177 соңғы алаңның бірыңғай міндетті өлшемінен кетті, ал дұрыс өлшем сіз басқаратын желілер санына байланысты. ULA-ны RFC 4193 рәсімімен жасаңыз, басқа ұйым да пайдалануы мүмкін префиксті ойлап таппаңыз. Нәтижені кез келген құрылғы конфигурацияланбай тұрып мекенжай жоспарына жазыңыз, өйткені ешкім жазбаған префикс — біреу қайта пайдаланатын префикс.

Префиксті рөлдерге бөліңіз

Төмендегі мысал fd7c:2e91:4a00::/48 пайдаланады, ал кесте алаң бойынша емес, әр блоктың қайда жазылатыны бойынша ұйымдастырылған. Мәндерді үлгі ретінде қарап, бірдеңе орнатпас бұрын өзіңіздікін жасаңыз.

Where it is writtenWhat appears thereBlock usedWhat it establishes
Hub wg0.conf, interface addressA single host address on the tunnelfd7c:2e91:4a00:ff00::1/128The hub's own tunnel identity
Hub wg0.conf, Site A peerTwo ranges in one AllowedIPs line::2/128 and :10::/64That A owns its tunnel address and its LAN
Hub wg0.conf, Site B peerTwo ranges in one AllowedIPs line::3/128 and :20::/64That B owns its tunnel address and its LAN
Site A wg0.conf, interface addressA single host address on the tunnelfd7c:2e91:4a00:ff00::2/128A's identity as the hub sees it
Site B wg0.conf, interface addressA single host address on the tunnelfd7c:2e91:4a00:ff00::3/128B's identity as the hub sees it

LAN блоктары /64, өйткені қарапайым SLAAC 64 биттік интерфейс идентификаторын күтеді. LAN-ды кішірек блокқа бөлу көптеген хосттарда бұл болжамды бұзады, ал жеке жоспарда мекенжай үнемдеуіне операциялық шығын тұрарлық емес. Екі LAN блогы да /48 ортасынан алынады, төменгі диапазон кейінгі алаңдарға бос қалады.

Туннель мекенжайлары әкімшілік қор, байланыстағы желі емес. Әр интерфейс одан бір /128 алады, сондықтан ешбір хост туннельде ортақ субнетті болжамайды және қажет емес жерде көршілерді табу жүрмейді. Рөлдерді бөлек ұстап, ұйымның мекенжай жоспарына жазыңыз, кейінгі алаң блокты қайта пайдаланбасын.

Әр маршрутизаторға бір туннель мекенжайын беріңіз

Әр маршрутизаторға бір /128 бөліп, жұмыс істеп тұрған хабтың қолданыстағы кілттері мен соңғы нүктелерін сақтаңыз. Төмендегі үш мән тек хост бөлігінде ерекшеленеді.

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

Бұл /128 сол интерфейске берілген жалғыз мекенжайды сипаттайды. Ол теңдес қанша тағайындалымды маршруттай алатынын айтпайды, өйткені қолжетімділік интерфейс префиксінде емес, AllowedIPs ішінде білдіріледі.

Әр алаң маршрутизаторына өз LAN блогында мекенжай және оны тарату тәсілі қажет, әдетте SLAAC үшін маршрутизатор хабарламалары. WireGuard бұл хабарламаларды сіздің орныңызға жібермейді және екі LAN-ды көпірмейді. Алаң маршрутизаторы екі бағытта да маршрутизатор.

Субнет иелігін AllowedIPs ішіне қойыңыз

A алаңы үшін хабтың теңдес жазбасы A-ның туннель мекенжайына және A-ның LAN-ына ие, және сол жұп — бүкіл иелік мәлімдемесі. Сол теңдес бөлімінде басқа ештеңе алаңды сипаттауды қажет етпейді.

AllowedIPs = fd7c:2e91:4a00:ff00::2/128, fd7c:2e91:4a00:10::/64

B алаңының теңдес жазбасы сәйкес жұпқа ие, және мұнда симметрия қысқалықтан маңыздырақ. Екі жолды бірге оқысаңыз, иелік бөлінісі бір қарағанда көрінеді.

AllowedIPs = fd7c:2e91:4a00:ff00::3/128, fd7c:2e91:4a00:20::/64

Бұлар екі бөлек теңдес бөлімі, бір теңдес үшін жарысатын екі тізім емес. WireGuard AllowedIPs-ті екі бағытта да пайдаланады: шығыс тағайындалымы үшін теңдесті таңдайды және оны шешкен теңдеске берілген диапазонға көзі сәйкес келмейтін кіріс пакетін қабылдамайды. Бүкіл /48-ді екі теңдеске беру сол екінші тексеруді өшіреді және қай алаңның қай блокқа ие екенін бұлыңғыр етеді. Дәл осы айырмашылық қате көз мекенжайын үнсіз қабылдаудың орнына көрінетін етеді.

Әр алаңға тек өз хабы теңдесі арқылы қолжетімді тағайындалымдар қажет: A алаңы хаб мекенжайын, B алаңының туннель мекенжайын және B-нің LAN-ын тізеді, ал B алаңы кері жиынды тізеді. Тізімдер әдейі асимметриялы, өйткені әр маршрутизатор топологияның басқа жағын көреді. Екеуін де мекенжай жоспарынан жазыңыз, басқа алаңның конфигурациясынан емес, өйткені ескірген диапазон қайта нөмірлеуден осылай аман қалады.

wg-quick-пен бұл диапазондар маршруттарды да жасайды. systemd-networkd немесе қолмен баптау кезінде баламалы маршруттарды өзіңіз қосыңыз; әйтпесе туннель ядро оған ешқашан жібермейтін пакеттерді тасымалдайды.

Жіберуді аяқтап, екі бағытты да тексеріңіз

Хабта және екі алаң маршрутизаторында IPv6 жіберуді қосыңыз, және жіберу саясатында қажетті алаңаралық қызметтерге рұқсат беріңіз. ICMPv6 Packet Too Big хабарламаларын пайдалануға жарамды күйде ұстаңыз, өйткені оларды тастау жол MTU-ын табуды бұзады және қолданба ақауына ұқсайтын үлкен жіберілімдердің тоқырауын тудырады. Өрт қабырғасының рұқсатынсыз жіберетін хаб пакетті маршруттау мен туннель арасында тастайды. Бұл ақау режимін білген жөн, өйткені туннель істеп тұрады және тек кейбір ағындар өледі.

sysctl net.ipv6.conf.all.forwarding
ip -6 route
ping -6 -c 3 fd7c:2e91:4a00:20::1

A алаңындағы хосттан B алаңындағы хостқа, содан кейін қарсы бағытта тексеріңіз. Хабтың туннель мекенжайына ping тек бірінші секірісті тексереді және LAN маршруттары қате болса да өтеді. Жоспарды дәлелдейтін — хосттан хостқа ағыны.

Сыртқы WireGuard қосылымы IPv4 үстінен жүре алады, ал ішкі трафик IPv6 болады, және бұл тәуелсіздік көшу кезінде пайдалы. Кейін жаһандық IPv6 шығысы қосылса, провайдер бөлуін, көз мекенжайын таңдауды және қайтару маршруттауын жаңа дизайн қадамы ретінде қайта қараңыз; жоғарыдағы жеке жоспар алаңаралық трафик үшін жарамды болып қалады.

Қатысты мақалалар