先决条件
为了获得我们的内部自由头像服务器正常工作,我需要为我们的公共域设置一个 SRV 记录company.com
:
_avatars._tcp.company.com. IN SRV 0 0 80 avatars.internal
如您所见,头像服务器位于内部域中,外部无法访问,因此 SRV 记录不应公开。
问题
我们有一个 BIND DNS 服务器,用于解析内部域的请求。此服务器将请求转发company.com
到公共 DNS 服务器(以及应该保留这样我们只需要在一台服务器上管理公共名称)。
现在,我如何覆盖_avatars._tcp.company.com
本地 BIND 服务器上的 SRV 记录,同时将所有其他请求转发到公共服务器?
我知道对于子域名来说这很容易(只需为子域名定义一个主区域即可),但我无法对主域名的 SRV 记录执行此操作。我该怎么办?
我尝试过的方法
通过以下设置,解析适用于子域,但不适用于主域:
$ dig @localhost +short SRV _avatars._tcp.company.com
$ dig @localhost +short SRV _avatars._tcp.bookmarks.company.com
0 0 80 avatars.internal.
/etc/bind/named.conf.local
zone "_avatars._tcp.company.com" {
type master;
file "/etc/bind/db._avatars._tcp.company.com";
allow-update { none; };
};
zone "bookmarks.company.come" {
type master;
file "/etc/bind/db.bookmarks.company.com";
allow-update { none; };
};
/etc/bind/db.bookmarks.company.com
$TTL 86400
@ IN SOA @ root (
2012082201 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns.company.com.
@ IN A 192.168.1.41
_avatars._tcp.bookmarks.company.com. IN SRV 0 0 80 avatars.internal.
/etc/bind/db._avatars._tcp.company.com
$TTL 86400
@ IN SOA @ root (
2012082201 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns.company.com.
@ IN SRV 0 0 80 avatars.internal.
_avatars._tcp.company.com. IN SRV 0 0 80 avatars.internal.
(是的,最后两行是相同的,但只是为了确保)
答案1
向您的内部 DNS 服务器添加特定名称 () 的区域_avatars._tcp.company.com.
,其中包含您想要覆盖的单个记录。
SRV 记录并不特殊 - 它只是一个 DNS 记录,其行为与任何其他 DNS 记录一样。
覆盖区域应与下图类似
$TTL 3600
@ IN SOA dev.company.com. root.company.com. (
2009071505 ; serial
10800 ; refresh
3600 ; retry
3600000 ; expire
86400 ) ; minimum
@ IN NS inside-ns.company.com.
_foo.dev.company.com. IN SRV 0 0 80 google.co.uk.