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

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

Звездата е липсващ отговор, а не липсващ хоп

Traceroute върви навън, като изпраща сонди, чието TTL изтича с един рутер по-нататък всеки рунд. Рутер, който изхвърля изтекла сонда, би трябвало да върне съобщение ICMP Time Exceeded с името си, и инструментът печата това име. Това, което инструментът всъщност чака, е това съобщение да пристигне в рамките на таймаут. Ако рутерът отговаря от различен адрес на източника, ограничава колко често генерира грешки или изхвърля сондата без дума, рундът не дава нищо за печат.

Нито един от тези изходи не казва, че правият път е счупен. Звездата е доклад за неполучена поща, а не за празен път.

Методът на сондата решава кой филтър ще срещнете

Методът по подразбиране в Linux обикновено е UDP дестинационен порт с висок номер, tracert в Windows изпраща ICMP ехо, а на Linux може да се нареди вместо това да използва ICMP или TCP. Всеки от тях изглежда като различен вид трафик за филтър със състояние или облачна група за сигурност. Сравняването на UDP следа от една страна с ICMP следа от другата сравнява два различни експеримента. Фиксирайте метода, семейството на адресите, адреса на източника и таймаута, преди да наречете резултатите разлика.

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

Стойността на таймаута е другата половина на експеримента и лесно се пропуска в бележките. Изчакване от две секунди по задръстен път докладва звезди, където изчакване от пет секунди докладва хопове. Дръжте стойността еднаква във всички пускания, за да остане сравнението за мрежата.

Обратният път е отделен маршрут

ICMP грешката е обикновен пакет със свои източник и дестинация и се нуждае от маршрут обратно до проследяващия. Ако политиката на тунела носи LAN префиксите, но не и адреса на рутера, който е генерирал грешката, съобщението излиза по път, който не може да ви достигне. Филтрирането на отговори може да го изхвърли дори когато маршрутът съществува, защото пакетът пристига от неочакван адрес на неочакван интерфейс. Това е несъответствие в диагностичната плоскост, а не отказ на приложението.

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

Потвърдете тунела с реална заявка

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

traceroute -I -n -w 2 203.0.113.40
traceroute -T -p 443 -n -w 2 203.0.113.40
curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' --max-time 5 http://203.0.113.40:8080/health
ss -tan state established

Прочетете първо двете пускания на traceroute: ако ICMP пускането показва хопове, а TCP пускането не, разликата е в метода, не в пътя. След това вземете резултата от curl като отговор на ниво приложение, защото завършен обмен с разумен код на състоянието означава, че правият и обратният път работят за реален трафик. Списъкът със сокети показва дали връзката изобщо е установена, което никаква следа не може да ви каже.

Тунел, който носи интерактивна сесия в двете посоки, докато един traceroute печата звезди, е здрав и просто нефотогеничен. Пазете изхода от командите на всяка страна като запис и третирайте липсващите хопове като отворен въпрос за диагностиката, а не като присъда за VPN.

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