Хоёр талбайтай WireGuard зангилааны IPv6 төлөвлөлт: префикс, хосууд, маршрутууд
Хоёр LAN-д зориулсан хувийн IPv6 зангилаагаар ажиллана уу: префикс сонгож, туннелийн хаягуудыг нөөцөлж, дараа нь AllowedIPs аль хос аль дэд сүлжээг эзэмшихийг илэрхийлээрэй.
Хоёр LAN, нэг WireGuard зангилаа, гурван тусдаа асуултад хариулах ёстой IPv6 хаягийн төлөвлөгөө: аль префикс, аль хаяг аль чиглүүлэгчийнх, аль хос аль дэд сүлжээг эзэмшдэг. Эдгээрийн нэг нь буруу бол гар барилцаж, юу ч чиглүүлэхгүй туннель үүснэ. Доорх төлөвлөгөө нь хувийн хоёр талбайн загварыг энэ дарааллаар авч үзнэ. Энэ нь зориудын хувьд IPv6 интернэт хандалт өгөхгүй.
Префикс юунд зориулагдсаныг шийдээрэй
Талбайнуудын хооронд хувийн хүртээмж зорилго бол fd00::/8-аас авсан өвөрмөц локал префикс байгалийн сонголт юм. Аль ISP талбай бүрд үйлчилж байгаагаас үл хамааран тогтвортой байх бөгөөд дэлхийн чиглүүлэлтийн хүснэгтэд зарлагдахгүй тул дотоод дугаарлалтыг интернэт рүү алдаж чадахгүй.
Энэ ижил шинж чанар нь хязгаарлалт болно. ULA нь нийтийн буцах зам өгөхгүй, учир нь ямар ч дээд урсгал үүнийг таны гарц руу чиглүүлэх ёстойг мэдэхгүй. Шаардлагад IPv6 интернэт гарц багтсан бол танд хэрэгтэй үүнийг та руу чиглүүлдэг үйлчилгээ үзүүлэгчийн хуваарилалт, бөгөөд энэ нь өөрийн префиксийн хэмжээтэй тусдаа дизайны шийдвэр юм.
Бүх байршуулалтад /48 хэрэгтэй гэж бүү бодоорой. RFC 6177 төгсгөлийн талбайн ганц заавал шаардлагатай хэмжээнээс холдсон, зөв хэмжээ нь таны ажиллуулах сүлжээний тооноос хамаарна. ULA-г RFC 4193 процедураар үүсгээрэй, өөр байгууллага ч ашиглаж болох префикс зохиохын оронд. Ямар ч төхөөрөмж тохируулагдахаас өмнө үр дүнг хаягийн төлөвлөгөөнд бичээрэй, учир нь хэн ч бүртгээгүй префикс бол хэн нэгэн дахин ашиглах префикс юм.
Префиксийг үүрэгт хуваа
Доорх жишээ fd7c:2e91:4a00::/48 ашигладаг бөгөөд хүснэгт нь талбайгаар биш, блок бүрийг хаана бичихээр зохион байгуулагдсан. Утгуудыг жишээ гэж үзэж, ямар нэгэн зүйл байршуулахаас өмнө өөрийнхийг үүсгээрэй.
| 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 блокууд /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-д тавь
А талбайн зангилааны хосын бичлэг нь А-ийн туннелийн хаяг болон А-ийн LAN-ыг эзэмшдэг, тэр хос нь бүх эзэмшлийн мэдэгдэл юм. Тэр хосын хэсэгт өөр юу ч талбайг тодорхойлох шаардлагагүй.
AllowedIPs = fd7c:2e91:4a00:ff00::2/128, fd7c:2e91:4a00:10::/64
Б талбайн хосын бичлэг нь тохирох хосыг эзэмшдэг, энд тэгш хэм товчоос илүү чухал. Хоёр мөрийг хамт уншаарай, эзэмшлийн хуваарилалт нэг харцаар харагдана.
AllowedIPs = fd7c:2e91:4a00:ff00::3/128, fd7c:2e91:4a00:20::/64
Эдгээр нь нэг хосын төлөө өрсөлдөх хоёр жагсаалт биш, хоёр тусдаа хосын хэсэг юм. WireGuard AllowedIPs-ийг хоёр чиглэлд ашигладаг: гадагш очих газарт хосыг сонгож, тайлж уншсан хостод олгосон мужид эх сурвалж тохирохгүй ирж буй пакетыг татгалздаг. Бүх /48-ыг хоёр хостод өгвөл тэр хоёр дахь шалгалт унтарч, аль талбай аль блокыг эзэмшихийг бүдэгрүүлнэ. Яг энэ ялгаа нь буруу эх хаягийг чимээгүй хүлээн авахын оронд харагдахуйц болгодог.
Талбай бүрд зөвхөн өөрийн зангилааны хосоор хүрч болох очих газрууд хэрэгтэй: А талбай зангилааны хаяг, Б талбайн туннелийн хаяг болон Б-ийн LAN-ыг жагсааж, Б талбай эсрэг олонлогийг жагсаана. Жагсаалтууд зориудын хувьд тэгш бус, учир нь чиглүүлэгч бүр топологийн өөр талыг хардаг. Хоёуланг нь хаягийн төлөвлөгөөнөөс бичээрэй, нөгөө талбайн тохиргооноос биш, ингэснээр хуучирсан муж дахин дугаарлалтыг даван туулна.
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
А талбайн хостноос Б талбайн хост руу, дараа нь эсрэг чиглэлд шалга. Зангилааны туннелийн хаяг руу ping зөвхөн эхний алхмыг шалгах бөгөөд LAN маршрутууд буруу байсан ч давна. Төлөвлөгөөг батлах нь хост хоорондын урсгал юм.
Гадаад WireGuard холболт IPv4 дээгүүр ажиллаж, дотоод урсгал IPv6 байж болно, энэ бие даасан байдал шилжилтийн үед хэрэгтэй. Хожим дэлхийн IPv6 гарц нэмбэл үйлчилгээ үзүүлэгчийн хуваарилалт, эх хаягийн сонголт, буцах чиглүүлэлтийг шинэ дизайны алхам болгон дахин хараарай; дээрх хувийн төлөвлөгөө талбай хоорондын урсгалд хүчинтэй хэвээр.