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


14

我有一个使用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

netstat -ant

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的默认页面。

可能是什么问题呢?

Answers:


26

您需要启用对端口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-重新加载

使更改永久生效


1

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


...而cmd是iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
onik

...这是正确的,但不起作用,因为它将将此规则附加在拒绝所有之前未接受的传入连接的规则之后。
帕维尔Brodacki

是的,我只是习惯将其添加到规则文件中的正确位置,忘了提及。iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited,然后是前一个,然后添加“拒绝所有通则” iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
-onik

0

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

防火墙cmd-永久-区域=公共-添加服务= http

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.