如何使用iptables保护Docker容器?实现容器差异化访问控制
控制Docker容器外部访问的iptables配置方案
我最近刚好实现了类似的需求:保护Docker容器免受任意外部IP(0.0.0.0)访问,同时允许部分容器公开访问,其余仅对特定IP开放。以下是我验证有效的iptables配置步骤:
配置细节
- 创建自定义访问控制链:先新建一个专门用于Docker访问管控的自定义链
DOCKER-USER:
sudo iptables -N DOCKER-USER
- 设置默认拒绝策略:给这个链设置默认动作为拒绝所有请求,确保所有未被明确授权的访问都会被阻断:
sudo iptables -I DOCKER-USER -j DROP
- 允许特定IP访问:添加规则,让指定的外部IP(替换为你的目标IP
x.x.x.x)可以访问所有受保护的容器:
sudo iptables -I DOCKER-USER -s x.x.x.x -j ACCEPT
- 开放公开访问端口:如果有需要对外公开的容器端口(替换为你的目标端口
yyyy),添加规则允许所有IP访问该端口:
sudo iptables -I DOCKER-USER -p tcp --dport yyyy -j ACCEPT
- 关联转发规则:将
docker0网卡的转发流量导向我们的自定义控制链,确保所有Docker相关的外部访问都经过这套规则集:
sudo iptables -I FORWARD -o docker0 -j DOCKER-USER
目前这套配置已经稳定运行,完美实现了“部分容器公开、其余仅特定IP访问”的需求。
内容的提问来源于stack exchange,提问作者Jeferson Tenorio
相关产品推荐
相关产品推荐

