使用 dnsmasq 在本地将域名解析为 CNAME 别名

luq*_*o33 12 domain-name-system cname-record dnsmasq

我想将域名解析为somedomain.comCNAME(AWS 负载均衡器,例如some-balancer-1213231237.ap-southeast-2.elb.amazonaws.com),但仅限于本地

我的意思是要实现的是,每当我尝试访问时somedomain.com,我都希望得到上述负载均衡器的服务——这应该仅限于我自己的计算机。

这是不可能通过编辑来实现的,/etc/hosts因为在那里只能映射 A 记录(IP 地址)。我在某处读到dnsmasq了实现这一目标的最强大的解决方案。但是,文档对于如何实现这一点非常不清楚。我很感激你的建议,也许还有一个带例子的配置。谢谢!

Tom*_*iie 7

您可以将以下内容添加到您的配置文件中dnsmasq

cname=somedomain.com,some-balancer-1213231237.ap-southeast-2.elb.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

手册页中所述

--cname=<cname>,[<cname>,]<target>[,<TTL>]
Run Code Online (Sandbox Code Playgroud)

返回一个 CNAME 记录,表明它<cname>确实是<target>. 目标存在重大限制;它必须是 dnsmasq 从 /etc/hosts(或其他主机文件)、从 DHCP、从--interface-name或从另一个--cname. 如果目标不满足此条件,则忽略整个 cname。cname 必须是唯一的,但允许多个 cname 指向同一个目标。实际上,可以在一行中为一个目标声明多个 cname,如下所示:--cname=cname1,cname2,target

如果给出了生存时间,它会覆盖默认值,即零或 的值--local-ttl。该值是一个正整数,并以秒为单位给出生存时间。

正如手册页指定的那样,您必须在/etc/hosts文件中定义目标:

203.0.113.80   some-balancer-1213231237.ap-southeast-2.elb.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

所以我不确定这对你是否有用。

  • 请注意,至少在 2.82 版中,此行为似乎已更改,并且外部目标按预期工作。 (3认同)
  • dnsmasq 中的 CNAME 记录不适用于此用例。正如您引用的 dnsmaq 手册中所写:“目标存在重大限制”。dnsmasq 不会接受 @luqo33 提到的外部目标(例如“some-balancer-1213231237.ap-southeast-2.elb.amazonaws.com”)。 (2认同)