我的服务器上使用带有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:
我有两个活动区域:trusted
和public
这是命令的输出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
在定义主机端口之前使用。