Две 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, преиспитајте доделу од провајдера, избор изворне адресе и повратно рутирање као нови корак пројектовања; приватни план горе остаје важећи за саобраћај између локација.

Повезани чланци