我们已经为我们的域设置了DNS,这将导致内部客户端parsing来自外部客户端的不同DNSlogging。
就目前而言,这两个区域是完全分开pipe理的。 对于内部和外部不同的logging来说,这是没有问题的,但是对于其他所有内容,所有的logging都必须在两个地方重复。 大多数CNAMElogging,MXlogging,SPFlogging和一些Alogging都需要在这两个地方input和维护。
尽pipe这不是天生不可接受的,但从devise的angular度来看,这样的数据重复并不理想。 我觉得理想情况下,内部名称服务器只是简单地转发来自外部域名服务器的结果,但是允许我们覆盖或添加额外的logging。 虽然看起来像我可以使用指定的转发器(如dnsmasq )来做这样的事情,但是平面文件configuration会让创意难以卖给团队的其他成员。
除此之外,我能够想到的最好的解决scheme包括PowerDNS与MySQL后端和Web界面 。 这使得为我们想要覆盖的每个子域(例如www.example.com)添加区域和根Alogging相当容易,这意味着根域(例如example.com)上的其他logging仍然是从外部名称服务器转发。
看起来我似乎偏离了那种被认为很常见的东西的规范,对吧? 有没有一个更干净的方式来pipe理拆分DNS没有维护重复的logging? 还是有什么我失踪?
在其中一个权威域名服务器位于内部networking边界的networking中,我使用bind视图和$INCLUDE指令:
mydomain-global.zone :
@ IN SOA ns1 hostmaster ( 12345; 1D; 2M; 1M; 3H ) IN NS ns1 IN NS ns2 IN MX 10 mail www IN A 1.2.3.4 other-public-host IN A 1.2.3.5
mydomain-internal.zone :
$INCLUDE mydomain-global.zone an-internal-record IN A 10.20.30.40 _kerberos IN SRV 0 0 88 dir
这些区域是根据视图定义select的:
view "internal" { match-clients { 10.0.0.0/8; }; zone "mydomain" { type master; file "mydomain-internal.zone"; }; include "named.conf.internalzones"; } view "global" { match-clients { any; }; zone "mydomain" { type master; file "mydomain-global.zone"; };
要为内部/外部查询分配不同的目标logging,请在mydomain-(internal|global).zone的底部添加两个其他区域片段和$INCLUDE 。
域名必须拥有一个权威的pipe理点是DNS工作的固有方式; 这个改变很less有机会很快改变。
最好的(也是官方的)自动化方法是使用ddns和nsupdate。 DDNS有一个确定的格式,可以以任何您需要的方式进行保护和脚本。