Гар барилт дуусна, wg show саяхны дамжуулалтыг мэдээлж, серверийн туннелийн хаяг ping-д хариу өгнө. Харин серверийн LAN дахь хост хариу өгөхгүй. Гурван нөхцөл нэгэн зэрэг биелэх ёстой: клиент LAN префиксийг туннель рүү чиглүүлэх, сервер пакетуудыг дамжуулах, хариунд буцах зам хэрэгтэй. Гурвын нэг нь дутуу бол шинж тэмдэг ижил байна.

AllowedIPs нь нэвтрэх жагсаалт ба маршрутын хүснэгт хоёулаа юм

Клиент дээр AllowedIPs жагсаалт нь тухайн хамтрагч руу юу илгээж болох, WireGuard ямар маршрут суулгахыг хоёуланг нь тодорхойлно. Зөвхөн серверийн туннелийн хаягийг жагсаасан хамтрагчийн бичлэг нэг хост маршрут суулгадаг тул LAN-ийн очих газрууд туннельд хэзээ ч ордоггүй. LAN префиксийг нэмэх нь хамгийн түрүүнд шалгах зүйл бөгөөд хуулбарласан тохиргооны дараа хамгийн их дутагддаг өөрчлөлт нь мөн энэ. Анхдагч маршрут хүртэл өргөтгөсөн хамтрагч нь өөр дизайн бөгөөд клиентийн интернэт трафикийг ч зөөнө.

Хост маршрут болон LAN префиксийг тусдаа бичлэгээр хадгална уу. Оффисд хоёр дэд сүлжээ байвал хоёулаа жагсаалтад багтана, дутуу хоёр дахь префикс нь бүрэн бус, сонгомол мэт харагдах алдаа үүсгэдэг.

[Peer]
PublicKey = <server public key>
Endpoint = vpn.example.net:51820
AllowedIPs = 10.66.0.1/32, 192.168.50.0/24

Дамжуулалт ба орчуулга сервер дээр байх ёстой

Серверт IP дамжуулалт идэвхжсэн, туннелиас ирж буй трафикийг хүлээн авах дамжуулалтын дүрэм, өөрийн LAN интерфейс рүү чиглэсэн орчуулгын дүрэм хэрэгтэй. Яг орчуулга нь оффисын сүлжээний хост бүрт хүрэхгүйгээр дизайныг ажиллуулдаг. Дараа нь хариунууд LAN хэзээ ч сонсож байгаагүй хаяг руу биш, сервер рүү буцна. Үүнгүйгээр хост бүрт туннелийн дэд сүлжээ рүү маршрут болон түүнийг зөвшөөрөх галт ханын дүрэм хэрэгтэй бөгөөд энэ нь өөр хэн нэгний удирддаг сүлжээнд ховор хүлээн зөвшөөрөгддөг.

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Гараар нэмсэн дүрмүүд дахин ачаалахад алга болдог тул серверийн тохиргооны hook командуудаар тэдгээрийг интерфейстэй холбоно уу. Өөрийн интерфейсээс урт насалдаг дүрмийн багц нь машин цаашид байхгүй туннелийн трафикийг орчуулж эхлэх зам юм.

LAN нүүсэн ч дүрэм нүүгээгүй үед

Оффисын дэд сүлжээг дахин дугаарладаг маршрутизаторыг солих нь энэ алдааны сонгодог хувилбар юм. Туннель асаалттай хэвээр, гар барилт шинэ хэвээр, серверийн ард юу ч хариу өгөхгүй, учир нь орчуулгын дүрэм хуучин хаягийг хэзээ ч нэрлэсээр байна. Суулгагч скриптүүд серверийн LAN хаягийг POSTROUTING дүрэмд оруулдаг бөгөөд дахин дугаарласны дараа тэр хаяг ямар ч интерфейс дээр байхгүй. Дараа нь пакетууд хариу өгч чадахгүй очих газар руу дахин бичигддэг.

iptables -t nat -n -L POSTROUTING
ip -br addr show

Хоёр гаралтыг харьцуулна уу. Интерфейсийн жагсаалтад харагдахгүй орчуулгын зорилт нь алдаа бөгөөд нэг удаа харсны дараа засах нь нэг мөрийн өөрчлөлт юм. Дүрэм нь WireGuard-ийн тохиргоонд биш, үүсгэсэн unit-д байж болох тул засварын дараа тэр unit-ийг дахин ачаалж, дараагийн ачаалалт таны өөрчлөлтийг дахин бичихгүйг баталгаажуулна уу.

NAT-ийн ард байгаа хоёр сайтад уулзах газар хэрэгтэй

Аль ч тал ирж буй холболтыг хүлээн авахгүй үед практик хариулт нь нийтийн хаяг болон хоёр WireGuard интерфейс бүхий жижиг хост юм. Сайт бүр гадагш холбогддог, дунд хост нь хамтрагч бүрийн LAN-ыг өөрийн AllowedIPs, өөрөөр хэлбэл өөрийн жагсаалтад, жагсааж, дамжуулалт хоёр туннелийн хооронд пакетуудыг зөөдөг. Аль ч сайтын галт хананд юу ч өөрчлөх шаардлагагүй, тиймээс энэ дизайн амархан тархдаг.

Сайтуудын хоорондох маршрутлал нь анхны эх хаягийг хадгалж, улмаар хост тус бүрийн бүртгэлийг утга учиртай болгодог. Хоёр LAN давхцах үед дунд хост дээр орчуулах нь илүү энгийн боловч бүртгэлд эх сурвалжийн таних тэмдгийг алдах үнээр. Сонгохын өмнө аль шинж чанар чухал болохыг шийдээрэй.

Давхаргуудыг дөрвөн шалгалтаар ялгана уу

Гурван зүйлийг өөрчилж найдсанаас илүү давхарга бүрт нэг шалгалт хий. Эхнийх нь хамтрагч бүрийн гар барилтын нас болон тоолуурыг харуулна. Хоёр дахь нь клиент тэр очих газрыг үнэхээр туннель рүү чиглүүлж байгаа эсэхийг харуулна. Гурав, дөрөв дэх нь хүсэлт ирсэн эсэх, ирсний дараа ямар нэг бодлого түүнийг хаясан эсэхийг хэлнэ.

wg show
ip route get 192.168.50.20
tcpdump -ni wg0 icmp
iptables -vnL FORWARD --line-numbers

Ирж, хариу үүсгээгүй хүсэлт нь хариуны зам эсвэл LAN хост руу заана. Хэзээ ч ирээгүй хүсэлт AllowedIPs эсвэл клиентийн маршрут руу заана. Энэ хоёр үр дүнд өөр засвар хэрэгтэй бөгөөд тэдгээрийг ялгадаг нь бичлэг юм.

Холбоотой нийтлэлүүд