我想将域名解析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
这就是全部了 ;-)