是否可以使用 systemd-resolved 作为容器级 DNS 转发器?具体由 Anbox 实现

是否可以使用 systemd-resolved 作为容器级 DNS 转发器?具体由 Anbox 实现

我正在使用 ubuntu 18.04,它默认启用了 systemd-resolved,并且按照惯例将本地“虚拟”DNS ip 地址设置为 127.0.0.53:53。未安装其他 dns 服务(例如 dnsmasq),所有配置和启动脚本都从系统中删除,因此它们不会产生影响。

本地 DNS 似乎运行正常。当我使用 dig 进行测试时,它产生了正确的查找结果:

$ dig @127.0.0.53 www.google.com

; <<>> DiG 9.11.3-1ubuntu1.9-Ubuntu <<>> @127.0.0.53 www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21226
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.google.com.            IN  A

;; ANSWER SECTION:
www.google.com.     18  IN  A   172.217.1.164

;; Query time: 24 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Tue Sep 24 01:24:52 EDT 2019
;; MSG SIZE  rcvd: 59

相比之下,DHCP 建议的 LAN DNS 给出了类似的查找:

$ dig @192.168.0.1 www.google.com

; <<>> DiG 9.11.3-1ubuntu1.9-Ubuntu <<>> @192.168.0.1 www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11809
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.com.            IN  A

;; ANSWER SECTION:
www.google.com.     53  IN  A   172.217.0.228

;; Query time: 65 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Tue Sep 24 01:25:12 EDT 2019
;; MSG SIZE  rcvd: 59

不幸的是,它们在功能方面似乎有所不同。当它们被本地容器用作 DNS 服务器时(例如用于 Android 模拟的 Anbox):

$ sudo snap get anbox -d
{
    "bridge": {
        "nat": {
            "enable": true
        }
    },
    "container": {
        "network": {
            "dns": "127.0.0.53"
        }
    },
    "rootfs-overlay": {
        "enable": true
    }
}

事实证明,只有局域网DNS 192.168.0.1可以正常工作,本地‘虚拟’DNS 127.0.0.53只能ping通,但不能进行查找。

我的问题是:

  1. systemd-resolved 现在作为 DNS 转发器可以正常运作吗?

  2. 如何使用 ubuntu、adb 和 android 应用程序中提供的任何工具进一步识别问题?

需要注意的是,为了简化测试,我禁用了所有防火墙。默认 DNS 8.8.8.8 也因未知原因无法工作。adb shell 没有足够的实用程序来进一步识别 DNS​​ 问题

相关内容