Как да стартирате Traceroute на Windows, Mac и Linux
A traceroute е мрежова диагностична помощна програма, която картографира точния път, по който IP пакетите пътуват от вашата машина до целевия хост, записвайки всеки междинен рутер (хоп) по пътя и измервайки времето за двупосочна комуникация (RTT) до всеки от тях. Това е най-ефективният инструмент за установяване дали скок на латентност, загуба на пакети или аномалия в маршрутизирането произхожда от вашата локална мрежа, инфраструктурата на вашия ISP, транзитна магистрала или самия целеви сървър.
Когато стартирате traceroute, вашата система изпраща серия от пробни пакети с постепенно нарастващи стойности на TTL (Time To Live). Всеки рутер, който намалява TTL до нула, връща ICMP съобщение „Time Exceeded”, разкривайки своята идентичност и времето за отговор. Този механизъм е това, което прави traceroute принципно различен от обикновен `ping` — той разкрива пълната топология на маршрутизиране, а не само достижимостта от край до край.
Как работи Traceroute под капака
Разбирането на основните механизми предотвратява погрешното тълкуване на резултатите — грешка, която дори опитни администратори допускат.
- Windows (`tracert`) изпраща пакети ICMP Echo Request по подразбиране.
- Linux и macOS (`traceroute`) изпращат UDP дейтаграми към портове с високи номера (33434+) по подразбиране, въпреки че това е конфигурируемо.
- Всяка проба се изпраща три пъти на хоп, произвеждайки три RTT измервания на ред.
- Рутер, който ограничава скоростта или изхвърля ICMP/UDP, ще показва звездички (`* * *`), но това не означава непременно, че пътят след него е прекъснат.
Тази разлика в поведението между операционните системи е критична: хоп, който изглежда неотговарящ на Linux, може да отговаря нормално на Windows, просто защото ACL на рутера блокира UDP, но разрешава ICMP.
Как да стартирате Traceroute на Windows
Стъпка 1: Отворете Command Prompt
Натиснете `Win + R`, въведете `cmd` и натиснете Enter. Алтернативно, потърсете Command Prompt в менюто Start. За среди, където ICMP е ограничен, помислете за стартиране като Administrator.
Стъпка 2: Изпълнете командата
“`
tracert example.com
“`
Заменете `example.com` с целевото домейн име или IP адрес. Windows разрешава името на хоста до IP преди изпращането на първата проба.
Стъпка 3: Прочетете изхода
“`
Tracing route to example.com [93.184.216.34] over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 192.168.0.1
2 10 ms 11 ms 10 ms 10.0.0.1
3 15 ms 16 ms 15 ms isp.gateway.net [203.0.113.1]
4 * * * Request timed out.
5 22 ms 21 ms 23 ms core1.backbone.net [198.51.100.5]
“`
Основни опции на `tracert` в Windows
| Флаг | Функция |
|---|---|
| — | — |
| `-d` | Пропуска обратните DNS справки, значително ускорява изхода |
| `-h <max_hops>` | Задава максималния брой хопове (по подразбиране: 30) |
| `-w <timeout>` | Задава времето за изчакване в милисекунди на проба (по подразбиране: 4000 ms) |
| `-4` | Принудително използва IPv4 |
| `-6` | Принудително използва IPv6 |
Пример с опции:
“`
tracert -d -h 20 -w 2000 example.com
“`
Професионален съвет: На Windows, `tracert -d` е най-бързият начин за получаване на резултати, когато ви интересува само маршрутизирането на IP ниво, а не имената на хостовете. Обратните DNS справки могат да добавят няколко секунди на хоп в претоварени мрежи.
Как да стартирате Traceroute на macOS
Стъпка 1: Отворете Terminal
Натиснете `Command + Space`, въведете Terminal и натиснете Enter. Или навигирайте до Applications > Utilities > Terminal.
Стъпка 2: Изпълнете командата
“`
traceroute example.com
“`
macOS се доставя с предварително инсталиран `traceroute` като част от своя BSD мрежов инструментариум. Не се изисква допълнителна инсталация.
Стъпка 3: Прочетете изхода
“`
traceroute to example.com (93.184.216.34), 64 hops max, 52 byte packets
1 192.168.0.1 (192.168.0.1) 1.206 ms 0.930 ms 0.799 ms
2 10.0.0.1 (10.0.0.1) 10.123 ms 10.456 ms 10.678 ms
3 isp.gateway.net (203.0.113.1) 15.789 ms 15.012 ms 15.234 ms
“`
Забележете, че macOS по подразбиране използва максимум 64 хопа спрямо 30 на Windows — от значение при проследяване на пътища до географски отдалечени или сложни мрежови дестинации.
Основни опции на `traceroute` в macOS
| Флаг | Функция |
|---|---|
| — | — |
| `-n` | Потиска разрешаването на имена на хостове, показва само необработени IP адреси |
| `-q <nqueries>` | Променя броя на пробите на хоп (по подразбиране: 3) |
| `-m <max_ttl>` | Задава максималния TTL / брой хопове |
| `-w <waittime>` | Изчакване в секунди на проба |
| `-I` | Използва ICMP Echo вместо UDP (полезно когато UDP е блокиран) |
| `-T` | Използва TCP SYN проби (изисква root; заобикаля много защитни стени) |
Пример — ICMP режим за заобикаляне на UDP филтриране:
“`
sudo traceroute -I example.com
“`
Пример — TCP SYN режим на порт 80 (най-съвместим с защитни стени):
“`
sudo traceroute -T -p 80 example.com
“`
Как да стартирате Traceroute на Linux
Стъпка 1: Отворете Terminal
Натиснете `Ctrl + Alt + T` или намерете терминала в стартовия панел на приложенията.
Стъпка 2: Инсталирайте `traceroute` ако е необходимо
При много минимални или сървърни Linux дистрибуции, `traceroute` не е инсталиран по подразбиране.
Debian / Ubuntu:
“`
sudo apt-get install traceroute
“`
CentOS / RHEL / AlmaLinux / Rocky Linux:
“`
sudo yum install traceroute
“`
Fedora:
“`
sudo dnf install traceroute
“`
Arch Linux:
“`
sudo pacman -S traceroute
“`
Стъпка 3: Изпълнете командата
“`
traceroute example.com
“`
Стъпка 4: Прочетете изхода
“`
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
1 192.168.0.1 (192.168.0.1) 0.728 ms 0.457 ms 0.373 ms
2 10.0.0.1 (10.0.0.1) 9.862 ms 9.946 ms 10.123 ms
3 isp.gateway.net (203.0.113.1) 14.987 ms 14.123 ms 15.456 ms
“`
Основни опции на `traceroute` в Linux
| Флаг | Функция |
|---|---|
| — | — |
| `-n` | Деактивира обратното DNS разрешаване |
| `-I` | Изпраща ICMP Echo проби (изисква root) |
| `-T` | Изпраща TCP SYN проби (изисква root) |
| `-U` | Изпраща UDP проби (поведение по подразбиране) |
| `-p <port>` | Задава целевия порт |
| `-m <max_ttl>` | Максимален брой хопове |
| `-q <nqueries>` | Брой проби на хоп |
| `-A` | Отпечатва AS (Autonomous System) номера до всеки хоп |
Флагът `-A` е особено мощен за диагностициране на проблеми с маршрутизирането между AS — той показва кой ISP или мрежов оператор притежава всеки хоп, позволявайки ви да установите точно къде предаването между оператори причинява латентност.
“`
traceroute -A example.com
“`
`mtr` — По-добрата алтернатива в Linux
За продължаваща или интерактивна диагностика, `mtr` (Matt’s Traceroute) комбинира `ping` и `traceroute` в непрекъснато обновяващ се дисплей. Това е предпочитаният инструмент сред мрежовите инженери за анализ на загуба на пакети в реално време.
“`
sudo apt-get install mtr
mtr example.com
“`
`mtr` натрупва статистика с течение на времето, правейки видима периодичната загуба на пакети — нещо, което еднократен `traceroute` ще пропусне напълно.
Сравнение между платформи: tracert срещу traceroute
| Функция | Windows (`tracert`) | macOS (`traceroute`) | Linux (`traceroute`) |
|---|---|---|---|
| — | — | — | — |
| Протокол на пробата по подразбиране | ICMP Echo Request | UDP | UDP |
| Максимален брой хопове по подразбиране | 30 | 64 | 30 |
| Проби на хоп по подразбиране | 3 | 3 | 3 |
| Размер на пакета (по подразбиране) | 40 bytes | 52 bytes | 60 bytes |
| ICMP режим | По подразбиране | Флаг `-I` (root) | Флаг `-I` (root) |
| TCP SYN режим | Не е налично нативно | Флаг `-T` (root) | Флаг `-T` (root) |
| Търсене на AS номер | Не е налично | Не е налично | Флаг `-A` |
| IPv6 поддръжка | Флаг `-6` | Команда `traceroute6` | Флаг `-6` |
| Вградено в ОС | Да | Да | Често изисква инсталация |
Разбиране на изхода от Traceroute: Техническо разбиване
Номер на хоп
Всеки ред представлява един рутер в пътя. Хоп 1 е почти винаги вашият шлюз по подразбиране (домашен рутер или LAN суич). Хоп 2 обикновено е първата точка за агрегиране на вашия ISP.
Времена за отговор (RTT)
Показват се три RTT стойности на хоп. Здравословните стойности обикновено следват модел на постепенно нарастване с натрупването на географско разстояние между хоповете. Внезапен скок от 50+ ms при конкретен хоп, който продължава при всички следващи хопове, указва реален тесен участък при този възел.
Интерпретиране на `* * *` (Звездички)
Звездичките означават, че пробата е изтекла — рутерът не е върнал ICMP отговор в рамките на прозореца за изчакване. Това не е автоматично проблем. Много корпоративни рутери и магистрални възли депrioritизират или мълчаливо изхвърлят ICMP/UDP пробни пакети по съображения за сигурност, докато продължават да препращат трафика нормално. Ако хоповете след звездичките показват нормални RTT стойности, пътят е непокътнат.
Висока латентност при единичен хоп
Ако хоп 7 показва 200 ms, но хоп 8 показва 25 ms, показанието от 200 ms почти сигурно е ICMP ограничаване на скоростта при рутера на хоп 7 — не реален тесен участък. Рутерът обработва пробата с нисък приоритет, докато препраща действителния трафик с пълна скорост. Винаги оценявайте тенденциите на латентност по целия път, а не отделни хопове изолирано.
Асиметрично маршрутизиране
Traceroute картографира само пътя напред. Пакетите за връщане може да следват напълно различен маршрут. Това означава, че скок на латентност, който наблюдавате, може да произхожда от пътя за връщане, а не от показания път напред. За пълна видимост са необходими инструменти като `traceroute` в двете посоки (от източника и от дестинацията).
Маршрутизиращи цикли
Ако един и същ IP адрес се появява при множество последователни хопове, съществува маршрутизиращ цикъл. Пакетите се препращат между два рутера безкрайно, докато TTL изтече. Това е неправилна конфигурация и ще причини пълен срив на свързаността до тази дестинация.
Чести сценарии с Traceroute и какво означават те
Сценарий 1: Висока латентност, започваща от хоп 2
Първата точка за агрегиране на вашия ISP е претоварена. Това е извън вашия контрол. Документирайте изхода с времеви маркери и се свържете с вашия ISP с доказателства.
Сценарий 2: Всички хопове след хоп 5 показват `* * *`, но дестинацията отговаря на ping
Рутерите нагоре по веригата на дестинацията блокират ICMP проби. Превключете към TCP SYN режим (`-T -p 443`), за да проследите през защитни стени.
Сценарий 3: Скокове на латентност при хоп, намиращ се в неочаквана държава
Вашият трафик се маршрутизира международно преди да достигне локална дестинация — BGP аномалия в маршрутизирането. Това е често срещано при неправилно конфигуриран anycast или лошо свързани ISP.
Сценарий 4: Traceroute завършва, но уебсайтът все още е бавен
Тесният участък може да е от страна на сървъра: претоварен CPU, бавен отговор на приложението или латентност на базата данни. Traceroute измерва само производителността на мрежовия слой. Ако хоствате на VPS и изпитвате това, проверете използването на ресурсите на сървъра с `top`, `htop` или `vmstat`.
Сценарий 5: Traceroute никога не завършва (спира при конкретен хоп за неопределено време)
Защитна стена изхвърля вашите проби и дестинацията е недостижима. Потвърдете с `ping` до дестинацията. Ако ping също се проваля, хостът е изключен или блокира целия ICMP. Ако ping успее, само протоколът на пробата е блокиран — превключете протоколи.
Traceroute за диагностика на сървъри и хостинг
Traceroute е незаменим при диагностициране на проблеми със свързаността между вашата инфраструктура и крайните потребители или между услугите. Ако изпълнявате приложения на Dedicated Server, traceroute от множество географски разпределени гледни точки разкрива дали латентността е локализирана в конкретен регион или ISP.
За уеб хостинг среди, управлявани чрез контролен панел, проследяването на маршрути до IP адреса на вашия сървър от страна на клиента помага да се разграничи проблем на хостинг слоя от проблем с мрежовия транзит. Администраторите, използващи VPS с cPanel, могат да съпоставят данните от traceroute с регистрационните файлове за достъп от страна на сървъра, за да изградят пълна картина на оплакване за свързаност.
При диагностициране на неуспехи при доставка на имейли или SMTP изчаквания, стартирането на traceroute до IP адреса на вашия пощенски сървър е логична първа стъпка преди разследване на SPF/DKIM записи. Ако използвате специализирана услуга Email Hosting, това помага да потвърдите дали проблемът е на мрежово ниво или на ниво конфигурация.
За натоварвания, чувствителни към латентност, като извод на машинно обучение или рендиращи конвейери, изпълнявани на GPU Hosting, traceroute помага да се провери дали мрежовият път между вашия клиент и GPU възела е оптимално маршрутизиран без неочаквани транзитни хопове.
Разширени техники: Онлайн и разпределен Traceroute
Traceroute от единична точка показва само пътя от вашата машина. За цялостен мрежов анализ:
- Looking Glass сървъри: Много ISP и IXP оперират публични looking glass сървъри, които ви позволяват да стартирате traceroute от техния мрежов ръб, разкривайки пътя от перспективата на оператора.
- BGP.tools / RIPE Atlas: Разпределени платформи за измерване, които стартират traceroute от стотици глобални гледни точки едновременно, разкривайки регионални аномалии в маршрутизирането, невидими от единично местоположение.
- PathPing (Windows): Вграден инструмент на Windows, който комбинира `ping` и `tracert`, изпълнявайки непрекъснати проби до всеки хоп и изчислявайки статистика за загуба на пакети. Стартирайте с: `pathping example.com`
- WinMTR: Графичен Windows еквивалент на `mtr`, предоставящ статистика за загуба на пакети и латентност на хоп в реално време.
Практическа матрица за решения: Кой инструмент да използвате
| Ситуация | Препоръчан инструмент |
|---|---|
| — | — |
| Бърза еднократна проверка на пътя в Windows | `tracert -d target` |
| Бърза еднократна проверка на пътя в Linux/macOS | `traceroute -n target` |
| Продължаващ/реално-времеви анализ на загуба на пакети | `mtr target` |
| Цел зад защитна стена, блокираща ICMP/UDP | `traceroute -T -p 443 target` (Linux/macOS) |
| Идентифициране кой ISP притежава всеки хоп | `traceroute -A target` (Linux) |
| Диагностика от множество глобални местоположения | RIPE Atlas или BGP.tools |
| Статистика за непрекъснати загуби в Windows | `pathping target` |
| Сравняване на пътищата напред и назад | Стартирайте traceroute от двата края |
Основни технически изводи
- Винаги използвайте `-n` или `-d` първо, за да елиминирате закъсненията при DNS разрешаване и да получите необработени резултати по-бързо.
- Хоп, показващ `* * *`, не указва прекъснат път — оценете хоповете, които го следват.
- Латентността при единичен междинен хоп често е ICMP ограничаване на скоростта, а не реален тесен участък.
- Превключвайте протоколи на пробите (ICMP, UDP, TCP SYN), когато срещате постоянни изчаквания — защитните стени са избирателни по протокол.
- Използвайте `mtr` вместо `traceroute` за всяка диагностична сесия, по-дълга от единична проверка.
- Traceroute разкрива само пътя напред. Асиметричното маршрутизиране изисква двупосочен анализ.
- Флагът `-A` в Linux traceroute добавя анотация с AS номер, което е от съществено значение за анализ на маршрутизирането с множество ISP.
- Документирайте изходите от traceroute с времеви маркери при подаване на заявки за поддръжка към ISP — операторите изискват тези данни за разследване на проблеми на BGP ниво.
Често задавани въпроси
Защо traceroute показва `* * *` за някои хопове, но дестинацията все още е достижима?
Рутерите по пътя са конфигурирани да изхвърлят или ограничават скоростта на ICMP TTL-exceeded съобщенията, докато продължават да препращат трафика нормално. Това е умишлена политика за сигурност и производителност при повечето корпоративни рутери и рутери от клас на оператора. Не указва загуба на пакети по пътя на данните.
Каква е разликата между `tracert` в Windows и `traceroute` в Linux?
Основната разлика е протоколът на пробата по подразбиране: `tracert` използва ICMP Echo Requests, докато Linux/macOS `traceroute` използва UDP дейтаграми. Това означава, че те взаимодействат по различен начин със защитни стени и ACL. Linux `traceroute` също поддържа TCP SYN проби и търсене на AS номера, което `tracert` не поддържа.
Как да стартирам traceroute през защитна стена, която блокира UDP и ICMP?
Използвайте TCP SYN режим с порт, който почти сигурно е отворен на целта, като порт 80 или 443: `sudo traceroute -T -p 443 example.com`. TCP SYN пробите преминават през повечето stateful защитни стени, защото приличат на началото на легитимна връзка.
Какво означава, когато латентността на traceroute внезапно скача и остава висока за всички останали хопове?
Постоянното нарастване на латентността от конкретен хоп нататък указва реален тесен участък или претоварена връзка в тази точка на пътя. Това се различава от скок при единичен хоп (който обикновено е ограничаване на скоростта). Устойчивото нарастване означава, че целият трафик се забавя при този възел или веднага след него.
Може ли traceroute да диагностицира бавна производителност на уебсайт?
Traceroute диагностицира само латентност на мрежовия слой и проблеми с маршрутизирането. Ако мрежовият път изглежда чист, но уебсайтът все още е бавен, проблемът е от страна на сървъра — време за обработка на приложението, латентност на заявките към базата данни или изчерпване на ресурсите. Използвайте инструменти за мониторинг на сървъра заедно с traceroute за пълна диагностика.
