为什么我无法从我的 ubuntu 盒子 ping 通外界?

为什么我无法从我的 ubuntu 盒子 ping 通外界?

我似乎无法 ping 或 ssh 到外部域。内部 IP 地址工作正常。它解析 IP 地址,所以我认为不是 DNS。本地主机似乎以某种方式拦截了我的请求。Curl 工作正常。这是 ubuntu 服务器 10.4。我的内部 IP 是 192.168.1.14。

编辑:我停止了 ufw viastop ufw并在下面添加了一些更多信息。

matt@valkyrie:~$ ping google.com
PING google.com (173.194.33.104) 56(84) bytes of data.
From valkyrie (192.168.1.14) icmp_seq=1 Destination Port Unreachable
From valkyrie (192.168.1.14) icmp_seq=2 Destination Port Unreachable
From valkyrie (192.168.1.14) icmp_seq=3 Destination Port Unreachable
From valkyrie (192.168.1.14) icmp_seq=4 Destination Port Unreachable
From valkyrie (192.168.1.14) icmp_seq=5 Destination Port Unreachable
From valkyrie (192.168.1.14) icmp_seq=6 Destination Port Unreachable
^C
--- google.com ping statistics ---
6 packets transmitted, 0 received, +6 errors, 100% packet loss, time 4999ms

默认路由

root@valkyrie:/etc/nagios3# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0

跟踪路由

root@valkyrie:/etc/nagios3# traceroute google.com
traceroute to google.com (173.194.33.104), 30 hops max, 60 byte packets
 1  valkyrie (192.168.1.14)  0.409 ms  0.459 ms  0.481 ms

iptables

root@valkyrie:/etc/nagios3# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
blockcontrol_in  all  --  anywhere             anywhere            state NEW mark match !0x14 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
blockcontrol_fw  all  --  anywhere             anywhere            state NEW mark match !0x14 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
blockcontrol_out  all  --  anywhere             anywhere            state NEW mark match !0x14 

Chain blockcontrol_fw (1 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            mark match 0xa 
RETURN     all  --  anywhere             arbiter             
RETURN     all  --  192.168.1.0/24       192.168.1.0/24      
NFQUEUE    all  --  anywhere             anywhere            NFQUEUE num 92

Chain blockcontrol_in (1 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            mark match 0xa 
RETURN     all  --  anywhere             anywhere            
RETURN     all  --  192.168.1.0/24       anywhere            
NFQUEUE    all  --  anywhere             anywhere            NFQUEUE num 92

Chain blockcontrol_out (1 references)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            mark match 0xa reject-with icmp-port-unreachable 
RETURN     all  --  anywhere             anywhere            
RETURN     all  --  anywhere             arbiter             
RETURN     all  --  anywhere             192.168.1.0/24      
RETURN     tcp  --  anywhere             anywhere            tcp dpt:https 
RETURN     tcp  --  anywhere             anywhere            tcp dpt:www 
NFQUEUE    all  --  anywhere             anywhere            NFQUEUE num 92

答案1

你能 curl google 吗?如果可以,那么很可能 PING 或 ICMP 被阻止了。通过尝试对 google.com 进行跟踪路由来确定是哪种情况traceroute google.com,看看是否也失败了。然后检查你的软件防火墙 - 如果你有 iptables,请尝试iptables -L粘贴输出,尽管 Ubuntu 可能默认带有不同的防火墙。如果没有,请联系你的托管服务提供商或 ISP,询问他们是否阻止了 ICMP 出站。

答案2

某个地方配置错误,可能是在服务器或路由器上,因为 ICMP 不使用端口,但您的 ping 响应指示“端口无法访问”。您可以在服务器上运行数据包捕获并再次 ping,然后查看响应返回的 ICMP 代码以确定发生了什么。如果实际上是代码 3(端口无法访问),那么某个地方一定有问题。

我几乎认为这是一个路由循环,但它通常会生成“TTL 传输中已过期”响应。

答案3

您和您的 ISP 之间可能有防火墙阻止了 ICMP 通信,或者您的 ISP 遇到了问题。

答案4

这个问题很老了,但我刚刚在 Ubuntu 上遇到了同样的问题。

为了修复,请允许通过 UDP 传出端口范围为 33434 至 33523。

您很可能在 Ubuntu 上使用 ufw 作为防火墙,因为它是标准配置,在 ufw 上打开这些端口的命令是:

sudo ufw insert 1 allow out 33434:33523/udp

然后您应该能够运行不带任何标志的普通 traceroute 命令,例如:

traceroute yahoo.com

如果命令运行时没有显示错误,但只显示空响应或每个响应都有一个星号,则您可能需要在运行 traceroute 时禁用 VPN

此外,如果您使用的是 IPv6,并且 traceroute 命令显示 IPv6 地址以及错误消息,您可以尝试强制它使用 IPv4,命令标志“-4”输入如下:

traceroute -4 yahoo.com

相关内容