WireGuard кол алышуусу иштейт, бирок кеңсе ички тармагы жооп бербейт
WireGuard күйүп турат жана серверге ping барат, бирок анын LAN тармагында эч нерсе жооп бербейт. Кардардын префиксин, сервердин өткөрүп берүүсүн жана жооптун жолун текшериңиз.
Кол алышуу аяктайт, 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 же кардардын маршрутун көрсөтөт. Бул эки жыйынтык ар башка оңдоону талап кылат, жана аларды так жазуу айырмалайт.