问题背景

在个人的 Mac Book Pro 上面,开启了 easyVPN 后,运行带有自开发的禅道用例测试结果同步后端监听器的 JMeter 时,是可以正常连接到禅道的测试数据库的。 但是在 windows 10 及以上版本,同样的开启了 easyVPN 后,运行则无法连接到数据库。一直提示

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

初步分析,以为是不同 VPN 账号的权限问题。可是用自己的 vpn 账号登录到 windows,依旧提示这个通讯错误。那明显应该是网络问题。 可是,在 MacBookPro 下面,相同的 vpn 账号并没有这个问题。 问题出在哪呢?

找到原因

原来数据库本身并没有放在 vpn 网络里,windows 的 easyVPN 将数据库的 IP 做了路由,路由经过 VPN,从而导致无法达到数据库服务器。

解决办法

在 windows 下的时候,启动好 easyVPN 后,将数据库所在服务器的 IP 从路由中删除。 比如

# 192.168.10.10 是数据库IP的话,则用管理员方式启动命令行工具,执行
route delete 192.168.10.10