Чи використовує traceroute UDP або ICMP або те і інше?


24

Коли я роблю слід на домені www.google.com зі свого ноутбука, чи використовую я icmp чи udp?
Я думав, що це тип icmp 11, але під час пошуку чогось іншого я натрапив на правила, де використовується тип icmp type 30, і я побачив правила, де використовується udp.
Хтось може мені пояснити, як це працює?
Я працюю над брандмауером (iptables) для віртуального виділеного сервера.

Відповіді:


26

Тип надісланого пакету відрізняється залежно від реалізації. За замовчуванням Windows tracertвикористовує ICMP, і Mac OS X і Linux tracerouteвикористовують UDP. Я не маю під рукою машин BSD або Solaris або будь-якої іншої ОС, але на головній сторінці для версії Mac OS X згадується її походження BSD 4.3.

Версії Mac і Linux, які я пропоную, мають можливість вибирати різні протоколи, включаючи пакети ICMP, TCP, UDP та GRE. Інші протоколи можна вказати своїм ім'ям або номером, але traceroute нічого не знає про те, як працюють інші протоколи. Це просто сліпо посилає їх.

Вони також можуть змінювати корисне навантаження та вихідний порт і порти призначення, щоб уникнути брандмауерів або виявити, який маршрутизатор уздовж шляху скидає пакети певного розміру.

Усі версії traceroute покладаються на відповіді ICMP типу 11 (перевищено час) від кожного скаку по маршруту. Якщо відповіді ICMP типу 11 заблоковані вашим брандмауером, трасування не буде працювати. Ці пакети є вхідними, а не вихідними.

Тип 30 ICMP спеціально призначений для traceroute і позначений як "Запит на інформацію". Мені не вдалося знайти ніде, де це фактично використовується. На головній сторінці версій Mac OS X та Linux зазначено, що -Iбуде надіслано ICMP типу 8 (ехо-запит). У Вікіпедії зазначається, що Windows tracertтакож використовує ICMP запити ехо. ICMP типу 30 або 8 - це вихідні пакети, а не вхідні.

ICMP типу 0 (ехо-відповідь) може повернутися як самий останній пакет, коли TTL точно дорівнює кількості стрибків. Traceroute дізнається, що він закінчився, коли отримає один із них. Це вхідний пакет.

TCP SYN- пакети викликають або RSTпакет, або SYN ACKпакет у відповідь, коли вони досягнуть свого призначення. Якщо ви отримуєте SYN ACKпакет, ввічливо слідкувати за RSTпакетом, щоб не залишати напіввідкрите з'єднання на сервері.

Можливо повернути відповіді ICMP типу 3 коду 4 замість відповідей типу ICMP 11, якщо ви надішліть великий пакет із набором прапора "Не фрагментуйте", однак це, ймовірно, лише дозволить вам знайти скачок з найменшим MTU . Зазвичай ви отримаєте таку відповідь лише з одного стрибка по маршруту. Не всі вони.


8

Традиційна traceroute використовує UDP для збільшення портів для кожного хопу.

Ви можете використовувати будь-який тип пакету для його реалізації - ICMP, TCP SYN тощо. Все, що потрібно, - це закінчення терміну дії пакету IP, і ви золоті.

Різні реалізації, як-от MacOS, пропонують підтримку декількох типів traceroute, а також режими, які не збільшують порти тощо, щоб обійти обмеження брандмауера.


7
Порти UDP за замовчуванням для unix-подібної реалізації складають від 33434 до 33534. В реалізаціях ICMP використовується "запит ехо" (тип 8).
Ouki
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.