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

时间:2016-08-15 16:31:15

标签: android go

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

以下是错误的一部分:

  

在[:: 1]上拨打tcp:lookup api.digitalocean.com:53:read udp [:: 1]:39143-> [:: 1]:53:read:connection refused

不确定为什么尝试将localhost用作dns服务器。这是一张图片:

Image in question

4 个答案:

答案 0 :(得分:2)

只需创建/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。

答案 1 :(得分:1)

Your phone is trying to connect to itself[::1]:39143->[::1]:53

我的猜测是您的手机可能没有运行本地DNS服务器,因此您收到connection refused错误。

您的nslookup无关紧要,因为您直接与8.8.8.8相关联。相反,请尝试nslookup ::1dig @::1 google.com A

答案 2 :(得分:0)

我还发现可以使用proot来加载resolv.conf。示例:

pkg install proot resolv-conf
proot -b $PREFIX/etc/resolv.conf:/etc/resolv.conf ./fastnet

Source

答案 3 :(得分:0)

我使用termux-chroot解决了我的问题,您可以在此处4

中找到详细信息