我管理着一个位于 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。
我从我的 VPS 尝试访问任何其他网站也没有遇到任何问题ping
,问题仅仅出在 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 ~]$
答案1
现在问题已经很明显了。
您的网络接口设置了错误的前缀。
它被设置为 /8(或在旧的网络掩码表示法中为 255.0.0.0),这告诉您的操作系统 104.0.0.0 到 104.255.255.255 中的每个地址都与您的 VPS 位于同一个 LAN 上。
显然事实并非如此。该区域的大部分被细分为遍布美洲各地的非常小的网络。
因此,您的计算机不知道它要路由数据包,并尝试联系同一 LAN 上以 104 开头的任何地址,但无法找到它。
要修复此问题,您需要重新配置网络以获得正确的网络掩码或 CIDR 范围。您可以从 VPS 提供商处获取此信息。
答案2
由于你正在针对一个公开的网站进行测试,因此恰当命名的为所有人或仅我网络服务非常有用。只需将相关网站的地址输入他们的网络表单,他们就会从几个位置 ping 该地址。我还没有遇到过服务器已启动但他们无法访问的情况,即使在一些配置不当的非洲和中东地区也是如此。
您也可以从 CLI 使用它,只需 grep 输出即可span
使其更易于阅读:
$ curl -s http://www.downforeveryoneorjustme.com/serverfault.com | grep span
It's just you. <a href="http://serverfault.com" class="domain">http://serverfault.com</a></span> is up.