我试过打开 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
你可能会看到本指南有些是从httpd
RHEL7 开始的。