开启GlobalProtect VPN时Liquibase连接Docker内PostgreSQL超时求助
解决WSL1+GlobalProtect VPN下Liquibase连接PostgreSQL容器超时问题
环境信息
- Windows 10 搭载 WSL1(Ubuntu 20.04)
- Docker Desktop 部署 PostgreSQL 容器
- GlobalProtect VPN
- 数据库连接环境变量配置:
export PGDATABASE=pgadmin export SCHEMA_NAME=public export PGUSER=pgadmin export PGPASSWORD='pgadmin_001' export PGHOST=127.0.0.1 export PGPORT=25432
问题现象
本地可正常登录PostgreSQL容器,但开启GlobalProtect VPN后执行liquibase update始终出现读取超时错误,关闭VPN后操作恢复正常。
解决办法
修复WSL1回环路由优先级
GlobalProtect会修改系统路由表,可能导致WSL访问本地回环地址时走VPN链路。在WSL终端执行route -n确认127.0.0.0/8网段的路由是否指向本地回环接口(lo)。若路由异常,手动添加回环路由:sudo route add -net 127.0.0.0 netmask 255.0.0.0 dev lo改用WSL内网IP连接数据库
替换环境变量中的PGHOST为WSL的内网IP(执行hostname -I获取),同时确保Docker容器端口绑定到0.0.0.0(启动容器时使用-p 0.0.0.0:25432:5432),避免VPN影响本地回环的端口转发。配置GlobalProtect排除内网网段
在GlobalProtect客户端设置中,添加WSL内网网段(通常为172.16.0.0/12或192.168.0.0/16)和Docker默认网段(172.17.0.0/16)到VPN排除列表,让这类内网流量不经过VPN隧道。增加Liquibase连接超时参数
在Liquibase命令中添加JDBC超时参数,适配VPN带来的网络延迟:liquibase --url="jdbc:postgresql://${PGHOST}:${PGPORT}/${PGDATABASE}?connectTimeout=10000&socketTimeout=30000" update
内容的提问来源于stack exchange,提问作者user6266816
相关产品推荐
相关产品推荐

