如何设置 FirewallD 以过滤流向 docker 公开端口的流量



我已经设置了一个 pi-hole docker 容器,并在 CentOS7 上公开了 dns 端口和端口 80。 但是,这些端口现在可用于所有来源,这不太方便,因为它在VPS上运行。

所以我正在尝试让 firewallD 过滤流向我的 docker 容器的流量。

所以我的 docker 容器运行如下:

docker ps
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS                       PORTS                                                        NAMES
18881454da0c        pihole/pihole:latest   "/s6-init"          24 hours ago        Up About an hour (healthy)   0.0.0.0:53->53/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:53->53/udp   pihole

在防火墙D上,我已经设置了以下acl(流向CentOS的流量被很好地过滤了(:

sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: docker0
sources:
services: 
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="<home ip>/32" accept

并且我已经将docker0接口设置为区域公共:

sudo firewall-cmd --permanent --zone=public --change-interface=docker0
sudo firewall-cmd --get-active-zones
public
interfaces: docker0

但是当我从互联网进行端口扫描时,我仍然看到所有 docker 暴露的端口。

我可以使用iptables命令解决此问题:

sudo iptables -N CUSTOM_PIHOLE
sudo iptables -A CUSTOM_PIHOLE --source <home ip> --destination 172.17.0.2 -j ACCEPT
sudo iptables -R DOCKER 1 --source 0.0.0.0/0 --destination 172.17.0.2 -j CUSTOM_PIHOLE 
sudo iptables -D DOCKER 3
sudo iptables -D DOCKER 2

但是当 firewallD 重新加载时,此配置将丢失。

有没有办法使用 firewallD 过滤流向 docker 容器的流量?

找到了答案。 请参阅以下链接:

  • https://github.com/moby/moby/issues/35043#issuecomment-356036671
  • https://docs.docker.com/network/iptables/

相关内容

  • 没有找到相关文章

最新更新