防火墙上未打开端口,但可以访问

防火墙上未打开端口,但可以访问

我的服务器上使用带有firewallD的centos 7。

我还在这台机器上安装了 docker,并将其添加到防火墙的受信任区域。

我有一个在端口上监听的容器9081,但是这个端口在防火墙上没有打开,奇怪的是这个端口可以从我的家用电脑访问。

这是输出firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports: 443/tcp 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

我有两个活动区域:trustedpublic

这是命令的输出firewall-cmd --zone=trusted --list-all

trusted (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: docker0
  sources:
  services:
  ports: 4243/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

显然该端口9081在任何区域均未打开,但我仍然可以访问它。为什么?如何关闭它?

答案1

我意识到使用firewallD运行Docker会出现一些错误。

一个简单的解决方法是改变你在docker中定义端口的方式。就我而言,我必须将我的docker-compose更改为:

ports:
- "127.0.0.1:9081:8081"

重要的部分是127.0.0.1在定义主机端口之前使用。

相关内容