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

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

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

我想要实现的是,每当我尝试访问时somedomain.com,我都希望由上面提到的负载均衡器提供服务 - 这应该仅限于我自己的计算机。

通过编辑无法实现这一点/etc/hosts,因为其中只能映射 A 记录(IP 地址)。我读到过一些文章说这dnsmasq是实现这一点的最可靠的解决方案。但是,文档中没有明确说明如何实现这一点。如果您能提供建议,或者提供一些带有示例的配置,我将不胜感激。谢谢!

答案1

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

cname=somedomain.com,some-balancer-1213231237.ap-southeast-2.elb.amazonaws.com

按照手册页

--cname=<cname>,[<cname>,]<target>[,<TTL>]

返回一个 CNAME 记录,表明<cname>确实是<target>。目标有重大限制;它必须是 dnsmasq 从 /etc/hosts(或其他 hosts 文件)、DHCP、--interface-name或从另一个 中知道的 DNS 名称--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

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

答案2

你必须记住,有待解决必须添加主机名到 /etc/hosts文件也是如此!例如:hosts 文件中的右侧部分:

10.1.1.1 ip1.example.com

dnsmasq.conf 条目:cname=cname.example.com,ip1.example.com

测试:

ping  cname.example.com
PING ip1.example.com (10.1.1.1) 56(84) bytes of data.
64 bytes from ip1.example.com (10.1.1.1): icmp_seq=1 ttl=64 time=0.063 ms

这就是全部了 ;-)

相关内容