![是否可以使用 systemd-resolved 作为容器级 DNS 转发器?具体由 Anbox 实现](https://linux22.com/image/916241/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20systemd-resolved%20%E4%BD%9C%E4%B8%BA%E5%AE%B9%E5%99%A8%E7%BA%A7%20DNS%20%E8%BD%AC%E5%8F%91%E5%99%A8%EF%BC%9F%E5%85%B7%E4%BD%93%E7%94%B1%20Anbox%20%E5%AE%9E%E7%8E%B0.png)
我正在使用 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通,但不能进行查找。
我的问题是:
systemd-resolved 现在作为 DNS 转发器可以正常运作吗?
如何使用 ubuntu、adb 和 android 应用程序中提供的任何工具进一步识别问题?
需要注意的是,为了简化测试,我禁用了所有防火墙。默认 DNS 8.8.8.8 也因未知原因无法工作。adb shell 没有足够的实用程序来进一步识别 DNS 问题