我在访问我的网站 www.egytex.com 时遇到问题,虽然可以 ping 通网站,也没有丢失数据,但直接访问时却找不到可用的服务器路由!??如果没有服务器路由,怎么能 ping 通网站呢?
有人有这个问题的解决方案吗?
谢谢你!
答案1
Ping 通常使用 ICMP,而 Web 访问使用 HTTP over TCP。因此,某些防火墙或过滤器可能阻止其中一个,而不阻止另一个。
您确定 Web 服务器正在运行、正在监听您期望的端口(80?)并且没有任何阻止访问的允许/拒绝规则吗?
您是否在使用托管服务提供商?他们有帮助台吗?他们还在营业吗?
答案2
扩展 RGB 的答案,这几乎肯定是防火墙问题,因为我也可以访问服务器上的 ssh 端口:
[madhatta@risby ~]$ ping www.egytex.com
PING www.egytex.com (209.250.246.227) 56(84) bytes of data.
64 bytes from www1.texmarkcorp.com (209.250.246.227): icmp_seq=1 ttl=54 time=112 ms
[...]
[madhatta@risby ~]$ telnet www.egytex.com 22
Trying 209.250.246.227...
Connected to www.egytex.com.
Escape character is '^]'.
SSH-2.0-OpenSSH_4.3
[madhatta@risby ~]$ telnet www.egytex.com 80
Trying 209.250.246.227...
telnet: connect to address 209.250.246.227: No route to host
在最后一种情况下,该答案是立即的,因此这不是 ARP 超时(无论如何不太可能)。这不是 DNS,因为每次都显示相同的地址。检查本地防火墙并iptables -L -n -v
确保允许传入端口 80 的 TCP 流量。如果允许,请与您的 ISP 联系。
答案3
不幸的是,在某些情况下,您的浏览器和操作系统可以使用不同的 DNS 解析器。您使用的是什么操作系统?您可以尝试使用其他浏览器吗?“nslookup www.egytex.com”是否与 ping 显示的 IP 地址一致?traceroute 怎么样?您的浏览器或机器可能已缓存 DNS。
答案4
如果您的防火墙配置不正确,您肯定会遇到此问题。我也能 ping 一个服务器,但无法打开网页,尽管其他一切似乎都正常。防火墙解决了这个问题。
这是一个复杂的话题,我建议在终端上执行“man iptables”来查看文档并查找更多资源和教程。如果您只是想快速检查这确实是问题所在,您可以在终端上执行以下操作。
首先,备份你现有的 iptables,例如:
mv /etc/sysconfig/iptables /etc/sysconfig/iptables.bkp
然后使用您最喜欢的文本编辑器,创建一个新的 /etc/sysconfig/iptables 文件,其中包含以下文本:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
这样您就可以通过 ssh 进入机器(端口 22),并使 http (80) 和 https (443) 正常工作。要使这些更改生效,请重新启动防火墙:
service iptables restart
如果您仍然可以 ping 但无法访问任何网页,则可能必须对 http 服务器进行故障排除。