是否可以设置 Bind9 来转发 DNS 请求,以便请求的 DNS 后缀是另一个更长、更复杂的后缀的别名。
例如,我是否可以设置 Bind9 来解析这些请求将转发给machine-name.k8zb98713j4bka.dx.internal.cloudapp.net
的machine-name.my-app.internal
的 DNS 请求。在这种情况下,my-app.internal
是需要转换为k8zb98713j4bka.dx.internal.cloudapp.net
的后缀。
我在 Azure 中使用注册的自定义 DNS 服务器设置了虚拟网络。我根据文章使用 Ubuntu 和 Bind9 设置 DNS 服务器:
https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-ubuntu-16-04
https://github.com/Azure/azure-quickstart-templates/tree/master/301-dns-forwarder/
自定义 DNS 设置效果很好。我遇到的一个问题是,如果我想使用计算机名称在 VM 之间进行通信,则无法仅解析计算机名称。我需要使用:
ping machine-name.<unique-id>.dx.internal.cloudapp.net
这很烦人,而且容易出错,因为我需要复制粘贴完整的后缀。
这里被命名为.conf.options:
acl goodclients {
10.0.0.0/8;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
recursion yes;
allow-query { goodclients; };
forwarders {
168.63.129.16;
8.8.8.8;
8.8.4.4;
};
forward only;
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
我希望使用自定义 bind9 DNS 服务器注册一个"后缀别名"(如果存在这样的事情)。
最坏的情况是,我需要创建区域文件,并手动注册 A 记录以引用私有 IP 地址。但我更喜欢使用:
nslookup machine-name.my-app.internal
而不是:
nslookup machine-name.k8zb98713j4bka.dx.internal.cloudapp.net
上述两个请求将解析相同的专用 IP 地址,而无需手动注册 DNS A 记录。
自定义 DNS 设置效果很好。我遇到的一个问题是,如果我 想要在虚拟机之间进行通信,使用计算机名称,我无法 仅解析计算机名称。
据我所知,如果名称解析在同一虚拟网络中的 VM 或同一云服务中的 Azure 云服务角色实例之间有效。您可以直接使用主机名或 FQDN。其他方案仅适用于 FQDN。检查 Azure VNet 中的名称解析方案。
因此,如果只是在同一虚拟网络中工作,则应使用 Azure DNS 专用区域或 Azure 提供的名称解析nslookup
计算机名称。不同虚拟网络中的 VM 之间的名称解析仅适用于 FQDN。