内网 ubuntu 24.04 dial tcp: lookup qyapi.weixin.qq.com on 127.0.0.53:53: server misbehaving

文章目录

    在公司内网部署了一套 ubuntu 24.04 Desktop 作为一个内部 MES 小服务器。但是在 golang 服务中调用企业微信机器人消息接口时报错:

    Post “https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx”: dial tcp: lookup qyapi.weixin.qq.com on 127.0.0.53:53: server misbehaving

    我印象中,还是第一次遇到这个问题。用了这么多云服务器都是 ubuntu server,以及 windows WSL 里安装的 ubuntu,好像这个错误是第一次见。

    本地 DNS 缓存服务

    systemctl status systemd-resolved
    

    看来一下,这个服务是正常运行的。

    但是,

    cat /etc/systemd/resolved.conf
    

    配置文件里 DNS 一行是空的。改成 114.114.114.114 之后,重启服务:

    sudo systemctl restart systemd-resolved
    

    然后再次在 golang 接口中测试企业微信消息推送就正常了。

    为何 golang 会出现这个问题

    我印象中安装这个系统时,应该用过浏览器访问网站是正常的。为何在 golang 中就失败了呢?

    使用纯 Go 的 DNS 解析器,它严格遵循 /etc/resolv.conf 中列出的 第一个 nameserver(这里是 127.0.0.53),如果该服务器返回错误(如 server misbehaving)或不响应,Go 解析器不会自动尝试其他 nameserver,直接报错。

    我看了一下 /etc/resolv.conf, 确实里面只有一行记录:

    nameserver 127.0.0.53

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式