我使用 CentOS 7 和 Apache 2.4 作为我的网站主机。我尝试了许多其他机器,有些可以连接到服务器,有些则无法连接到我的电脑。我已经禁用了停止的防火墙(systemctl stop firewalld.service
甚至service iptables stop
)并关闭了selinux(setenforce 0
)。然而,无法访问该网站,并且 http 请求将超时。这有什么问题吗?
>> netstat -tunalp | grep :80
tcp6 0 0 :::80 :::* LISTEN 9480/httpd
udp 0 0 127.0.0.1:802 0.0.0.0:* 1897/rpc.statd
并且 ApacheListen
指令设置为Listen 80
我什至无法从我自己的 PC(具有公共 IP)对服务器执行 ping 操作。 CentOS 的哪一部分可能会阻碍我的连接?
答案1
>> netstat -tunalp | grep :80
tcp6 0 0 :::80 :::* LISTEN 9480/httpd
您打算只监听 ipv6 连接吗? (看到该行以 tcp6 开头吗?)如果您希望它仅绑定到 ipv4 地址,请尝试使用Listen 0.0.0.0:80
。
答案2
看来你有一些网络问题。您可以netstat -tunalp | grep :80
以 root 用户身份运行此命令并检查 http 正在哪个 IP 地址上列出。另请检查您的 apache 配置中的Listen
指令。
答案3
正如您所描述的,我发现您的配置存在两个问题。
- 你说你禁用了防火墙然后提到命令
systemctl start firewalld.service
。该命令将启动防火墙。用systemctl stop firewalld.service
它来阻止它。 - 您提到您无法从您的 PC 访问服务器,并且您的 PC 有公共 IP。您使用的是 IPv4 还是 IPv6?如果是后者,那么只要两台机器都使用“真实”地址而不是链接本地(fe80::)地址,这里就没有问题。但如果您尝试使用 IPv4 网络,您需要确保您的服务器使用公共地址或已正确进行 NAT。
答案4
如果您自己设置 CentOS,您应该知道是否已阻止firewalld
或中的特定远程 IP iptables
。 IOW我怀疑这就是问题所在。同样,SELinux 不应该存在歧视特定远程 IP 的问题。同样的逻辑也适用于 Apache...我不相信 CentOS 是问题所在。
您能否尝试确认哪个网络跃点阻止 HTTP 但允许 SSH?
例如,Google 让我查看他们的网站,但他们在其内部网络的边界阻止了 SSH。我可以通过任何合适的 Linux 安装上可用的 TCP 跟踪路由来看到这一点。
# traceroute -T google.com # port 80 is the default
traceroute to google.com (216.58.210.78), 30 hops max, 60 byte packets
1 gateway (172.16.9.1) 3.070 ms 3.048 ms 3.024 ms
2 host-89-243-96-1.as13285.net (89.243.96.1) 17.659 ms 17.664 ms 21.510 ms
3 xe-11-2-0-bragg001.bre.as13285.net (78.151.225.39) 21.524 ms 21.643 ms 25.172 ms
4 host-78-151-225-88.static.as13285.net (78.151.225.88) 25.170 ms 27.548 ms host-78-151-229-28.as13285.net (78.151.229.28) 27.538 ms
5 host-78-144-8-63.as13285.net (78.144.8.63) 34.949 ms host-78-144-12-227.as13285.net (78.144.12.227) 37.634 ms host-78-144-10-17.as13285.net (78.144.10.17) 37.581 ms
6 72.14.214.222 (72.14.214.222) 37.591 ms 32.854 ms 32.763 ms
7 216.239.54.159 (216.239.54.159) 35.622 ms 72.14.237.253 (72.14.237.253) 23.919 ms 23.775 ms
8 72.14.238.185 (72.14.238.185) 26.728 ms 23.559 ms 23.496 ms
9 lhr14s24-in-f14.1e100.net (216.58.210.78) 26.608 ms 22.107 ms 24.961 ms
# traceroute -T google.com -p 22 # port 22 for SSH
traceroute to google.com (216.58.198.206), 30 hops max, 60 byte packets
1 gateway (172.16.9.1) 3.020 ms 2.977 ms 2.960 ms
2 host-89-243-96-1.as13285.net (89.243.96.1) 16.724 ms 16.728 ms 16.713 ms
3 xe-11-2-0-bragg001.bre.as13285.net (78.151.225.39) 22.195 ms 22.205 ms 24.498 ms
4 host-78-151-225-18.static.as13285.net (78.151.225.18) 24.507 ms host-78-151-225-116.static.as13285.net (78.151.225.116) 24.552 ms 27.647 ms
5 host-78-144-10-21.as13285.net (78.144.10.21) 34.491 ms host-78-144-12-117.as13285.net (78.144.12.117) 34.474 ms host-78-144-10-235.as13285.net (78.144.10.235) 34.463 ms
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
请注意,这假设 ICMP“超出 TTL”错误未在某处被阻止。尽管如此,traceroute 在工作时总是很有趣:)。