我正在运行一个为各种服务提供服务的机器。我想使用iptables控制这些服务,或者最好使用ufw(因为我不熟悉iptables本身)。
在我之前的设置中,我使用了" vanilla" docker使用名为" docker0"的虚拟接口;通过容器路由网络流量。我成功地用谷歌搜索了#34;使防火墙工作的解决方案在本文中描述:https://svenv.nl/unixandlinux/dockerufw(注意:即使我写了这篇文章,它只是将一部分互联网知识合并在一起)。
我发现的其中一件事就是这件事:
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE
COMMIT
其中(我假设)确保所有内容都正确地进入docker0。
现在,我已更改设置并开始使用" docker-compose"它会在隔离的网络中自动旋转docker容器。 Docker再一次使用虚拟设备,该虚拟设备以网络ID命名:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
(...)
207a57fc0080 dockeropenvpndata_network-vpn bridge local
(...)
和...
$ ifconfig | grep 207a57fc0080
br-207a57fc0080 Link encap:Ethernet HWaddr 02:42:ce:c5:81:04
我假设将上面发布的iptables配置更改为新的网络设备可能会解决问题:
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING ! -o br-207a57fc0080 -s 172.17.0.0/16 -j MASQUERADE
COMMIT
但是我不知道如何测试它。
docker-compose up
简而言之,我正在寻找一种方法来再次防火我的docker机器。有谁知道如何实现这个目标?
答案 0 :(得分:0)
事实证明,使用systemd时未考虑/etc/default/docker
中的配置,导致--iptables=false
未设置。
systemd的docker选项在/lib/systemd/system/docker.service
的服务文件中指定。可以通过在cat /etc/systemd/system/docker.service.d/docker.conf
我添加了包含以下内容的drop-in文件:
[Service]
EnvironmentFile=-/etc/default/docker
ExecStart=
ExecStart=/usr/bin/dockerd --iptables=false -H fd://
(实际需要第一个空的ExecStart =)
这启动了没有iptables配置的docker,并使原始步骤(请参阅原始问题中的链接)再次工作。