Қол алысу аяқталады, 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 немесе клиенттің маршрутын нұсқайды. Бұл екі нәтиже әртүрлі түзетуді қажет етеді, және оларды дәл түсірілім ажыратады.

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