Docker网络隔离防跨境扫描:从零开始的完整配置指南

为什么你的容器需要网络隔离来防跨境扫描

很多刚接触 Docker 的用户会默认使用 bridge 网络启动容器,这时容器能直接访问公网。
如果容器内运行的服务存在漏洞,境外扫描器就能通过公网 IP 直接探测到你的容器。Docker 网络隔离防跨境扫描的核心思路是:让容器只能访问内网或特定白名单地址,对外部 IP 的访问全部拒绝,从而阻断扫描器的探测和扩散。

准备条件:确认你的 Docker 环境

操作前请确认以下几点:

  • 服务器已安装 Docker,运行 docker --version 可看到版本号。
  • 你拥有 root 或 sudo 权限。
  • 服务器内核支持 iptables(一般为 Linux 默认)。

如果还没有安装 Docker,请执行:

curl -fsSL https://get.docker.com | bash
sudo systemctl start docker

第一步:创建自定义隔离网络

Docker 默认的 bridge 网络允许容器通过网关访问外网。
我们需要创建一个无外部网关的网络,让容器彻底无法访问公网:

docker network create \
  --driver bridge \
  --internal \
  --subnet=172.20.0.0/16 \
  isolated_net
--internal 是关键参数,它禁止容器通过该网络访问外部网络。

启动容器时指定使用这个网络:

docker run -d --network isolated_net --name myapp nginx

此时 myapp 无法访问任何外网 IP,自然也防住了跨境扫描。

第二步:保留必要出站权限(可选)

如果你的容器需要访问特定服务(如更新软件包、访问数据库),可以创建带自定义网关的网络并用 iptables 限制出站目标:

docker network create \
  --driver bridge \
  --subnet=172.20.0.0/16 \
  --gateway=172.20.0.1 \
  allowed_net
docker run -d --network allowed_net --name myapp2 nginx

然后通过 iptables 限制容器出站到非白名单 IP:

iptables -I FORWARD -s 172.20.0.0/16 -d 0.0.0.0/0 -j DROP
iptables -I FORWARD -s 172.20.0.0/16 -d <你的白名单IP> -j ACCEPT

避坑说明:iptables 规则重启后会丢失,建议使用 iptables-persistent 或 Docker Compose 结合 ip6tables 持久化。

第三步:验证隔离效果

  1. 进入容器测试网络连通性:
docker exec -it myapp bash
# 尝试访问外部(应失败)
curl -v http://www.baidu.com
# 尝试 ping 外网 IP(应超时)
ping 8.8.8.8
  1. 从外部扫描你的服务器 IP 和容器暴露端口(如有映射),确认无法访问容器内部服务(除非你特意映射了端口,但此时容器无外网访问能力,扫描器仍无法从容器发起对外连接)。

常见问题与避坑

Q:我用了 --internal 网络,容器内部无法解析域名怎么办?
A:--internal 网络不提供 DNS 解析。如果你需要域名访问,可额外创建一个非 internal 网络并限制 iptables 规则,或者配置容器使用宿主机的 DNS 代理。

Q:iptables 规则重启后失效怎样解决?
A:安装 iptables-persistentapt install iptables-persistent),保存规则:iptables-save > /etc/iptables/rules.v4。注意每次规则变更后重新保存。

Q:我已经映射了容器端口到宿主机,容器被隔离后还会被扫描吗?
A:宿主机暴露的端口仍可被扫描,但容器自身无法主动发起跨境连接,防止了蠕虫扩散。如需彻底隐藏服务端口,应在宿主机层面配置防火墙(如 ufw 或 cloud firewall)只允许可信 IP 访问。

避坑总结

  • 不要同时将容器加入 internal 网络和普通网络,否则仍可通过普通网络访问外网。
  • 修改 iptables 前备份当前规则:iptables-save > backup.v4
  • 如果使用 Docker Compose,在 docker-compose.yml 中直接声明 internal: true 的网络即可。

通过以上配置,你的容器已被有效隔离,Docker 网络隔离防跨境扫描的目标达成。
如果你还想进一步优化,可以结合 fail2ban、Cloudflare 等工具构建多层防线。
根据实际业务调整白名单,保持谨慎开放即可。

分享到:
上一篇
Docker离线部署无网络住宅主机
下一篇
使用Docker部署WordPress外贸站:入门的教程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意