如何让我的 MacOS 中的 Web 浏览器使用 dnsmasq?

如何让我的 MacOS 中的 Web 浏览器使用 dnsmasq?

我已经使用 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 主机名。谢谢!

相关内容