核心是切断内网资源与外网的直接通信路径,需通过专用虚拟交换机(不绑定物理网卡)、禁用集成服务(尤其数据交换/剪贴板)、Docker自定义网络+network_mode: "none"、白名单代理及DNS截断四重机制实现严格隔离。
开发环境要实现内外网严格隔离,核心是切断内网资源与外网的直接通信路径,同时确保开发所需服务可受控访问。这不是单纯禁用网卡或拔网线,而是通过网络结构、权限控制和运行时边界三重手段达成。
用专用虚拟网络切断外部通路
这是最基础也最关键的一步。宿主机或物理网络不能成为“中转站”。
- 在 Hyper-V 或 VMware 中创建“仅主机”(Host-Only)或“专用”(Private)虚拟交换机,不绑定任何物理网卡
- 所有开发用虚拟机/容器只连接该交换机,启动后获取 APIPA 地址(169.254.x.x),确认无默认网关、无 DNS、无法 ping 通宿主机网卡
- 若需访问内网服务(如公司 Git、内部 Nexus),应在该虚拟网络内部署代理或跳板机,而非开放直连
容器级隔离:Docker Compose 自定义网络 + 网络策略
本地开发常用 Docker,但默认 bridge 网络仍可能被误配导致泄露。必须显式隔离。
- 禁用默认网络,全部服务声明使用自定义桥接网络:
networks: [dev-isolated] - 在
docker-compose.yml中明确关闭外网访问:network_mode: "none"或不映射任何端口到宿主机(避免ports:段) - 如需调试,仅临时启用特定端口映射,并配合
extra_hosts或dns字段限制域名解析范围,禁止解析公网域名
系统级阻断:禁用集成服务与共享通道
即使网络不通,剪贴板、拖放、时间同步等隐性通道仍可能泄露数据或引入风险。
- 虚拟机关机后,在设置中彻底禁用 Hyper-V / VMware 的“数据交换”“剪贴板共享”“拖放”三项集成服务
- Linux 宿主机上禁用
virtio-guest-tools或open-vm-tools中的 guestinfo、clipboard 模块 - Windows 开发机若用 WSL2,需在
/etc/wsl.conf中设networking=false并重启 WSL,防止自动配置 DNS 和代理
访问控制强化:白名单代理与 DNS 截断
当开发确实需要有限外网能力(如拉取公共包),必须收口管理,不可放行全量流量。
- 在隔离网络中部署轻量代理(如 Squid 或 TinyProxy),仅允许访问预设域名(
npmjs.org、repo.maven.apache.org)和固定端口(443/80) - 修改开发机或容器的
/etc/resolv.conf,强制使用内部 DNS(如 dnsmasq),对非白名单域名返回 NXDOMAIN 或空响应 - 配合防火墙规则(
iptables或nftables)丢弃所有目标非代理 IP 的出向 443/80 流量,形成双重保险


















