在 BIND 区域文件中添加 CNAME 记录

在 BIND 区域文件中添加 CNAME 记录

我已经使用 virtualbox 设置了虚拟专用网络,DNS 服务器名为:dns1.xyz1.com。我有一个名为: 的 Web 服务器xyz1.com

我想使用我的 DNS 服务器来解析网站的 IP 地址。我配置了正向区域文件,如下所示:

$TTL    604800

@       IN      SOA     dns1.xyz1.com. admin.xyz1.com. (
                              13         ; Serial
                         604820         ; Refresh
                          86600         ; Retry
                        2419600         ; Expire
                         604600 )       ; Negative Cache TTL

; name servers - NS records
    IN  NS  dns1.xyz1.com.
    IN  NS  dns2.xyz1.com.

; name servers - A records
dns1.xyz1.com.          IN      A       192.168.56.13
dns2.xyz1.com.          IN      A       192.168.56.15

; 192.168.56.0/24 - A records
host1.xyz1.com.         IN      A       192.168.56.17
xyz1.com.               IN      CNAME   host1.xyz1.com.
host1.xyz1.com.         IN      TXT     "some text"
host2.xyz1.com.         IN      A       192.168.56.18

在我添加 CNAME 记录之前,我能够输入:https://host1.xyz1.com然后浏览器会将我转移到正确的 Web 服务器。

在我添加了 CNAME 记录之后(我想让浏览器也翻译https://xyz1.com到同一个网站https://host1.xyz1.com),但不幸的是,在添加如下所示的 CNAME 行之后,没有任何地址打开所需的 Web 服务器:既没有:https://xyz1.com也没有 https://host1.xyz1.com

xyz1.com.               IN      CNAME   host1.xyz1.com.

仅供参考,以下是named.conf.local文件内容:

zone "xyz1.com" {
    type master;
    file "/etc/bind/forward.xyz1.com";
};

zone "56.168.192.in-addr.arpa"{
    type master;
    file "/etc/bind/reverse.xyz1.com";
};

底线是: 我想使用不同的名称访问同一个网络服务器(同一个 IP): 或https://xyz1.comhttps://host1.xyz1.com你能告诉我我的 CNAME 记录有什么问题吗?我该如何修复它?

编辑:

谢谢您的回答。但问题仍然存在。我无法解析此地址:xyz.com,我需要使用名称指向特定服务器:xyz.comhost1.xyz.com

根据一些答案,我更新了配置文件的这一部分:

; 192.168.56.0/24 - A records
@           IN  A   192.168.56.7
host1.xyz1.com.         IN      CNAME   xyz1.com.
host1.xyz1.com.         IN      TXT     "text here"

有一个可 ping 的 Web 服务器,其 IP 为:192.168.56.7我希望 和xyz1.comhost1.xyz1.com指向它。如何实现?

答案1

CNAME记录不能与任何其他记录类型共存,只有少数例外。就您而言,同一个域已经拥有SOANS记录(就像区域顶点始终拥有的一样)。

因此,BIND 很可能完全拒绝加载区域文件。(但只有通过实际检查 BIND 的错误日志才能确定。)

换句话说,不允许CNAME在区域顶点有,您必须手动将 IP 地址复制为A/AAAA记录。


将来,DNS 可能会标准化ANAME伪记录,允许 IP 地址在没有完整 CNAME 语义的情况下进行别名化。(目前,一些 DNS 托管服务提供这些服务作为自定义附加功能。)请参阅这里这里, 或者这里

答案2

您做反了。不要将域名设置为子域的 CNAME。将子域 (host1) 设置为域 (xyz1.com) 的 CNAME。

使用@表示根域(xyz1.com):

;192.168.56.0/24 - A records              
@               IN      A       192.168.56.17
host1.xyz1.com.         IN      CNAME   xyz1.com.
host2.xyz1.com.         IN      A       192.168.56.18

相关内容