You need to enable JavaScript to run this app. Docker环境下DOCKER-USER链iptables配置:拦截443入站且允许对应端口出站
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下DOCKER-USER链iptables配置:拦截443入站且允许对应端口出站

Docker 环境下 DOCKER-USER 链规则误拦出站流量的调整方案

原配置与故障现象

在Ubuntu主机部署容器化测试环境,最初为限制公网对容器端口的访问,配置了如下DOCKER-USER链规则:

iptables -I DOCKER-USER -p tcp --dport 80 -j REJECT
iptables -I DOCKER-USER -p tcp --dport 443 -j REJECT
iptables -I DOCKER-USER -p tcp --dport 3306 -j REJECT
iptables -I DOCKER-USER -s <my ip> -p tcp --dport 443 -j RETURN
iptables -I DOCKER-USER -s 172.18.0.0/16 -p tcp --dport 3306 -j RETURN

这套规则可以正常拦截非授权来源对80、443、3306端口的访问,但会误拦截所有出站的443端口流量,导致主机、容器对外发起HTTPS API调用、拉取外部资源等功能完全失效。需要在保留入站访问限制能力的同时,放行本机主动发起的对外443端口流量。

故障根因

  • 原有REJECT规则仅匹配「TCP协议、目标端口为对应服务端口」的特征,没有限制流量的来源接口方向,也没有基于连接状态做筛选
  • 本机/容器主动对外发起443端口请求时,出站的请求包特征刚好匹配「TCP、目标端口443」的条件,会直接被REJECT规则命中拦截,无法正常到达外部网络
  • 原有规则采用链头插入(-I)的方式,规则优先级与插入顺序颠倒,进一步提升了规则冲突的概率

调整后的正确配置

调整核心思路:拦截仅针对外部接口进入的入站新建连接,不限制本机、容器主动发起的出站流量,同时基于连接追踪放行已建立的合法连接。
操作步骤:

  1. 通过ip a命令确认主机连接公网的实际网卡名称(常见为eth0、ens33等),后续规则中替换为实际值
  2. 清空DOCKER-USER链上的原有自定义规则,避免残留冲突
iptables -F DOCKER-USER
  1. 按优先级顺序配置规则:
# 优先放行所有已建立、关联的连接流量,不拦截已经合法建立的连接双向通信
iptables -I DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j RETURN

# 白名单规则:指定IP可正常访问本地443端口的新建连接
iptables -I DOCKER-USER -s <my ip> -p tcp --dport 443 --syn -j RETURN

# 白名单规则:Docker内部网段可正常访问本地3306端口的新建连接
iptables -I DOCKER-USER -s 172.18.0.0/16 -p tcp --dport 3306 --syn -j RETURN

# 拦截规则:仅拒绝从公网网卡进入的、访问本地80/443/3306端口的新建SYN包
# 此处将eth0替换为实际的公网网卡名
iptables -A DOCKER-USER -i eth0 -p tcp --dport 80 --syn -j REJECT
iptables -A DOCKER-USER -i eth0 -p tcp --dport 443 --syn -j REJECT
iptables -A DOCKER-USER -i eth0 -p tcp --dport 3306 --syn -j REJECT

# 其余所有流量默认放行
iptables -A DOCKER-USER -j RETURN

配置生效效果

  • 非白名单IP从公网访问容器的80、443、3306端口时,会被直接拦截
  • 白名单指定IP可正常访问443端口服务,Docker内部网段可正常访问3306端口服务
  • 主机、容器主动对外发起的80、443、3306端口请求,在DOCKER-USER链的入接口为Docker网桥,与拦截规则要求的公网网卡匹配条件不符,可正常通行,不会被规则误拦。

内容的提问来源于stack exchange,提问作者Lennart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 15:54:04