Docker 配置守护进程和容器的网络 - Docker 和 iptables
Docker 配置守护进程和容器的网络 - Docker 和 iptables。在 Linux 上,Docker 操纵 iptables 规则来提供网络隔离。这是一个实现细节,你不应修改 Docker 插入到你的 iptables 策略中的规则。
1. 在 Docker 的规则之前添加 iptables 策略
所有 Docker 的 iptables 规则都被添加到 DOCKER 链中。不要手动操作此表。如果你需要添加在 Docker 规则之前加载的规则,请将它们添加到
DOCKER-USER 链中。 这些规则在 Docker 自动创建任何规则之前加载。
1.1 限制到 Docker 守护进程的连接
1.1 限制到 Docker 守护进程的连接
默认情况下,所有外部源 IP 都被允许连接到 Docker 守护进程。要仅允许特定的 IP 或网络访问容器,请在 DOCKER 过滤器链的顶部插入否定规则。例如,以下规则只允许外部 IP 为
192.168.1.1 的主机访问:
$ iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.1 -j DROP
你可以改为允许来自源子网的连接。以下规则仅允许从子网
192.168.1.0/24 进行访问:
$ iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.0/24 -j DROP
最后,可以通过
--src-range 指定 IP 地址范围(注意,在使用
--src-range 或
--dst-range 时需要添加
-m):
$ iptables -I DOCKER-USER -m iprange -i ext_if ! --src-range 192.168.1.1-192.168.1.3 -j DROP
可以将
-s 或
--src-range 与
-d 或
--dst-range 组合使用来控制源和目的 IP 地址。例如,如果 Docker 守护进程监听
192.168.1.99 和
10.1.2.3,可以制定特定于
10.1.2.3 的规则并保持
192.168.1.99 开启。
iptables 是复杂的,更复杂的规则超出了这个话题的范围。请参阅 Netfilter.org HOWTO 了解更多信息。
2. 防止 Docker 操纵 iptables
2. 防止 Docker 操纵 iptables
为防止 Docker 操纵 iptables 策略,在
/etc/docker/daemon.json 中将 iptables 关键字设置为 false。对大多数用户来说这是不合适的,因为此时 iptables 策略需要用户手工管理。
推荐阅读
-
Docker 配置守护进程和容器的网络 - 容器的网络
-
Docker容器的网络管理和网络隔离的实现
-
详解Docker使用Linux iptables 和 Interfaces管理容器网络
-
Docker 配置守护进程和容器的网络 - Docker 和 iptables
-
Docker 配置守护进程和容器的网络 - 开启 IPv6
-
Docker 的另外两个话题: DockerHub 和 容器网络
-
docker守护进程的配置和操作的方法
-
《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置...
-
Docker 配置守护进程和容器的网络 - 容器的网络
-
Docker容器的网络管理和网络隔离的实现