Proxifier中default规则未指向代理导致Navicat直连失败,需将default规则Action改为已配置代理(如MyFRPProxy)、Apply to设为All processes或包含navicat.exe,并重启Navicat生效。
Proxifier里default规则没指向代理,Navicat走直连
navicat在proxifier中没被显式匹配到规则时,会 fallback 到 default 规则。如果这个规则的 action 是 direct(直连),而你的数据库又只能通过代理访问,那连接必然失败——现象就是点击测试连接后卡住几秒,最终报“连接超时”或“无法连接到服务器”。
- 打开 Proxifier → Rules → 找到名为
default的规则(通常排在最底部) - 双击编辑,把
Action改成你已配置好的代理(比如MyFRPProxy),不是direct - 确保该规则的
Apply to是All processes或至少包含navicat.exe - 改完点 OK,再重启 Navicat(仅重试连接不够,进程需重新加载规则)
Navicat本身启用了SSH隧道,却还套Proxifier代理
两种代理机制叠用容易冲突:Navicat 内置的 SSH 隧道已经把流量转到跳板机,再经 Proxifier 强制转发,可能造成目标地址错乱或端口映射失效,典型表现是连接瞬间断开、报 ORA-12537 或 Connection reset。
- 先确认你是否真的需要双重代理:如果数据库在内网且跳板机可直连数据库,就只用 Navicat 的
SSH页签配置,关掉 Proxifier 对navicat.exe的拦截 - 如果必须用 Proxifier(比如跳板机本身也要走代理),那就禁用 Navicat 的
Use SSH tunnel,把所有流量交给 Proxifier 统一调度 - 检查 Navicat 的
Host Name/IP Address:走 Proxifier 时应填真实数据库 IP(如47.xx.56.156),不是跳板机地址;走 SSH 隧道时才填127.0.0.1
Proxifier代理配置正确但DNS解析失败
Proxifier 默认不代理解析域名,navicat.exe 会用自己的 DNS 去查数据库域名(比如 db.example.com),结果拿到的是内网或不可达 IP,后续连接自然失败。错误日志里常出现 getaddrinfo failed 或连接到错误 IP。
- 进 Proxifier → DNS → 勾选
Resolve host names through proxy - 确保这个选项只对需要代理的进程生效(比如只勾选
navicat.exe,别全局开启,否则影响浏览器等其他软件) - 如果数据库用的是私有域名(如
db.internal),且解析依赖内部 DNS,那不能开此项,得改用 IP 地址连接
代理链路中间节点未放行数据库端口
Proxifier 只管把流量发出去,不保证中间代理(比如 frp server、socks5 中继)允许对应数据库端口。常见于只配置了 22(SSH)和 80/443,但忘了放开 3306、5432 或 1521。
- 登录你的代理服务端(如阿里云 ECS),检查安全组是否放行目标端口(不只是客户端出口,更要确认代理服务监听端口 + 转发端口)
- 如果是 frp,确认
frps.ini中[common]下的allow_ports包含数据库端口,例如:allow_ports = 22,3306,5432 - 本地测试:在运行 Proxifier 的机器上,用
telnet 47.xx.56.156 3306(替换为实际 IP 和端口),如果超时,问题一定出在代理链路或服务端防火墙,不是 Navicat 配置
default 或 DNS 设置后必须重启 Navicat,否则旧上下文里的 socket 还按老规则走。这点容易被忽略,尤其当你反复测试却始终失败时。


















