无法从远程位置访问端口 80 但可以在本地访问?

无法从远程位置访问端口 80 但可以在本地访问?

我有一台配置了 apache 的 Linux 服务器。但是我无法使用远程计算机访问它。

我可以正常 ssh 到服务器。

我的IP表:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

网络状态监测

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 SERVERIP:80                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:45117               0.0.0.0:*                   LISTEN
tcp        0    196 SERVERIP:22                 MyIP:3149                   ESTABLISHED
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 :::47193                    :::*                        LISTEN

使用Curl SERVERIP:80curl localhost:80,都从 apache 返回默认页面。

可能是什么问题呢?

答案1

您需要启用端口 80 对服务器的访问,因为它当前正被 iptables 阻止。

sudo /sbin/iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT

这将在开始时将规则插入到您的 iptables 配置中。完成此操作并测试其是否有效后,您应该保存配置,以便下次服务启动时使用它,

sudo /sbin/service iptables save

这会将当前配置写入/etc/sysconfig/iptables

如果您使用 CentOS 7,那么 FirewallD 是正确的选择:

防火墙cmd --zone=public --add-port=80/tcp

使用你的浏览器验证它是否正常工作,然后:

防火墙cmd --zone=public --add-port=80/tcp --permanent

防火墙-cmd——重新加载

使更改永久生效

答案2

您的 iptables 规则仅允许端口 22 上的传入连接。同时打开端口 80。

答案3

也可以直接使用默认的http服务

防火墙cmd --permanent --zone=public --add-service=http

答案4

使用在线端口检查器检查端口是否确实打开,如果不是,则可能是您的 ISP 阻止了它。(Optimum 会阻止它)。请致电您的 ISP 并要求他们打开它。

相关内容