Docker创建网络挂起导致Ubuntu服务器VPN侧SSH连接中断问题问询
根因
核心问题是Docker自动创建的网桥网段和你VPN使用的网段发生了路由冲突:
- 你提供的网卡信息显示,compose启动时创建的网桥
br-05fb571c05ec使用192.168.16.0/20网段,可覆盖192.168.16.1~192.168.31.254的所有地址 - Docker创建网桥时会自动在服务器路由表添加该网段的直连路由,优先级高于VPN的静态路由
- 当你的VPN客户端所在网段刚好落在192.168.16.0/20范围内时,服务器回传给VPN的流量会被错误路由到空的Docker网桥,导致VPN链路断连,和22端口是否被占用无关
解决方法
1. 全局配置Docker默认地址池(推荐,一劳永逸)
修改Docker全局配置,指定所有新建网桥都从无冲突的地址段分配IP:
- 编辑
/etc/docker/daemon.json(文件不存在则新建),添加如下配置,将base字段替换为确定不会和你的VPN、本地局域网冲突的私有网段:
{ "default-address-pools": [ {"base":"10.20.0.0/16","size":24} ] }
- 执行命令重启Docker服务生效:
systemctl restart docker
注意:该配置仅对后续新建的Docker网络生效,已经存在的网桥需要手动删除重建。
2. 单项目指定网络网段(仅针对当前compose项目生效)
直接在你的docker-compose.prod.yml中手动指定默认网络的网段,避免自动分配到冲突段:
在yml配置文件末尾添加如下内容,将subnet替换为无冲突的网段:
networks: default: driver: bridge ipam: config: - subnet: 10.20.10.0/24
修改后重新启动compose项目即可。
验证方法
修改配置前可执行ip route命令查看路由表,故障发生时如果看到192.168.16.0/20路由指向br开头的Docker网桥,即可确认是网段冲突问题。
内容的提问来源于stack exchange,提问作者odyssy3105
相关产品推荐
相关产品推荐

