Firewalld 已启用 443,但它拒绝连接

Firewalld 已启用 443,但它拒绝连接

我在 centos 7 上使用firewalld。

我已经配置了firewalld,因此443是开放的:

$ sudo firewall-cmd --zone=public --permanent --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: couchdb2 dhcpv6-client http https ssh
  ports: 443/tcp 5984/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

$ sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
Warning: ALREADY_ENABLED: 443:tcp
success

显然端口 443 是开放的,但是...

$ curl https://127.0.0.1:443
curl: (7) Failed connect to 127.0.0.1:443; Connection refused

我也使用以下网络工具进行测试http://www.yougetsignal.com/tools/open-ports/

我输入了我的 IP 地址和端口 443,然后得到:已关闭 {my-ip} 上的端口 443 已关闭

出了什么问题?看上去好像打开了,但其实没有打开。

我查询 netstat 得到以下结果:

$ sudo netstat -lnp | grep 443
udp        0      0 127.0.0.1:323           0.0.0.0:*                           
443/chronyd         
udp6       0      0 ::1:323                 :::*                                
443/chronyd

一旦我修复了 nginx.conf 以正确监听 443,结果如下所示:

$ sudo netstat -lnp | grep 443
tcp        0      0 0.0.0.0:443             0.0.0.0:*               
LISTEN      10197/nginx: master 
tcp6       0      0 :::443                  :::*                    
LISTEN      10197/nginx: master 
udp        0      0 127.0.0.1:323           0.0.0.0:*                           
443/chronyd         
udp6       0      0 ::1:323                 :::*                                
443/chronyd   

答案1

错误连接被拒绝通常意味着防火墙允许数据包通过(除非防火墙主动拒绝连接尝试),但没有服务在目标端口号上监听。

在您的情况下,您需要确保 HTTPs Web 服务器正在运行并监听端口 443。您可以使用以下命令进行验证。

sudo netstat -lnp | grep 443

编辑:正如 @Paul 所评论的,显示的输出意味着没有进程在端口 443 上监听。输出无关紧要,因为进程 ID 与 443 匹配,我们需要它与 TCP 协议的端口号匹配。您需要找到类似于以下内容的一行:

tcp  0   0 0.0.0.0:443      0.0.0.0:*     LISTEN      <pid>/<proc_name>       

答案2

firewalld添加规则后,您需要重新加载,--permanent或者必须不带 重新运行命令--permanent

当您说--permanentfirewalld只是更新配置,但不会重新加载它时。

相关内容