WireGuard кол алышуусу иштейт, бирок интернет жок: пакетти байкап көрүңүз
Кол алышуу ачкычтарды жана жеткиликтүүлүктү гана далилдейт. AllowedIPsтен баштап жиберүү, NAT жана кайтаруу маршруту аркылуу бир пакетти байкап, анын кайда токтогонун көрүңүз.
Туннель күйүп турат, wg show жакында болгон кол алышууну билдирет, сервердин туннель дарегине ping жасай аласыз, ал эми андан ары эч нерсе жооп бербейт. Биринчи ой — ачкычтарды кайра жаратуу же конфигурацияны кайра бөлүшүү. Бул жолдун иштеши далилденген бөлүгүн гана өзгөртөт.
Бүткөн кол алышуу эки тарап ачкычтар боюнча макулдашканын, UDP акыркы чекитке жетээрин жана крипто маршруттоо пакетти кабыл аларын айтат. Ал пакеттин кийин серверден чыга алары тууралуу эч нерсе айтпайды.
Ошондуктан божомолдоонун ордуна бир пакетти байкаңыз. Ал өлүшү мүмкүн болгон төрт жер бар, жана ар бири башка из калтырат.
Кол алышуу чындыгында эмнени далилдейт
WireGuard — Noise кол алышуусу менен сессия түзүп, анан өнөктөш үчүн пакеттерди шифрлаган UDP протоколу. wg show бир нече секунддук кол алышууну жана өсүп бара жаткан жиберүү эсептегичин көрсөтсө, акыркы чекит, ачкычтар жана өнөктөштүн ачык ачкычы баары туура.
Ал далилдебей турган нерсе: кардарыңыз интернетке багытталган трафикти интерфейске такыр жибереби, сервер аны жиберүүгө даярбы, же жооп кайтуу жолун таба алабы. Булар — ядронун маршруттоосу жана firewall чечимдери, жана алар туннелдин сыртында кабыл алынат.
Ошондуктан сервердин туннель дарегине ping жасоо ушунчалык адаштыруучу сыноо. Ал пакет сервердин өзүнө багытталган, ошондуктан ал жергиликтүү түрдө аяктайт. Ага эч качан жиберүү керек эмес, эч качан которуу керек эмес жана эч качан интернеттен кайтаруу маршруту керек эмес.
AllowedIPs — маршруттоо чечими
Кардарда AllowedIPs эки иш аткарат. Бул кайсы максат даректери ушул өнөктөштүн туннелине жиберилерин чечкен криптоачкыч маршруттоо таблицасы, жана бул өнөктөштүн сизден кабыл ала турган булак даректеринин тизмеси. Эгер кардардын конфигурациясында 10.8.0.0/24 гана көрсөтүлсө, коомдук максаттар интерфейске эч качан кирбейт жана кадимки демейки маршрутуңуз аларды туннелден сыртка алып кетет. Ошондо туннель кемчиликсиз иштейт жана каалаган нерсеңиздин эч бирин аткарбайт.
Конфигурация файлы эмне дегенине эмес, кардар чындыгында эмнени орнотконуна караңыз:
wg show wg0 allowed-ipsip route get 1.1.1.1
Экинчи буйрук — чечүүчү. Эгер жооп физикалык интерфейсиңизди жана кадимки шлюзду атаса, пакет туннелден өтпөйт жана сервер тараптагы эч бир өзгөртүү аны оңдобойт. IPv4 үчүн 0.0.0.0/0, IPv6 үчүн ::/0 өзүнчө кошуңуз; бир үй-бүлө үчүн баарын кармаган эреже экинчисин өзүнүн баштапкы жолунда калтырат, жана бул иштеген IPv4 туннелинин жана тыгылып калган IPv6 издөөнүн кеңири тараган себеби.
Пакет шлюзде кайда өлөт
Маршрут туура болсо да пакет эч жакка барбаса, ал серверге жетип, ошол жерде токтойт. Төрт текшерүү шлюздердин көбүн камтыйт.
Жиберүү. sysctl net.ipv4.ip_forward 0 кайтарышы — классикалык жооп, жана көп дистрибутивдер дагы эле демейки боюнча 0. Ал 1 болушу керек жана кайра жүктөөдө жоголуп кетүүчү буйрук менен эмес, sysctl файлында туруктуу орнотулушу керек. IPv6 жиберүүсү өзүнчө которгуч.
Чыпкалоо саясаты. Демейки drop саясаты бар FORWARD чынжыр туннелдин трафигин ыргытып, ал эми хосттун өзүнө барган трафикке жол берет, бул симптомго так туура келет. Сакталган файлды эмес, тирүү эрежелер жыйындысын окуңуз: nft list ruleset же iptables -S.
Которуу же маршруттоо. Жеке туннель даректерин колдонгон кардарларга сервердин чыгуу интерфейсиндеги булак NAT же жогорку тармак кайтарууну билген маршрутталган префикс керек. Экөөнүн ортосундагы тандоо дарек планына баш ийет. Префиксиңизди мурунтан эле кайра маршруттаган тармакка MASQUERADE кошуу зыянсыз, бирок пайдасыз, ал эми маршрут жок жерде аны калтырып коюу жоопторду маршрутталбаган жеке диапазонго багытталган бойдон калтырат.
Кайтуу жолу. Маршрутталган курулмаларда жогорку роутерге сервериңизди көрсөткөн маршрут керек. Провайдердин тармагы да муну тосуп коюшу мүмкүн: бир нече булут инстанцияда булак менен максатты текшерүүнү күйгүзөт, ал булагы инстанциянын өз дареги болуп саналбаган пакеттерди ошол текшерүү өчүрүлгөнчө үнсүз таштайт.
DNS маршруттоодон башкача ишсиз болот
Белгилүү дарекке пакет жана ат издөө — эки өзүнчө бузулуу, жана ката билдирүүлөрү карама-каршы багытта адаштырат. Эгер ping 1.1.1.1 иштеп, браузер эч нерсе жүктөй албаса, маршрут туура, ал эми аттарды чечүү туура эмес. Эгер ping өзү ишсиз болсо, DNS маанисиз жана сиз мурунку бөлүмгө кайттыңыз.
wg-quick конфигурациядагы DNS = сабынан resolver орното алат, ал эми systemd-resolved ар бир туташуу үчүн өз жүрүм-турумуна ээ. Resolver-ди туннелдин ичинде гана жеткиликтүү дарек менен алмаштырган VPN туннель кулаган учурда ар бир издөөнү ишсиз кылат, бул туннель интернетти бузуп жаткандай көрүнөт.
| Symptom | Layer to inspect |
|---|---|
| Tunnel address pings, nothing else does | Client route, then gateway forwarding |
| Public IP pings, hostnames fail | Resolver selection and reachability |
| Handshake completes, no reply ever | FORWARD policy or missing NAT on the server |
| Small requests work, large transfers stall | MTU and TCP MSS clamping |
Далил берүүчү тартип
Алгач кардар тараптагы текшерүүнү аткарыңыз, анткени бул бир буйрук жана мүмкүнчүлүктөрдүн жарымын жок кылат. Андан кийин сервер интернетке чыгуу үчүн жасалганын ырастаңыз; жеке кирүү үчүн курулган шлюз коомдук максаттар ишсиз болгондо бузулган эсептелбейт.
Серверде кардардан ping жиберип жатканда интерфейсти байкаңыз: tcpdump -ni wg0 icmp сурамды көрсөтүшү керек, ал эми tcpdump -ni eth0 icmp анын чыгып баратканын, которулган же которулбаганын көрсөтүшү керек. Эгер ал биринчисинде көрүнүп, экинчисинде эч качан көрүнбөсө, токтоо сервердин өзүндө. Эгер ал чыгып, жооп кайтпаса, маселе жогоруда, жана бул башка сүйлөшүү.
Аягында оңдоо кайра жүктөөдөн кийин да сакталышын камсыз кылыңыз. Жиберүү sysctl файлына, firewall эрежелери аларды жүктөгөн кызматка, ал эми кардар маршруттары интерфейсти көтөргөн конфигурацияга таандык, сиз унутуп кала турган shell-ге эмес. Кайра туташыңыз, ошол эки сыноону кайталаңыз жана эсептегичтер кыймылдаарын ырастаңыз.