我在基于 LAMP 的旧台式机上托管了一个个人网站。这个问题有几个奇怪的地方,所以我将把它分解成几个步骤。
由于我有一个动态 IP,因此我使用 no-ip 来确保我始终有一个有效的域名。我使用自动更新客户端,但登录并检查后发现我的 no-ip 域名已绑定正确的 IP。 这里是通过 no-ip 域名链接到主页的链接,供参考。另外,我在 no-ip 域名上执行 ping 和 traceroute 操作,得到:
[eckertzs@localhost ~]$ ping -c 1 endradil.noip.me
PING endradil.noip.me (65.24.215.99) 56(84) bytes of data.
64 bytes from endradil.noip.me (65.24.215.99): icmp_seq=1 ttl=64 time=2.23 ms
--- endradil.noip.me ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 104ms
rtt min/avg/max/mdev = 2.233/2.233/2.233/0.000 ms
[eckertzs@localhost ~]$ traceroute endradil.noip.me
traceroute to endradil.noip.me (65.24.215.99), 30 hops max, 60 byte packets
1 . (192.168.2.1) 1.755 ms 5.409 ms 5.380 ms
2 endradil.noip.me (65.24.215.99) 6.297 ms 9.543 ms 10.324 ms
使用这个域名,我可以毫无问题或中断地连接到我的网络服务器(需要 https 来避免服务器端重定向,但它可以工作)。
我还在 GoDaddy 上购买了一个域名,其中我有一个 CNAME 记录将 www 子域名转发到我的 no-ip 域名。
CNAME Record
Host: www
Points to: endradil.noip.me
TTL: 1 hour
在过去的几周里,我使用 GoDaddy 域名进行连接(ssh 或 https)从未遇到过问题。然而,截至过去几天,GoDaddy 域名只能间歇性地工作,每次只工作几分钟,然后会连续几个小时停机。我大部分时间都会收到服务器未找到错误。此外,如果我碰巧使用 GoDaddy 域名进行 ssh 连接,连接就会冻结。
我跑了在线测试DNS 的,并发现该网站在外部服务器上可见并解析到正确的 IP。我还联系了 GoDaddy 支持,但他们在连接网站时没有遇到任何问题,因此没有发现任何问题。我的个人电脑(Windows 台式机、Linux 笔记本电脑、Android 手机)在使用我的个人 wifi 时都无法连接。如果我将手机与 wifi 断开连接并使用我的 AT&T 无线数据,它可以毫无问题地连接到两个域。当我尝试使用 Google 网站管理员工具通过 GoDaddy 域抓取网站时,Google 找不到该网站。
在我的 Linux 笔记本电脑上,当我 ping 或 traceroute 域时,我发现了一些有趣的结果。这些结果如下:
[eckertzs@localhost ~]$ ping -c 1 www.endradil.com
PING www.endradil.com.Belkin (198.105.244.228) 56(84) bytes of data.
--- www.endradil.com.Belkin ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 10000ms
[eckertzs@localhost ~]$ traceroute www.endradil.com
traceroute to www.endradil.com (198.105.244.228), 30 hops max, 60 byte packets
1 . (192.168.2.1) 1.918 ms 2.806 ms 2.772 ms
2 cpe-65-24-208-1.insight.res.rr.com (65.24.208.1) 29.247 ms 29.654 ms 30.094 ms
3 cpe-69-23-24-117.new.res.rr.com (69.23.24.117) 15.597 ms 23.218 ms 23.581 ms
4 agg24.clmcohib01r.midwest.rr.com (65.29.1.52) 30.581 ms 30.556 ms 31.192 ms
5 be27.clevohek01r.midwest.rr.com (65.29.1.38) 30.580 ms 31.062 ms 31.038 ms
6 bu-ether25.atlngamq47w-bcr01.tbone.rr.com (107.14.19.38) 37.863 ms 68.844 ms 43.773 ms
7 107.14.17.178 (107.14.17.178) 51.866 ms 51.019 ms 50.989 ms
8 ae0.pr1.dca10.tbone.rr.com (107.14.17.200) 48.467 ms ae-4-0.a0.lax91.tbone.rr.com (66.109.1.113) 49.912 ms *
9 v413.core1.ash1.he.net (209.51.175.33) 60.270 ms 50.842 ms 50.819 ms
10 100ge5-1.core1.nyc4.he.net (184.105.223.166) 55.597 ms 56.045 ms 56.020 ms
11 xerocole-inc.10gigabitethernet12-4.core1.nyc4.he.net (216.66.41.242) 56.001 ms 55.969 ms 55.992 ms
12 * * *
都显示错误的 IP。此外,跟踪路由在跳数 12 到 255 处超时(上面的输出被截断)。使用 site24x7 跟踪路由从他们的加利福尼亚服务器运行时,可以正常工作并显示合理的结果。从与我位于同一城市(10 英里外)的不同网络上的另一个 Linux 机器上,我仍然会遇到跟踪路由超时的情况,但是 IP 可以正确解析域。
由此,我相信 DNS 结果被错误地缓存在我的路由器/调制解调器中,甚至可能是我的 ISP 级别。我的问题是,首先,我如何确切地找出问题所在,其次,我如何解决它。
答案1
由于某种原因,我的 ISP 指向我的路由器的 DNS 服务器已过期或不可用。我运行nslookup www.endradil.com
并从路由器缓存了错误的 IP。如果我运行,nslookup www.endradil.com 8.8.8.8
那么我得到的是正确的 IP,没有超时问题。我只是进入我的路由器,告诉它停止使用我的 ISP 告诉它的 DNS,并将其指向 Google DNS 服务器。这并不能解释为什么 Webmaster Google Crawl 会遇到问题,除非抓取是在本地完成的。我通过以下方法解决了大部分问题这个问题。