我有一个IP地址,可以跟踪到该地址,但无法ping通。但是我不能ping它:

dele-MBP:~ ll$ traceroute 43.24.226.50
traceroute to 43.24.226.50 (43.24.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.5.128.2 (212.5.128.2)  565.161 ms *
13  43.24.226.50 (43.24.226.50)  200.531 ms  201.911 ms  191.566 ms


如果禁止ICMP,则43.24.226.50也不应工作。是什么原因?

我检查服务器的防火墙已停止。

评论

可能是因为ping的超时限制太严格了,并且在更宽松的时间限制下它会成功吗? Traceroute为某些节点提供了500毫秒以上的时间。

有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以提供并接受自己的答案。

#1 楼

在类似的问题上,卢克·萨维奇(Luke Savage)完美地解释了它:

Traceroute本身不是协议,它是一个应用程序,使用的协议取决于您所使用的实现。主要是ICMP。
有两个主要实现:
tracert-tracert是Windows应用程序,利用带有递增TTL字段的ICMP数据包将跃点映射到最终目标地址。 -traceroute是* nix应用程序,可在大多数基于Linux的系统(包括网络设备)和Cisco设备上使用。它使用带有递增TTL字段的UDP数据包将跃点映射到最终目的地。
之间的区别非常有用,因为某些网络默认情况下会阻止ICMP,因此Windows计算机的PING和tracert都会失败,但是从Linux设备执行的traceroute仍然可以工作。 。在我提到的答案中,您可以看到基于unix的系统未将traceroute用于tracert。换句话说,由于Unix正在使用GNU(我认为您尝试访问的系统已将其阻止),而ICMP使用traceroute数据包,且其增量方法为PING字段(我认为您尝试使用的系统未对其进行阻止到达)ICMP失败,但traceroute成功

评论


那么,为什么我的服务器IP可以跟踪路由却不能ping?

–244boy
19年5月5日在9:25

当像244boy这样的人提出改进建议时,与其在您的帖子中添加新评论,不如对您的帖子进行编辑,以使将来阅读答案的人不必阅读所有评论即可获得完整答案。

– Keeta-恢复莫妮卡
19年6月6日在15:03

@naïveRSA严格来说,traceroute使用的是ICMP,即使它正在发送UDP,也就是它期望并评估途中跃点的TTL超出消息。阻止所有ICMP的主机不是一个好主意,但是当在目标主机上阻止ICMP回显请求或答复时,ping操作将失败。

–哈根·冯·埃岑
19年6月7日在19:54



#2 楼

要补充@naïveRSA的答案,如果路径中存在过滤/防火墙,也可能会出现以下情况:ICMP“回显应答”(ping)数据包被阻止,但允许ICMP“超时”(tracert)数据包。即使在仅使用ICMP(Windows)的情况下,也会产生相同的结果。

在两种情况下(使用UDP或ICMP的发送方),错误通信都是ICMP(即,节点响应ping或跟踪器*数据包)。

#3 楼

让我们看看会发生什么情况?

traceroute和ping都可以达到目标。首先让我们尝试ping 8.8.8.8并观察会发生什么:现在,ping

$ 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


所以traceroute -n 8.8.8.8,至少我已安装的实现,不会发送ICMP。相反,它发送UDP数据包。在此跟踪中看不到什么(尽管如果我给traceroute一个tcpdump来增加详细程度,那将是可见的)是第一个探测器的ttl为1,然后它会增加ttl以便以后进行探测。这导致我和8.8.8.8之间的路由器以ICMP ttl超出错误响应,这是traceroute如何发现此处和此处之间的路由器。

最终,ttl足够长,足以使所有8.8.8.8和8.8.8.8的方法以ICMP端口无法访问错误进行响应,因为它没有进程监听UDP端口44838。这是traceroute知道它已到达最终目的地的方式。

在此之间阻塞所有ICMP,那么ping或traceroute都不起作用。阻止所有ICMP是有问题的:例如,它中断了路径MTU发现,这依赖于需要ICMP分段的错误。 ICMP数据包具有类型和代码,负责任的网络运营商将仅选择性地阻止某些类型或代码,这些类型或代码可能会造成滥用或泄露特定信息。

例如,某些主机根本不会响应ICMP回显请求,因此ping无法正常工作。这个想法是,通过不响应ping,攻击者很难发现网络上存在哪些主机。实际上,这是有问题的,因为还有其他探测主机的方法。例如,可以将TCP SYN发送到端口80来查找Web服务器。

许多主机在将UDP数据报或TCP SYN发送到端口上时也不会发送ICMP端口不可达错误。他们没有进程监听,这中断了traceroute。再一次的想法是使攻击者更难以映射网络,但这对攻击者来说只是一个小小的挫败。

因为traceroute是一个程序而不是任何特定的协议,所以它具有其他探测方式。它们都依靠增加TTL来发现路由器,但是可以发送不同种类的探测,这些探测或多或少有机会引起端点的响应。例如,我的-v列出了一个man tcpdump选项以使用ICMP回波探针,与ping相同。它还具有-I以使用TCP SYN探针而不是UDP。如果您知道主机将响应-T,则ping很有意义。如果您知道主机正在侦听特定的TCP端口,则可以将-I设置为有意义,也许可以将-T选项与端口选择一起使用。做出合理的默认设置。实际上,类似的工具-p在其手册页中也有这样的说法:它使用UDP端口端口或某些随机端口。

#4 楼

TLDR;可以在远程主机上阻止ping(ICMP阻止),但是traceroute仍可以使用标准网络路由UDP或TCP / IP(实际上是任何协议;请参阅https://networkengineering.stackexchange.com/a/36509/)找到到它的路由58968)。请注意,您的ping可能也可以到达主机(除非您有一个非常聪明的防火墙阻止某处的ICMP ping流量),主机只是不回复。

#5 楼

Linux使用UDP而不是ICMP进行跟踪路由,防火墙没有阻止UDP端口

#6 楼

对于您的问题的简要答案是,ping实用程序依赖于ICMP协议,该协议有时在网络防火墙或设备本身的防火墙上被阻止。网络管理员阻止ICMP的最常见原因是为了防止对他们认为是安全问题的网络进行“扫描”。 Linux上的traceroute实用程序使用UDP,这是一种完全不同的协议,在这种情况下,不会被网络管理员阻止。 UDP有多种用途,阻止它会导致许多事情在网络上不可用。 ping所需的ICMP“控制消息”类型是协议的子集,这意味着阻止该类型的ICMP数据包在网络上引起的问题较少,因此比UDP更有可能被阻止。

#7 楼

您可以安装nmap(insecure.org),并在UDP或TCP和任何端口上使用nping。在ping阻止出站的网络上效果很好。

要对Web服务器执行ping操作
nping --tcp -p 80,443

要对时间服务器执行ping操作
nping --udp -p 123

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