Сканаванне UDP кажа «адфільтравана»: ці ваш партнёр WireGuard сапраўды недаступны?
Аўтэнтыфікаваная проба часта не атрымлівае адказу ад здаровага партнёра. Праверце сапраўднага кліента, а затым суаднясіце слухача і шлях пакетаў на серверы.
Сканеры выводзяць адкрыта або адфільтравана для порта UDP, і выснова звычайна прыходзіць за некалькі секунд: тунель зламаны. Магчыма, так і ёсць, але сканаванне гэтага не даказала. UDP не нясе ніякага рукапаціскання злучэння, а WireGuard не адказвае на тое, што не можа аўтэнтыфікаваць, таму цішыня — гэта чаканы адказ на большасць пробаў.
Працуйце замест гэтага ад кліента вонкава і стаўцеся да сканавання як да аднаго слабага пункта даных сярод некалькіх.
Што сканер можа і не можа ўбачыць
Сканер UDP адпраўляе нагрузку і чакае. Калі вяртаецца ICMP port-unreachable, ён можа паведаміць порт як зачынены. Калі нічога не вяртаецца, вынік неадназначны па задуме: адфільтраваны шлях, адсутны хост і працуючы сэрвіс, які праігнараваў нагрузку, усе ствараюць адну і тую ж цішыню. Тры розныя станы, адзін радок вываду.
WireGuard наўмысна пагаршае гэтую неадназначнасць. Пратакол прымае пакет толькі тады, калі ён аўтэнтыфікуецца, таму проба з няправільнымі ключамі адкідаецца без адказу. Няма ні банэра, ні радка версіі, ні паведамлення пра памылку для зняцця адбітка.
Тэст TCP на тым жа нумары порта не правярае нічога звязанага. Ён задзейнічае іншага слухача, якога можа і не быць, і яго адмова нічога не кажа пра UDP.
Такім чынам, адкрытыя адфільтраваныя станы апісваюць нявызначанасць сканера дакладней, чым ваш сервер.
Прайдзіце сапраўднага кліента ад профілю ўнутр
Пачніце з уласнага погляду кліента. Ці мае інтэрфейс адрас, ці называе канфігурацыя правільную канчатковую кропку і ці рухаецца лічыльнік рукапацісканняў, калі спрабуюць злучэнне? Кліент, які ніколі не адпраўляў пакет, і кліент, чые пакеты былі адкінутыя, выглядаюць аднолькава ў акне стану. Іх адрозніваюць толькі лічыльнікі, таму спачатку чытайце лічыльнікі.
Затым назірайце за бокам сервера падчас адной дазволенай спробы, замест таго каб запускаць асобнае сканаванне з трэцяга месца:
wg show wg0 latest-handshakes
tcpdump -n -i eth0 udp port 51820 -c 10
Першая каманда паведамляе апошняе рукапацісканне на кожнага партнёра, што з'яўляецца прамым доказам таго, што аўтэнтыфікаваны абмен завяршыўся. Другая паказвае, ці даходзяць пакеты для слухача наогул, што адным крокам аддзяляе праблему шляху ад праблемы канфігурацыі.
Калі запіс нічога не паказвае, пакет ніколі не дайшоў да хоста, і канфігурацыя тунеля не падазраваная. Калі ён паказвае пакеты, якія прыходзяць з чаканага адраса, пакуль рукапацісканне застаецца на нулі, ключы або дазволеныя адрасы партнёра — наступнае месца, куды варта паглядзець.
Карэлюйце на серверы, калі вы ім кіруеце
Пацвердзіце, што слухач існуе і што брэндмаўэр правайдэра дазваляе порт UDP. Правіла брэндмаўэра хоста і група бяспекі ў хмары — два незалежныя брамы, і любая з іх можа адкінуць пакет, які дазволіла другая. Праверце абедзве супраць фактычнага порта ў канфігурацыі, а не супраць порта, які вы памятаеце.
Адрас мае такое ж значэнне, як і порт. Сервер, які слухае на пэўным адрасе, не адкажа на пакет, які прыйшоў на іншы, а хост з некалькімі інтэрфейсамі можа атрымаць пробу на інтэрфейсе, які вы не мелі на ўвазе.
Трымайце кожны тэст у межах сістэм, якія вам дазволена тэставаць. Карыснае параўнанне — паміж адной сапраўднай спробай кліента і чаканым шляхам сервера, а не шырэйшы прагляд адрасоў, якія выпадкова належаць таму ж правайдэру.
Сумленнае чытанне выніку сканавання
Сканаванне — гэта танны спосаб праверыць, што хост існуе і што порт не блакуецца відавочна прамежкавай прыладай. Гэта не доказ дасягальнасці для аўтэнтыфікаванага пратакола і зусім не тэст канфігурацыі.
Больш моцны доказ — завершанае рукапацісканне ад кліента, які вам сапраўды важны, за якім ідзе запыт, што выкарыстоўвае тунель і атрымлівае адказ. Гэтая паслядоўнасць адным разам задзейнічае ключы, дазволеныя адрасы, абодва брэндмаўэры і зваротны шлях.
Там, дзе сапраўдная спроба не ўдаецца, збой усё яшчэ трэба дыягнаставаць па лічыльніках кліента і запісе сервера, а не па чарговай пробе. Апісанне пратакола тлумачыць, чаму неаўтэнтыфікаваны пакет не атрымлівае адказу, і гэта ўся прычына неадназначнасці выніку сканавання.