WireGuard адпраўляе даныя, але не атрымлівае адказу: які бок?
Лічыльнік адпраўкі, які расце, — гэта кірунак, а не дыягназ. Вызначце, ці запыт не пакідаў тунель, ці адказ не вярнуўся, перш чым нешта змяняць.
Лічыльнікі адпраўкі, якія растуць, пакуль лічыльнік прыёму застаецца на нулі, апісваюць кірунак, а не дыягназ. Такое ж паказанне ўзнікае, калі суразмоўца ніколі не завяршыў рукапацісканне, калі пункт прызначэння выбраў не таго суразмоўцу, калі ў далёкага боку няма маршруту назад і калі фільтр скідае адказ на шляху дадому. Кожны з гэтых выпадкаў выпраўляецца ў іншым месцы.
Параўнанне, якое скарачае працу, — гэта запыт, які ніколі не пакідаў тунель, супраць адказу, які ніколі не вярнуўся. Адзін перахоп на правільным інтэрфейсе вырашае паміж імі.
Лічыльнікі апісваюць аб’ём, а не кірунак няспраўнасці
Лічыльнікі WireGuard запісваюць, што інтэрфейс перадаў суразмоўцу і што атрымаў ад яго. Яны не кажуць, які пункт прызначэння, які суразмоўца або якая палова абмену не спрацавала. Фонавы трафік робіць вынікі яшчэ менш інфарматыўнымі, бо некаторыя байты могуць быць сігналамі падтрымання сувязі або не звязанымі патокамі. Чытайце іх як паказчык таго, што інтэрфейс актыўны, а затым перастаньце ставіцца да іх як да доказаў.
Карысны першы факт — ці рукапацісканне актуальнае. Без яго для гэтага суразмоўцы нічога не было зашыфравана і лічыльнік прыёму не мае прычыны рухацца.
Выбар суразмоўцы або шлях адказу: два тлумачэнні
Першае тлумачэнне: пакет ніколі не дасягнуў патрэбнага суразмоўцы, бо маршрут паказваў у іншае месца або дазволеныя прэфіксы суразмоўцы не пакрывалі пункт прызначэння. Другое: пакет дайшоў, а адказ не мог вярнуцца, і гэта праблема маршрутызацыі на далёкім баку. Табліца раздзяляе іх па тым, што вы ўбачыце ў кожным пункце.
| Observation | Points to |
|---|---|
| No handshake while transmit climbs | Peer selection or endpoint |
| Handshake current, request visible on the server | Reply path or far-side route |
| Request never visible on the server | Allowed prefixes or local route |
| Both packets visible, nothing reaches the client | Return filter or translation |
Чытайце табліцу зверху. Адсутнасць рукапаціскання накіроўвае вас да ключоў, канчатковых пунктаў і знешняга шляху, бо болей нічога даследаваць пакуль няма. Актуальнае рукапацісканне з бачным запытам на серверы пераносіць праблему ў зваротны кірунак, дзе вырашае ўласная табліца маршрутаў пункта прызначэння. Запыт, які ніколі не з’яўляецца на серверы, — гэта праблема выбару, і дазволеныя прэфіксы на абодвух баках — першае, што трэба параўнаць.
Два з гэтых чатырох радкоў выпраўляюцца на кліенце, а два — на серверы. Веданне, у якой пары вы знаходзіцеся, — гэта большая частка працы.
Дзе знікаюць адказы
Адказ пакідае пункт прызначэння, дасягае тунельнага інтэрфейса сервера і шыфруецца для суразмоўцы, дазволеныя адрасы якога супадаюць з унутраным адрасам кліента. Калі гэта супадзенне не ўдаецца, адказ адкідаецца моўчкі, што з боку кліента выглядае як звычайны збой сеткі. Калі адказ зашыфраваны і ўласны фільтр кліента адхіляе яго, сімптом зноў той самы. У абодвух выпадках патрэбен перахоп, а не лічыльнік.
Наймацнейшая форма гэтай памылкі — сервер, які перасылае пакеты за кліента, але не мае маршруту назад да ўнутранага дыяпазону кліента. Ён прымае запыт, адпраўляе адказ да свайго шлюза па змаўчанні, і тунель гэтага ніколі не бачыць. Шырокае правіла перакладу, дададзенае на серверы, хавае гэтую няспраўнасць замест таго, каб выправіць маршрут.
Праверце адзін пункт прызначэння ад пачатку да канца
Выберыце адзіны пункт прызначэння ўнутры дыяпазону суразмоўцы і праверце яго, пакуль рукапацісканне відавочна актуальнае. Каманды ніжэй чытаюць стан суразмоўцы, выбраны маршрут і абодва бакі абмену. Запускайце перахоп на інтэрфейсе, які фактычна выкарыстоўваюць зашыфраваныя пакеты.
wg show wg0 latest-handshakes
wg show wg0 transfer
ip route get 10.60.9.5
sudo tcpdump -ni wg0 host 10.60.9.5
Перахоп, які паказвае запыт на тунельным інтэрфейсе без нічога ў адказ, — гэта адказ з боку сервера, і табліца маршрутаў пункта прызначэння — наступнае месца, куды трэба глядзець. Калі не з’яўляецца наогул нічога, пакет пайшоў іншым шляхам, таму падазроным з’яўляецца лакальны маршрут. Абмен, бачны ў абодвух перахопах без прагрэсу ў праграме, пераносіць пытанне да памеру пакета або да фільтра, якога статыстыка інтэрфейса ніколі не паказвае. Трымайце ў тэсце адзін пункт прызначэння і аднаго кліента, бо другая зменная зноў пераўтварае доказ ва ўражанне.
Калі імёны не працуюць, а дазволены адрас працуе, адказ у DNS, а не ў тунелі. Калі застойваюцца толькі вялікія перадачы, даследуйце памер пакета асобна.