我无法连接到防火墙中已打开的端口

我无法连接到防火墙中已打开的端口

我试过打开 80 端口

[root@rhel7 docker]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@rhel7 docker]# firewall-cmd --reload
success
[root@rhel7 docker]# iptables-save | grep 80
-A POSTROUTING_ZONES -o eno16780032 -g POST_public
-A PREROUTING_ZONES -i eno16780032 -g PRE_public
-A PREROUTING_ZONES -i eno16780032 -g PRE_public
-A FORWARD_IN_ZONES -i eno16780032 -g FWDI_public
-A FORWARD_OUT_ZONES -o eno16780032 -g FWDO_public
-A INPUT_ZONES -i eno16780032 -g IN_public
-A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT

但当我尝试使用

netstat -an

它没有显示端口 80 正在监听。当我尝试远程登录该端口时,它显示以下内容

[root@rhel7 docker]# telnet localhost 80
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

无论如何要解决?

谢谢。

答案1

在防火墙上打开端口和让程序侦听该端口是两码事。

我认为netstat无论防火墙设置如何,端口都会被监听。端口上没有任何监听80/tcp,因此您telnet无法连接。

编辑,注意:我真的怀疑您的防火墙默认阻止了从localhost到 的连接localhost。如果我是对的,并且您有一些程序在监听,那么即使没有您的初始调用,您telnet localhost 80也会成功。firewall-cmd


在我的 Debian 上sudo nestat -an显示一些处于监听状态的端口,但它没有告诉哪些程序在监听。我可以通过以下方式列出所有监听程序

sudo lsof -i TCP -s TCP:LISTEN

不知道(目前)您希望在端口上应答哪种服务80/tcp,我猜是 http 服务器。要么根本没有安装,要么您安装的那个尚未启动。有很多种可供选择。例如,可能是也可能不是httpd。尝试

sudo service httpd status

你可能会看到本指南有些是从httpdRHEL7 开始的。

相关内容