Броячите на изпращане, които растат, докато броячът на получаване остава нула, описват посока, а не диагноза. Същото отчитане се появява, когато партньорът никога не е завършил ръкостискането, когато дестинацията е избрала грешния партньор, когато далечната страна няма маршрут обратно и когато филтър изпусне отговора по пътя му към дома. Всяко от тези се поправя на различно място.

Сравнението, което съкращава работата, е между заявка, която никога не е напуснала тунела, и отговор, който никога не се е върнал. Едно прихващане на правилния интерфейс решава между тях.

Броячите описват обем, а не посоката на повредата

Броячите на WireGuard записват какво интерфейсът е предал на партньора и какво е получил от него. Те не казват коя дестинация, кой партньор или коя половина от обмена се е провалила. Фоновият трафик прави сумите още по-малко информативни, тъй като част от байтовете може да са сигнали за поддържане на връзката или несвързани потоци. Четете ги като индикатор, че интерфейсът е активен, и след това спрете да ги третирате като доказателство.

Полезният първи факт е дали ръкостискането е актуално. Без него нищо не е било криптирано за този партньор и броячът на получаване няма причина да се движи.

Избор на партньор или път за отговора: две обяснения

Първото обяснение е, че пакетът никога не е достигнал до предвидения партньор, защото маршрутът сочеше другаде или разрешените префикси на партньора не покриваха дестинацията. Второто е, че пакетът е пристигнал и отговорът не е могъл да се върне, което е проблем с маршрутизацията в далечния край. Таблицата ги разделя по това какво ще наблюдавате във всяка точка.

ObservationPoints to
No handshake while transmit climbsPeer selection or endpoint
Handshake current, request visible on the serverReply path or far-side route
Request never visible on the serverAllowed prefixes or local route
Both packets visible, nothing reaches the clientReturn 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, а не в тунела. Ако само големите преноси зациклят, разгледайте размера на пакета отделно.

Подобни статии