在Termux中运行我的Go应用程序时出现DNS查询问题

Cuc*_*ber 5 android go

我正在尝试编写一个Go App,它可以让我产生数字海洋水滴.它在我的台式机和笔记本电脑上工作正常,但是当我尝试在Termux的Android手机上运行它时,我得到了图像中显示的问题.我已经在他们的GitHub上提出了一个问题,但我不确定这是否与Termux有关,或者我是否遗漏了某些内容.

以下是错误的一部分:

拨打tcp:在[:: 1]上查找api.digitalocean.com:53:read udp [:: 1]:39143 - > [:: 1]:53:读取:连接被拒绝

不知道为什么它试图使用localhost作为DNS服务器.这是一张图片:

图像有问题

小智 6

只需创建/etc/resolv.conf并附加即可nameserver 8.8.8.8 解决此问题。

根据src/net/dnsclient_unix.go,如果/etc/resolv.conf不存在,localhost:53则选择作为名称服务器。

由于Android中的Linux不是那么“标准”。/etc/resolv.conf不可用。然后,该应用程序继续在 localhost:53 中查找主机。

  • @Cucumber我认为这根本没有得到解决(例如[this](https://github.com/termux/termux-packages/commit/70dae767351e8909a5ac7d1eba064db294cd5b8f))。根据 [termux/termux-app#210](https://github.com/termux/termux-app/issues/210) 你需要使用 [termux-golang package](https://github.com/ termux/termux-packages/tree/master/packages/golang) 这样你就可以链接到 termux libc。我假设 libc 将检测并使用 `$TERMUX_PREFIX/etc/resolv.conf`。至少这是[termux方式](https://github.com/termux/termux-packages/blob/master/packages/resolv-conf/build.sh)。 (2认同)