Docker内置驱动不提供虚拟防火墙网段,但macvlan/ipvlan配合宿主机iptables可实现等保三级逻辑隔离:macvlan通过独立MAC/IP直通物理网络规避ICC风险,ipvlan L3模式则以共享MAC+IP路由实现轻量分段,策略统一落于DOCKER-USER链并支持日志审计与eBPF增强。

直接用 Docker 内置网络驱动本身不提供“虚拟防火墙网段”功能,但可通过 macvlan 或 ipvlan 驱动 + 宿主机 iptables/nftables 策略组合,在容器侧实现等保三级要求的逻辑隔离网段——本质是让容器获得独立 IP 和 L2/L3 网络身份,再由宿主机统一实施策略拦截与审计。
用 macvlan 构建带策略边界的直通网段
macvlan 允许容器独占一个物理网卡子接口(如 eth0.100),拥有真实 MAC 和 IP,流量不经过 docker0 桥接层,天然规避 ICC(容器间通信)风险,满足等保三级“网络架构安全”中“避免隐式旁路”的要求。
- 创建带 VLAN 标签和固定子网的 macvlan 网络:
docker network create -d macvlan \<br> --subnet=192.168.100.0/24 \<br> --gateway=192.168.100.1 \<br> --ip-range=192.168.100.10-192.168.100.200 \<br> -o parent=eth0.100 \<br> -o macvlan_mode=bridge \<br> --label compliance=level3-finance \<br> finance-macvlan-net
- 该网络下容器 IP 直接暴露在物理子网中,宿主机可对
192.168.100.0/24整体施加 iptables 规则,例如仅允许访问数据库端口:iptables -A FORWARD -i eth0.100 -o eth0 -d 192.168.200.5/32 -p tcp --dport 5432 -j ACCEPT<br>iptables -A FORWARD -i eth0.100 -j DROP
- 配合
--label标注,后续可用脚本或 OPA 策略自动校验该网络是否被误用于非金融业务容器
用 ipvlan L3 模式实现更轻量的策略网段
ipvlan L3 模式不分配 MAC 地址,只分配 IP,所有容器共享父接口 MAC,但路由由内核 L3 转发完成。相比 macvlan 更节省 MAC 表项,适合高密度部署,且天然支持跨主机路由(需配合 BGP/ECMP),满足 PCI DSS “网络分段可监控”要求。
- 创建 ipvlan L3 网络并绑定到三层子接口:
docker network create -d ipvlan \<br> --subnet=10.20.30.0/24 \<br> --gateway=10.20.30.1 \<br> -o parent=eth0.30 \<br> -o ipvlan_mode=l3 \<br> --label pci-dss=segmented \<br> pci-frontend-net
- 此时容器流量走
eth0.30的三层转发路径,可在宿主机上基于-i eth0.30设置精细规则,例如限制出向 DNS 请求频率:iptables -t mangle -A FORWARD -i eth0.30 -p udp --dport 53 -m hashlimit --hashlimit-above 10/sec --hashlimit-name dns_burst -j DROP - L3 模式下容器无法直接二层互通,无需额外禁用 ICC,减少配置遗漏风险
关键策略落地点:宿主机 iptables 的 docker-user 链
Docker 启动时自动创建 DOCKER-USER 链,位于 filter 表最前端,所有进出容器的流量必经此链——这是插入合规策略的黄金位置,优先级高于 Docker 自动规则,不会被覆盖。
- 拒绝非授权跨网段访问(防止横向渗透):
iptables -I DOCKER-USER -i docker0 -o eth0.100 -j DROP<br>iptables -I DOCKER-USER -i eth0.100 -o docker0 -j DROP
- 强制记录所有被拒连接(满足等保日志留存要求):
iptables -I DOCKER-USER -j LOG --log-prefix "FINANCE-FW-DROP: "<br>iptables -I DOCKER-USER -j DROP
- 规则需持久化:写入
/etc/iptables/rules.v4(Debian/Ubuntu)或通过iptables-save导出,避免重启丢失
补充增强:NetworkPolicy + eBPF 实现运行时动态防护
单靠静态 iptables 不足以应对容器快速启停带来的策略漂移。建议在 macvlan/ipvlan 网络之上叠加:
- Cilium NetworkPolicy:定义基于标签的细粒度东西向策略,例如只允许风控服务调用反欺诈 API:
spec:<br> endpointSelector:<br> matchLabels:<br> app: risk-engine<br> ingress:<br> - fromEndpoints:<br> - matchLabels:<br> app: fraud-api<br> toPorts:<br> - ports:<br> - port: "8080"
- eBPF 过滤器:在 socket 层拦截非法协议(如 ICMP、SMB)或异常 TLS 握手,避免进入 netfilter,降低延迟并满足金融低延时要求



















