traceroute 只给出星星 + 如何修复

40 linux networking ping traceroute

当我做:

  $ traceroute 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

我得到的输出只显示星星,即使 ping google.com (8.8.8.8) 似乎工作。

  1. 为了解决这个问题,我需要在我的文件/conf 中修复什么?
  2. 我需要检查什么?

ping 命令输出

    $ ping 8.8.8.8
    PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
    64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=73.4 ms
    64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=69.6 ms
Run Code Online (Sandbox Code Playgroud)

traceroute 命令输出

 $ traceroute 8.8.8.8
 traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
 10  * * *
 11  * * *
 12  * * *
 13  * * *
  14  * * *
 15  * * *
 16  * * *
 17  * * *
 18  * * *
 19  * * *
 20  * * *
 21  * * *
 22  * * *
 23  * * *
 24  * * *
 25  * * *
 26  * * *
 27  * * *
 28  * * *
 29  * * *
 30  * * *
Run Code Online (Sandbox Code Playgroud)

wrg*_*grs 46

我发现这traceroute -I给了我更完整的结果。

-I, --icmp
      Use ICMP ECHO for probes
Run Code Online (Sandbox Code Playgroud)

  • 我得到`连接:不支持操作` (5认同)

Ram*_*esh 21

您看到的星号是您的数据包正在路由的服务器,它们超时(5.0+ 秒),因此traceroute默认打印 *.

注意traceroute手册页中甚至有关于此的警告。

摘抄

在现代网络环境中,由于防火墙的广泛使用,传统的traceroute方法并不总是适用的。此类防火墙过滤“不太可能”的 UDP 端口,甚至 ICMP 回声。为了解决这个问题,实现了一些额外的跟踪路由方法(包括 tcp),请参阅下面的可用方法列表。此类方法尝试使用特定协议和源/目标端口,以绕过防火墙(被防火墙视为允许类型的网络会话的开始)。

大多数防火墙会阻止 TCP/80 之外的端口上的出站流量,TCP/80 是 Web 流量的默认 IP 端口。traceroute在 Linux 中默认使用UDPping 使用ICMP,因此作为您的输出,ICMP您的防火墙似乎允许UDP数据包,而防火墙阻止数据包。

您可以看到对我的问题的回答:traceroute 和 ping from school network

编辑#1

根据评论,如果这在另一台 RHEL 机器上工作,而在这台 RHEL 机器上不工作,我建议执行以下步骤。

从正在工作的 RHEL 机器(机器 A)复制该/etc/sysconfig/iptables文件。在有故障的 RHEL 机器(机器 B)中,将原始/etc/sysconfig/iptables文件复制到类似/etc/sysconfig/iptables.original.

$ cp /etc/sysconfig/iptables /etc/sysconfig/iptables.original
Run Code Online (Sandbox Code Playgroud)

这一步只是为了确保如果我们的设置出现问题,我们可以恢复到原始状态。现在,/etc/sysconfig/iptables从机器 A复制到机器 B。


小智 8

您运行测试的机器或您的本地网关(路由器)正在阻止 UDP 或 ICMP。确保在您的防火墙/NAT 规则配置中允许这些。

  • 关于如何做到这一点的更多细节会有所帮助。 (11认同)