Да виждате публични адреси по eth0, докато тунелът е вдигнат, изглежда като доказателство, че нещо е избягало. Обикновено е обратното: собствените пакети на тунела трябва да пресекат този адаптер, за да стигнат до сървъра, и изглеждат като обикновени потоци UDP или TCP. Вътрешният пакет се появява само на устройството на тунела. Да различите двете е въпрос на четене на обвивката, не на вяра в броя байтове.

Всеки пакет на тунела все пак пресича кабела

Тунелът е интерфейс, а не кабел. Клиентът взема вътрешен пакет, обвива го и изпраща резултата към адреса и порта на сървъра от профила. На физическия адаптер виждате обвивката; на устройството на тунела виждате това, което е било обвито.

В режим UDP външният поток е една двойка адрес и порт във всяка посока, затова здравословният тунел изглежда почти скучен по eth0. Точно тази единствена двойка е първото, което да търсите.

Улавяйте един интерфейс наведнъж

Улавяйте един интерфейс наведнъж, когато смятате да сравнявате бройки. Псевдоинтерфейсът any събира всички устройства наведнъж, затова препратен пакет се появява на входа и изхода, а локално генериран се появява два пъти в два различни вида. Равни бройки пакети при неравни бройки байтове са нормални, защото обвивката е по-голяма от това, което носи. ARP, DHCP и обявите на маршрутизатор IPv6 принадлежат към локалната връзка и не казват нищо за приложението ви.

sudo tcpdump -i eth0 -n host 203.0.113.10 and udp port 1194

Заменете адреса и порта със собствените стойности от профила. Ако този поток е постоянен, тунелът носи нещо.

Попитайте ядрото кое устройство избира

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

ip route get 1.1.1.1
ip -6 route get 2606:4700:4700::1111

Раздвоеният резултат е обичайната находка: IPv4 отива към тунела, а IPv6 отива към физическия адаптер, защото профилът е изпратил само маршрути IPv4. Това е истинско изтичане и то е невидимо при улавяне само на IPv4. Филтрирайте IPv6 и следете за адреси, които не са сървърът и не са link-local.

Изпълнете и двете търсения преди и след свързване, за да видите какво клиентът наистина е променил. Разликата между двата пъти е реалният ефект на клиента.

Когато улавянето наистина е изтичане

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

Поправете маршрута или изключението, не защитната стена. След това уловете отново от нова връзка и проверете IPv4 и IPv6 поотделно, защото поправянето на едното не казва нищо за другото. Ръководството за tcpdump описва селекторите за интерфейс и посока, използвани по-горе.

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