You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11下WSL2通过PyODBC连接SQL Server(需AnyConnect VPN)报错

解决WSL2下AnyConnect VPN连接SQL Server超时问题

问题背景

SQL连接代码在Windows 11系统可正常运行,但在同一设备的WSL2环境执行时出现登录超时错误:
连接代码:

conn=pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};'
                'Server=servername, 1433;'
                'Database=database;'
                'Trusted_Connection=yes;')

错误信息:

('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')

连接数据库需通过AnyConnect VPN,已按相关方法更新resolv.conf,但问题未解决。

排查与解决步骤

1. 验证WSL2与VPN服务器的连通性

  • 在Windows终端执行ping servername,获取数据库服务器的真实IP
  • 在WSL2终端执行ping <获取到的服务器IP>:
    • 若不通,说明VPN路由未同步到WSL2:
      1. Windows管理员命令提示符执行route print,找到VPN对应的内网网段路由条目
      2. WSL2内执行sudo ip route add <内网网段> via <WSL2网关IP>(网关IP可通过ip route show default获取,通常为172.x.x.1)

2. 确保WSL2 DNS解析稳定生效

  • WSL2内执行nslookup servername,检查是否能解析到正确IP:
    • 若解析失败,手动指定VPN DNS服务器:
      1. 编辑/etc/resolv.conf,添加nameserver <VPN提供的DNS服务器IP>
      2. 创建/etc/wsl.conf文件并写入以下内容,防止resolv.conf被自动重置:
        [network]
        generateResolvConf = false
        
      3. Windows命令提示符执行wsl --shutdown,重启WSL2后再测试

3. 配置WSL2下的Kerberos认证(针对Trusted_Connection)

WSL2的Trusted_Connection=yes依赖Kerberos,需完成以下配置:

  • 安装krb5工具:sudo apt-get install krb5-user
  • 编辑/etc/krb5.conf,添加域信息(替换为你的实际域名和KDC服务器):
    [realms]
    YOUR_DOMAIN.COM = {
        kdc = YOUR_DOMAIN_KDC_SERVER
        default_domain = YOUR_DOMAIN.COM
    }
    
  • 执行kinit your_username@YOUR_DOMAIN.COM,输入域密码后再运行SQL连接代码

4. 绕过DNS直接用IP连接

修改连接字符串,用服务器IP替换servername,排除DNS解析问题:

conn=pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};'
                'Server=<服务器IP>, 1433;'
                'Database=database;'
                'Trusted_Connection=yes;')

5. 检查防火墙规则

  • 临时关闭Windows防火墙测试连接,若能成功,需添加允许WSL2访问1433端口的防火墙规则

内容的提问来源于stack exchange,提问作者DeadJoker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:15:17