Debian 主机上配置防火墙以适配 Docker Swarm Overlay 网络
先明确 Overlay 所指
- 若你指的是容器编排中的 Docker Swarm Overlay 网络(跨主机容器通信),需要放行控制面与数据面端口,并确保节点间互通。
- 若你指的是 OverlayFS(联合文件系统,用于容器镜像/层叠存储),它与网络无关,无需为此配置防火墙。
Docker Swarm Overlay 所需端口与方向
- 控制面与管理(所有 Swarm 节点)
- TCP 2377:Swarm 管理通信
- TCP/UDP 7946:节点间 gossip 通信
- UDP 4789:VXLAN 数据面(Overlay 隧道)
- 可选:Ingress 网络(发布端口到外部时)
- TCP 30000–32767:Swarm 的 ingress 端口范围(仅在需要对外发布服务端口时放行)
- 管理面建议仅对 管理网段 开放,数据面(7946/4789)按需对 集群节点网段 开放。
在 Debian 上用常见防火墙工具放行
- 使用 UFW(适合快速配置)
- 基本策略与常用端口
- sudo ufw default deny incoming
- sudo ufw default allow outgoing
- sudo ufw allow 22/tcp # SSH
- sudo ufw allow 2377/tcp # Swarm 管理
- sudo ufw allow 7946/tcp,7946/udp
- sudo ufw allow 4789/udp
- 如需对外发布端口:sudo ufw allow 30000:32767/tcp
- 启用与检查
- sudo ufw enable
- sudo ufw status verbose
- 使用 nftables(Debian 新版本推荐)
- 保存并启用规则(示例)
- sudo nft add rule ip filter input tcp dport 2377 accept
- sudo nft add rule ip filter input tcp dport 7946 accept
- sudo nft add rule ip filter input udp dport 7946 accept
- sudo nft add rule ip filter input udp dport 4789 accept
- sudo nft add rule ip filter input tcp dport 30000-32767 accept # 可选
- sudo nft add rule ip filter input tcp dport 22 accept
- sudo nft list ruleset
- sudo systemctl enable --now nftables
- 使用 iptables(传统方式)
- 放行示例
- sudo iptables -A INPUT -p tcp --dport 2377 -j ACCEPT
- sudo iptables -A INPUT -p tcp --dport 7946 -j ACCEPT
- sudo iptables -A INPUT -p udp --dport 7946 -j ACCEPT
- sudo iptables -A INPUT -p udp --dport 4789 -j ACCEPT
- sudo iptables -A INPUT -p tcp --dport 30000:32767 -j ACCEPT # 可选
- sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 持久化(Debian 常用做法)
- sudo iptables-save | sudo tee /etc/iptables/rules.v4
- 启用持久化服务或写入网卡启动脚本以确保重启后生效。
验证与常见问题
- 节点互通与端口可达性
- 管理面:nc -vz <管理IP> 2377
- Gossip:nc -vzu <节点IP> 7946
- VXLAN:nc -vzu <节点IP> 4789
- Ingress:nc -vz <节点IP> 30000-32767(仅当有外部发布端口时)
- 常见原因与排查
- 云厂商安全组/ACL 未放行对应端口(与系统防火墙叠加生效,需同时检查两端)。
- 节点时间不同步导致 TLS/握手异常(建议启用 NTP 同步)。
- 防火墙规则顺序不当导致被默认拒绝(确认 ACCEPT 规则在 DROP/REJECT 之前,或使用状态匹配如 conntrack)。
- 误把 OverlayFS 当作网络问题排查(它不影响网络连通性)。