我已经使用 synth-domain 选项启动了 dnsmasq,这样我就可以在我的 MacOS Ventura 13.1 上解析 AWS EC2 主机名:
$ ps -ef |grep [d]nsma
-2 12576 1 0 7:19AM ?? 0:00.01 dnsmasq --listen-address=127.0.0.1 --synth-domain=us-west-2.compute.internal,172.16.0.0/12,ip-
$
我已更新 /etc/resolv.conf 以将该 DNS 服务器放在首位:
$ cat /etc/resolv.conf | grep -v ^#
nameserver 127.0.0.1
nameserver 8.8.8.8
$
我还在“设置”控制面板中更新了我的 Wi-Fi 连接的网络设置,以获得相同的 DNS 顺序。
我可以查找 A 记录:
$ host -t a ip-172-24-31-194.us-west-2.compute.internal
ip-172-24-31-194.us-west-2.compute.internal has address 172.24.31.194
$
但如果我尝试 SSH 或 curl,我会失败:
$ curl ip-172-24-31-194.us-west-2.compute.internal
curl: (6) Could not resolve host: ip-172-24-31-194.us-west-2.compute.internal
$ ssh ip-172-24-31-194.us-west-2.compute.internal
ssh: Could not resolve hostname ip-172-24-31-194.us-west-2.compute.internal: nodename nor servname provided, or not known
$
与 Google Chrome 或 Firefox 的情况相同,DNS 查找失败。
这里发生了什么黑魔法?如何让我的 Web 浏览器和命令行实用程序使用 dnsmasq 的 synth 域?
更新:
scutil --dns
显示:
DNS configuration
resolver #1
nameserver[0] : 127.0.0.1
nameserver[1] : 8.8.8.8
flags : Request A records, Request AAAA records
reach : 0x00030002 (Reachable,Local Address,Directly Reachable Address)
resolver #2
domain : local
options : mdns
timeout : 5
flags : Request A records, Request AAAA records
reach : 0x00000000 (Not Reachable)
order : 300000
resolver #3
domain : 254.169.in-addr.arpa
options : mdns
timeout : 5
flags : Request A records, Request AAAA records
reach : 0x00000000 (Not Reachable)
order : 300200
resolver #4
domain : 8.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records, Request AAAA records
reach : 0x00000000 (Not Reachable)
order : 300400
resolver #5
domain : 9.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records, Request AAAA records
reach : 0x00000000 (Not Reachable)
order : 300600
resolver #6
domain : a.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records, Request AAAA records
reach : 0x00000000 (Not Reachable)
order : 300800
resolver #7
domain : b.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records, Request AAAA records
reach : 0x00000000 (Not Reachable)
order : 301000
DNS configuration (for scoped queries)
resolver #1
nameserver[0] : 127.0.0.1
nameserver[1] : 8.8.8.8
if_index : 7 (en0)
flags : Scoped, Request A records, Request AAAA records
reach : 0x00000002 (Reachable)
答案1
按照@Spiff 的建议,我将网络设置控制面板中的 DNS 服务器列表更改为仅 dnsmasq 服务器(127.0.0.1),然后重新启动dnsmasq
并告诉它使用 Google 公共 DNS 作为其上游服务器:
sudo dnsmasq --listen-address=127.0.0.1 --synth-domain=us-west-2.compute.internal,172.16.0.0/12,ip- --server=8.8.8.8
我现在可以解析 us-west-2.compute.internal 域中的 AWS EC2 主机名和 superuser.com 等真实 DNS 主机名。谢谢!