Чому я можу простежити цю IP-адресу, але не пінг?


21

Я маю IP-адресу і можу простежити її, але не можу пінг.

Розумієте, я можу простежити 43.224.226.50:

dele-MBP:~ ll$ traceroute 43.224.226.50
traceroute to 43.224.226.50 (43.224.226.50), 64 hops max, 52 byte packets
 1  router.asus.com (192.168.2.1)  2.082 ms  1.039 ms  0.924 ms
 2  100.64.0.1 (100.64.0.1)  3.648 ms  3.795 ms  3.955 ms
 3  118.112.212.225 (118.112.212.225)  4.252 ms  4.569 ms  4.168 ms
 4  171.208.203.73 (171.208.203.73)  6.378 ms
    171.208.198.25 (171.208.198.25)  6.943 ms
    171.208.203.61 (171.208.203.61)  7.055 ms
 5  202.97.36.225 (202.97.36.225)  38.149 ms
    202.97.36.221 (202.97.36.221)  39.949 ms
    202.97.36.225 (202.97.36.225)  40.780 ms
 6  202.97.90.158 (202.97.90.158)  37.894 ms
    202.97.94.146 (202.97.94.146)  39.885 ms  39.354 ms
 7  202.97.38.166 (202.97.38.166)  45.324 ms
    202.97.39.149 (202.97.39.149)  40.097 ms
    202.97.94.77 (202.97.94.77)  40.580 ms
 8  202.97.51.118 (202.97.51.118)  374.218 ms
    202.97.27.238 (202.97.27.238)  187.573 ms
    202.97.86.138 (202.97.86.138)  197.524 ms
 9  218.30.53.190 (218.30.53.190)  201.597 ms
    218.30.54.190 (218.30.54.190)  194.194 ms
    218.30.53.190 (218.30.53.190)  204.027 ms
10  182.54.129.91 (182.54.129.91)  220.026 ms  282.360 ms
    et-11-1-5.r01.laxus01.us.bb.bgp.net (182.54.129.38)  185.700 ms
11  182.54.129.91 (182.54.129.91)  229.700 ms  508.509 ms  266.683 ms
12  * 212.95.128.2 (212.95.128.2)  565.161 ms *
13  43.224.226.50 (43.224.226.50)  200.531 ms  201.911 ms  191.566 ms

Але я не можу це пінінгувати:

dele-MBP:~ ll$ ping 43.224.226.50
PING 43.224.226.50 (43.224.226.50): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
Request timeout for icmp_seq 5
Request timeout for icmp_seq 6
Request timeout for icmp_seq 7
Request timeout for icmp_seq 8
Request timeout for icmp_seq 9
Request timeout for icmp_seq 10
Request timeout for icmp_seq 11

Якщо є заборона на ICMP, tracerouteтакож не слід працювати. У чому причина?

Я перевірив, що брандмауер сервера зупинений


чи може бути, що тайм-аут для ping є занадто обмежуючим, і він був би успішним, враховуючи більш м'які часові обмеження? Traceroute дав понад 500 мс для деяких вузлів.
— vsz

Чи допомогла вам якась відповідь? Якщо так, то слід прийняти відповідь, щоб питання не з’являлося вічно, шукаючи відповідь. Крім того, ви можете надати та прийняти власну відповідь.
— Рон Моупін

Відповіді:


39

На подібному питанні тут Люк Савідж пояснив це ідеально:

Traceroute - це не сам протокол, це програма, і використовувані протоколи залежать від реалізації, яку ви використовуєте. В першу чергу це ICMP.

Є дві основні реалізації:

tracert - tracert - це програма для Windows, яка використовує пакети ICMP з наростаючим полем TTL для картографування переходів до кінцевої адреси призначення.

traceroute - traceroute - це програма * nix, доступна для більшості систем на базі Linux, включаючи мережеві пристрої та пристрої Cisco. Для використання пакетів UDP із збільшенням TTL-поля для картографування переходів до кінцевого пункту призначення.

Різницю між ними корисно знати, оскільки деяка мережа тепер блокує ICMP за замовчуванням, тому і PING, і трекер з машини Windows не вдасться, але трасування з пристрою Linux все ще може працювати.


2
Отже, чому мій IP-сервер може простежити, але не пінг?
— 244бой

10
З вашого спільного виводу я бачу, що ви використовуєте tracerouteкоманду, а не tracertщо змусило мене думати, що ви використовуєте операційну систему на базі Unix або gnu. У відповідь я вже говорив ви можете побачити , що системи на основі UNIX не використовується ICMPдля traceroute. Іншими словами, оскільки PINGвикористання ICMP(яке, на мою думку, заблоковане системою, до якої ви намагаєтесь дістатися), і traceroute використовує UDPпакети з методом інкрементації TTLполя (який, на мою думку, не заблокований у системі, до якої ви намагаєтесь дістатися) PINGне вдається. але Tracerouteвдається.
— naïveRSA

4
Замість того, щоб додавати новий коментар до своєї публікації, коли хтось, як 244boy, пропонує покращення, було б краще відредагувати свою публікацію, щоб майбутнім людям, які читають відповідь, не потрібно було прочитати всі коментарі, щоб отримати повну відповідь.
— Keeta - відновити Моніку

@ NaïveRSA Строго кажучи, tracerouteце з допомогою ICMP, навіть якщо він посилає UDP, а саме він очікує і оцінює TTL exceededповідомлення від перельотів на шляху. Хост, який блокує всі ICMP, є поганою ідеєю, але він pingбуде невдалий, коли ICMP echoзапити чи відповіді будуть заблоковані у цільового хоста
— Хаген фон Ейтцен

17

Щоб додати відповідь @ naïveRSA , якщо в шляху є фільтрування / брандмауер, також може виникнути ситуація, коли пакет ICMP "echo reply" (ping) блокується, але пакет ICMP "перевищував час" (tracert) . Це дало б однакові результати, навіть якщо використовується тільки ICMP (Windows).

В обох випадках (відправник, що використовує або UDP, або ICMP) повідомлення про помилку буде ICMP (тобто вузол, що відповідає на пакет ping або tracer *).


6

Подивимося, що станеться, чи не так?

8.8.8.8 є хорошим прикладом, тому що принаймні з мого місцезнаходження я можу дістатись до нього і з, tracerouteі з ping.

Спочатку спробуємо ping 8.8.8.8подивитися і що відбувається:

$ tcpdump -n host 8.8.8.8 or icmp
15:36:51.045994 IP 10.4.27.179 > 8.8.8.8: ICMP echo request, id 7215, seq 0, length 64
15:36:51.062458 IP 8.8.8.8 > 10.4.27.179: ICMP echo reply, id 7215, seq 0, length 64
15:36:52.048350 IP 10.4.27.179 > 8.8.8.8: ICMP echo request, id 7215, seq 1, length 64
15:36:52.073657 IP 8.8.8.8 > 10.4.27.179: ICMP echo reply, id 7215, seq 1, length 64

Таким чином, pingнадсилає запит ехо-сигналу ICMP і очікує відповіді відлуння ICMP.

Зараз traceroute -n 8.8.8.8:

15:41:31.803324 IP 10.4.27.179.44838 > 8.8.8.8.33435: UDP, length 24
15:41:31.815184 IP 10.250.32.2 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.815343 IP 10.4.27.179.44838 > 8.8.8.8.33436: UDP, length 24
15:41:31.819654 IP 10.250.32.2 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.819791 IP 10.4.27.179.44838 > 8.8.8.8.33437: UDP, length 24
15:41:31.824609 IP 10.250.32.2 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.824754 IP 10.4.27.179.44838 > 8.8.8.8.33438: UDP, length 24
15:41:31.830506 IP 64.124.23.161 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.830649 IP 10.4.27.179.44838 > 8.8.8.8.33439: UDP, length 24
15:41:31.834469 IP 64.124.23.161 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.834565 IP 10.4.27.179.44838 > 8.8.8.8.33440: UDP, length 24
15:41:31.840962 IP 64.124.23.161 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.841061 IP 10.4.27.179.44838 > 8.8.8.8.33441: UDP, length 24
15:41:31.847440 IP 64.125.26.21 > 10.4.27.179: ICMP time exceeded in-transit, length 148
15:41:31.847634 IP 10.4.27.179.44838 > 8.8.8.8.33442: UDP, length 24
15:41:31.853664 IP 64.125.26.21 > 10.4.27.179: ICMP time exceeded in-transit, length 148
15:41:31.853761 IP 10.4.27.179.44838 > 8.8.8.8.33443: UDP, length 24
15:41:31.859221 IP 64.125.26.21 > 10.4.27.179: ICMP time exceeded in-transit, length 148
15:41:31.859269 IP 10.4.27.179.44838 > 8.8.8.8.33444: UDP, length 24
15:41:31.864149 IP 64.125.31.15 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.864192 IP 10.4.27.179.44838 > 8.8.8.8.33445: UDP, length 24
15:41:31.870843 IP 64.125.31.15 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.870922 IP 10.4.27.179.44838 > 8.8.8.8.33446: UDP, length 24
15:41:31.876200 IP 64.125.31.15 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.876352 IP 10.4.27.179.44838 > 8.8.8.8.33447: UDP, length 24
15:41:31.882148 IP 64.125.13.111 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.882249 IP 10.4.27.179.44838 > 8.8.8.8.33448: UDP, length 24
15:41:31.890076 IP 64.125.13.111 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.890156 IP 10.4.27.179.44838 > 8.8.8.8.33449: UDP, length 24
15:41:31.896100 IP 64.125.13.111 > 10.4.27.179: ICMP time exceeded in-transit, length 36
15:41:31.896163 IP 10.4.27.179.44838 > 8.8.8.8.33450: UDP, length 24
15:41:31.905037 IP 108.170.242.225 > 10.4.27.179: ICMP time exceeded in-transit, length 60
15:41:31.905235 IP 10.4.27.179.44838 > 8.8.8.8.33451: UDP, length 24
15:41:31.913206 IP 108.170.242.225 > 10.4.27.179: ICMP time exceeded in-transit, length 60
15:41:31.913283 IP 10.4.27.179.44838 > 8.8.8.8.33452: UDP, length 24
15:41:31.923428 IP 108.170.242.241 > 10.4.27.179: ICMP time exceeded in-transit, length 76
15:41:31.923520 IP 10.4.27.179.44838 > 8.8.8.8.33453: UDP, length 24
15:41:31.932266 IP 108.170.237.9 > 10.4.27.179: ICMP time exceeded in-transit, length 60
15:41:31.932441 IP 10.4.27.179.44838 > 8.8.8.8.33454: UDP, length 24
15:41:31.939961 IP 209.85.251.9 > 10.4.27.179: ICMP time exceeded in-transit, length 76
15:41:31.940043 IP 10.4.27.179.44838 > 8.8.8.8.33455: UDP, length 24
15:41:31.947460 IP 108.170.237.21 > 10.4.27.179: ICMP time exceeded in-transit, length 60
15:41:31.947508 IP 10.4.27.179.44838 > 8.8.8.8.33456: UDP, length 24
15:41:31.954824 IP 8.8.8.8 > 10.4.27.179: ICMP 8.8.8.8 udp port 33456 unreachable, length 36
15:41:31.954888 IP 10.4.27.179.44838 > 8.8.8.8.33457: UDP, length 24
15:41:31.963601 IP 8.8.8.8 > 10.4.27.179: ICMP 8.8.8.8 udp port 33457 unreachable, length 36
15:41:31.963671 IP 10.4.27.179.44838 > 8.8.8.8.33458: UDP, length 24
15:41:31.972407 IP 8.8.8.8 > 10.4.27.179: ICMP 8.8.8.8 udp port 33458 unreachable, length 36

Отже traceroute, принаймні впроваджена мною реалізація не надсилає ICMP. Швидше, він надсилає пакети UDP.

Що не видно в цьому сліді (хоча це було б, якби я дав збільшити подробиця) є те , що перші зонди мають ТТЛ 1, а потім збільшує Время_жізні для наступних зондів. Це призводить до того, що маршрутизатори між мною та 8.8.8.8 реагують на помилку ICMP ttl, перевищену помилкою, і саме так traceroute виявляє маршрутизатори тут і там.tcpdump-v

Врешті-решт, ttl досить довгий, щоб зробити його до 8.8.8.8, і 8.8.8.8 відповідає на порт ICMP недоступною помилкою, оскільки він не має процесу прослуховування на порту UDP 44838. Ось як traceroute знає, що він досяг кінцевого пункту призначення .

Якщо щось тут і там блокує всі ICMP, то ні ping, ні traceroute не працюватимуть.

Але зазвичай це не так, що всі ICMP заблоковані, хоча це також не рідко. Блокування всіх ICMP є проблематичним: наприклад, він порушує шлях виявлення MTU , який спирається на необхідну помилку фрагментації ICMP. Пакети ICMP мають тип і код, і відповідальні оператори мережі блокують лише вибірково деякі типи чи коди, ті, що створюють потенцію для зловживань або розкриття певної інформації.

Наприклад, деякі хости взагалі не відповідатимуть на запит ехо в ICMP, і тому ping не працюватиме. Ідея полягає в тому, що, не реагуючи на пінг, зловмиснику важче виявити, які хости існують у мережі. На практиці це сумнівно, оскільки існують інші способи перевірити хоста. Наприклад, можна надіслати TCP SYN на порт 80 для пошуку веб-серверів.

Багато хостів також не надсилають ICMP-порту недоступною помилкою, коли отримують дейтаграму UDP або TCP SYN до порту, на якому вони не мають прослуховування процесу, і це порушує трасування. Знову ідея полягає в тому, щоб зловмиснику ускладнити карту мережі, але знову це лише незначне розчарування для зловмисника.

Оскільки traceroute - це програма, а не конкретний протокол, вона має інші способи зондування. Всі вони покладаються на збільшення TTL для виявлення маршрутизаторів, але можуть надсилатися різні види зондів, які можуть мати більш-менш шанси отримати відповідь від кінцевої точки. Наприклад, у моєму man tcpdumpсписку є -Iможливість використовувати ехолоки ICMP, такі ж, як і ping. Він також -Tповинен використовувати зонди TCP SYN замість UDP. Якщо ви знаєте, що хост буде реагувати на pingте -Iробить багато сенсу. Якщо ви знаєте, що хост прослуховує певний порт TCP, то -Tмає сенс, можливо, спільно з -pможливістю вибору порту.

На жаль, ці параметри можуть вимагати кореневих чи спеціальних можливостей, тому UDP робить справедливим за замовчуванням. Насправді аналогічний інструмент, tracepathмає це сказати на своїй довідковій сторінці:

ОПИС

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


2

TLDR; pings може бути заблокований (блок ICMP) на віддаленому хості, але traceroute все ще може знайти маршрут до нього за допомогою стандартної мережевої маршрутизації UDP або TCP / IP (дійсно будь-який протокол; ref /networkengineering//a/36509/ 58968 ). Зауважте, що ваш ping, ймовірно, також може дістатися до хоста (якщо, можливо, у вас дуже розумний брандмауер блокує ICMP ping-трафік десь), хост просто не відповідає.



0

Ви можете встановити nmap (insecure.org) і використовувати nping за допомогою UDP або TCP та будь-якого порту. Відмінно працює в мережах із блокуванням вихідного каналу.

Для пінг-сервера на nping --tcp -p 80,443

Для пінг-сервера часу nping --udp -p 123

https://nmap.org/book/nping-man.html


0

Коротка відповідь на ваше запитання полягає в тому, що pingутиліта покладається на протокол ICMP, який іноді блокується мережевим брандмауером або брандмауером самого пристрою. Найпоширеніша причина, по якій мережевий адміністратор блоку ICMP - це запобігання "скануванню" мережі, яку вони вважають проблемою безпеки. tracerouteУтиліта на Linux використовує UDP, зовсім інший протокол, який в даному випадку не блокованих мережевих адміністраторів. UDP має різноманітне використання, і блокування цього може призвести до непридатності багатьох речей у мережі. Тип ICMP 'повідомлення управління', який потрібен, ping- це підмножина протоколу, що означає блокування цього типу пакету ICMP спричиняє менше проблем у мережі і, отже, швидше блокується, ніж UDP.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.