Две LAN мрежи, еден WireGuard центар и план за IPv6 адреси што мора да одговори на три одделни прашања: кој префикс, која адреса и припаѓа на секој рутер и кој партнер поседува која подмрежа. Грешка во едно од нив создава тунел што прави ракување и не рутира ништо. Планот подолу минува низ приватен дизајн со две локации по тој редослед. Тој намерно не обезбедува интернет пристап преку IPv6.

Одлучете за што служи префиксот

Единствен локален префикс од fd00::/8 е природен избор кога целта е приватна достапност меѓу локациите. Тој останува стабилен без оглед на тоа кој давател услугува секоја локација и не се објавува во глобалната табела за рутирање, па не може да го излее вашето внатрешно нумерирање на интернет.

Истото својство е ограничувањето. 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 и LAN мрежата на A, и тој пар е целата изјава за сопственост. Ништо друго во тој дел за партнер не треба да ја опишува локацијата.

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 и LAN мрежата на B, а Локација 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, прегледајте го доделувањето од давателот, изборот на изворна адреса и повратното рутирање како нов дизајнерски чекор; приватниот план погоре останува валиден за сообраќај меѓу локациите.

Поврзани статии