Туннель сервер адегенде бир нерсе жөнөткөндөн кийин гана иштеп жаткандай көрүнөт. Кардардан баштаңыз — эч нерсе болбойт, бир нече секунд күтүңүз, кайра аракет кылыңыз — жана ийгилик болот. Адаттагы диагноз — бузулган NAT, жана адаттагы диагноз туура эмес. Өзгөргөн нерсе — бир тарап экинчисинин кайда экенин билди.

Акыркы чекитти билүү, жетүү мүмкүнчүлүгү эмес

WireGuard тарабы кайда жөнөтүүнү билмейинче кол алышууну баштабайт. Конфигурация муну дарек жана порттон турган акыркы чекит катары берет, ал эми иштеп жаткан абал азыр ишенген акыркы чекитин көзөмөлдөйт.

wg show ошол көрүнүштүн эки тарабын тең чыгарат, ал эми чыгарылышта акыркы чекити жок тарап, анын ачык ачкычы жана уруксат берилген префикстери канчалык туура болсо да, эч нерсе баштай албайт. Каалаган эрежени өзгөртүүдөн мурун кардардын көз карашын сервердики менен салыштырыңыз, анткени экөө ким эмнени билери боюнча көп учурда макул болушпайт.

Тарап акыркы чекитти кантип үйрөнөт

WireGuard атайылап үнсүз. Туура аутентификацияланган пакет тарап күтпөгөн даректен келгенде, ишке ашыруу ошол тараптын акыркы чекитин жаңы булакка жаңыртат, жана тармактарды алмаштырган ноутбукта роуминг ушундай иштейт. Бул жүрүм-турум багытка көз карандылыкты түшүндүрөт: эгер сервер биринчи жөнөтсө жана анын пакети кардарга жетсе, кардар сервердин учурдагы дарегин билип, жооп бере алат. Ошого чейин анын жөнөтө турган жери жок. Механизм биринчи колдонуудагы ишенимдин кыска жолу эмес, аутентификацияланган роуминг, анткени пакет акыркы чекит жылганга чейин жарактуу болушу керек эле.

wg куралдарынын документтери ошол жаңыртууну сүрөттөйт, жана анын айланасында долбоорлой турган болсоңуз, бир жолу окуган жөн.

Абалды сактаган котормо өз багытын кошот

UDP которгон шлюздан өткөндө, шлюз өзү көргөн биринчи пакет үчүн абал түзөт. RFC 4787 ошол жүрүм-турумду жана акырында картаны алып салуучу убакыт чектерин сүрөттөйт. Активдүү эмес картанын мөөнөтү бүтөт, жана алыскы тараптан келген кирүүчү пакетти шлюз хостко жетпей туруп таштайт. Бүт таң бою иштеген туннель так ушул себептен түштөн кийин жооп берүүнү токтотот.

Бул ошол эле багыттык симптомду пайда кылган экинчи жана көз карандысыз механизм. Акыркы чекитти билүү да, котормо абалы да туура болушу керек, жана бирөөнү оңдоо экинчисин оңдобойт.

Чындап каалаган багытты конфигурациялаңыз

Байланышты баштоого тийиш болгон кардар үчүн сервердин акыркы чекитин кардардын тараптар бөлүмүнө коюп, ошол жерде калтырыңыз. Сервер биринчи жөнөтөт деп ишенүү — тынч тармакта өзгөрө турган трафик тартибинин кокустугуна ишенүү. Конфигурация көздөлгөн багытты жарыялоосу керек, аны ачуу эмес.

Котормонун артындагы жеткиликтүү бойдон калууга тийиш болгон тарап үчүн ошол жакта туруктуу keepalive күйгүзүңүз. Ар 25 секунд сайын keepalive — адаттагы баштапкы маани, анын максаты туннелди текшерүү эмес, картаны ачык кармоо. Аны алып жүрүүчү бир тарапты тандаңыз, анткени эки жакта күйгүзүү натыйжаны жакшыртпай трафик менен журналдын ызы-чуусун эки эсе көбөйтөт.

Абалды триггерге чейин жана андан кийин салыштырыңыз

Ийгиликсиз болгон учурда эки көрүнүштү жазып алыңыз, анан сервер жөнөткөндөн кийин дагы. Биринчи буйрук акыркы чекиттерди жана кол алышуунун жашын көрсөтөт. Экинчиси порт үчүн котормо жазуусу бар-жогун көрсөтөт. Жазуу кайсы багыт чындыгында зымдан өткөнүн көрсөтөт, ал эми маршрут текшерүүсү кардар бул трафикти таптакыр башка жакка жөнөтпөй турганын ырастайт.

wg show
conntrack -L -p udp 2>/dev/null | grep 51820
tcpdump -ni any -c 20 'udp port 51820'
ip route get 198.51.100.7

Акыркы чекиттин тилкесин жана котормо жазуусун чогуу жазыңыз. Акыркы чекити жок тарап жана картасы жок шлюз — эки башка бузулуу. Алардын бирөөнү гана keepalive оңдойт.

Тектеш макалалар