我在 104.143.14.103 管理一个 KVM VPS,由于某种原因无法访问http://pecl.php.net。
当我ping
输入 PECL 服务器的 IP 地址(104.236.228.160)时,确保它不是 DNS 问题,并且每次我得到Destination Host Unreachable
.
如何调试根本原因是我的服务器配置错误,还是目标服务器拒绝 ping?
我从我管理的各种其他服务器中获取 PECL 没有任何问题ping
,所以我知道 PECL 不会阻止所有 ping。
ping
我从我的 VPS 尝试的任何其他站点也没有问题,问题仅出在 PECL 服务器上。
我使用了我的 VPS 主机 ( http://lg.las1.ultravps.net/ )的镜子,它在 ping PECL 时没有问题。我还向主机提交了支持票,他们登录到该节点的管理程序并说他们可以成功 ping PECL。
我traceroute
从另一台服务器运行到 PECL 服务器以查找倒数第二跳的 IP 地址。我可以从我的 VPS 成功地 ping 那个 IP (162.243.188.222)。
当我traceroute
从 VPS 运行时,我得到:
[jeffwidman@ultravps ~]$ traceroute pecl.php.net
traceroute to pecl.php.net (104.236.228.160), 30 hops max, 60 byte packets
1 ultravps.jeffwidman.com (104.143.14.103) 3005.478 ms !H 3005.400 ms !H 3005.270 ms !H
[jeffwidman@ultravps ~]$ traceroute 104.236.228.160
traceroute to 104.236.228.160 (104.236.228.160), 30 hops max, 60 byte packets
1 ultravps.jeffwidman.com (104.143.14.103) 3005.916 ms !H 3005.877 ms !H 3005.867 ms !H
[jeffwidman@ultravps ~]$
我检查了多个黑名单站点,只是为了确保我没有继承错误的 IP 地址……它们都没有列出我的 IP。我也不经常点击 PECL,而且这个问题已经发生了好几天,所以如果我遇到速率限制,我会感到非常惊讶。
我还能做些什么来调试 PECL 是否阻止了我的 IP 地址,或者我的 VPS 上是否有错误配置?
输出ip route
:
[jeffwidman@ultravps ~]$ ip route
default via 104.143.14.1 dev eth0 proto static metric 100
104.0.0.0/8 dev eth0 proto kernel scope link src 104.143.14.103 metric 100
输出ip addr
:
[jeffwidman@ultravps ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:16:3c:d1:49:f6 brd ff:ff:ff:ff:ff:ff
inet 104.143.14.103/8 brd 104.255.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::216:3cff:fed1:49f6/64 scope link
valid_lft forever preferred_lft forever
[jeffwidman@ultravps ~]$
现在问题很明显了。
您的网络接口设置了错误的前缀。
它设置为 /8(或旧的网络掩码表示法,255.0.0.0),它告诉您的操作系统从 104.0.0.0 到 104.255.255.255(包括在内)的每个地址都与您的 VPS 在同一个 LAN 上。
显然情况并非如此。这个范围的大部分被细分为分布在美洲各地的非常小的网络。
因此,您的计算机不知道它是用来路由数据包的,并尝试联系同一 LAN 上任何以 104. 开头的地址,但无法找到该地址。
要解决此问题,您需要为正确的网络掩码或 CIDR 范围重新配置网络。您可以从您的 VPS 提供商处获取此信息。
由于您正在针对一个公开可用的网站进行测试,因此为每个人或仅我个人提供恰当命名的Web 服务非常有帮助。只需将相关站点的地址输入到他们的 Web 表单中,他们就会从几个位置 ping 该地址。我还没有遇到过服务器启动但他们无法访问它的情况,即使在一些配置错误的非洲和中东地区也是如此。
您也可以从 CLI 中使用它,只需 grep 输出
span
以使其更易于阅读: