在前面的文章中我们搭建了一个主从DNS,但是在实际的应用中,仅仅搭建起来是不够的,对DNS添加各种记录是日常维护DNS中比较常见的问题,如添加A记录,CNAME,MX,PTR等。
添加A记录
在主从的配置中,一般会对主DNS进行修改,从DNS同步主DNS的数据。
编辑master节点的zone配置文件,可以直接在末尾添加一行记录,同时将serial值 +1:
2001 ; serial # 将原来2000的serial值改为2001,使进行slave同步
$ORIGIN test.com. shanks A 1.2.3.4 op A 1.2.3.4 t A 1.2.3.4 trying A 192.168.1.2 # 添加的一行记录
执行 rndc reload 使配置文件生效,此时,slave上的zone文件也会更新。
验证结果:
[[email protected] ~]# host trying.test.com 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: trying.test.com has address 192.168.1.2
添加CNAME记录
与添加A记录一样,在文件末尾追加一行记录:
tryingstuff CNAME trying.test.com. # 末尾的“.” 不能忽略
将serial +1
执行rndc reload使配置文件生效。
验证结果:
[[email protected] ~]# host tryingstuff.test.com 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: tryingstuff.test.com is an alias for trying.test.com. trying.test.com has address 192.168.1.2
添加MX记录
同理,修改zone 配置文件,serial +1, zone文件末尾加入一行结果:
# vim /var/named/chroot/etc/test.com.zone mx MX 3 192.168.1.100 # 3表示优先级,数字越低,优先级越高
执行rndc reload, 测试结果:
[[email protected] ~]# host mx.test.com 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: mx.test.com mail is handled by 3 192.168.1.100.test.com.
添加PTR记录
在很多场景中需要用到PTR反向解析,这里在原来的基础上添加PTR记录:
编辑master 上的view配置文件,加入PTR的zone:
[[email protected] etc]# cat view.conf view "View-test" { zone "test.com" { type master; file "test.com.zone"; allow-transfer { 192.168.1.11; }; notify yes; also-notify { 192.168.1.11; }; }; zone "168.192.in-addr.arpa" { # 这里是添加的反向解析域名,表示解析192.168段的主机 type master; file "168.192.zone"; # zone 文件名 allow-transfer { 192.168.1.11; }; notify yes; also-notify { 192.168.1.11; }; }; };
在添加了PTR的域之后,需要在指定的168.192.zone 文件中指定解析的内容:
[[email protected] etc]# cat 168.192.zone $TTL 3600 ; 1 hour @ IN SOA op.test.com. dns.test.com. ( 2000 ; serial 900 ; refresh (15 minutes) 600 ; retry (10 minutes) 86400 ; expire (1 day) 3600 ; minimum (1 hour) ) NS op.test.com. 100.1 IN PTR a.test.com. # 添加的反向解析记录,对应的IP为 192.168.1.100
修改master上PTR zone文件的属性:
chown named.named 168.192.zone rndc reload
此时slave上的节点是不会同步master上的PTR zone文件的,需要先设置zone配置文件。
修改slave节点/var/named/chroot/etc/view.confg的配置,增加PTR的zone配置:
zone "168.192.in-addr.arpa" { type slave; masters {192.168.1.10;}; Masterfile-Format Text; file "slave.168.192.zone"; };
执行rndc reload,同步PTR zone文件,此时,在slave上就可以看到slave同步的文件了。
[[email protected] ~]# cat /var/named/chroot/etc/slave.168.192.zone $ORIGIN . $TTL 3600; 1 hour 168.192.in-addr.arpa IN SOA op.test.com. dns.test.com. ( 2001 ; serial 900 ; refresh (15 minutes) 600 ; retry (10 minutes) 86400 ; expire (1 day) 3600 ; minimum (1 hour) ) NS op.test.com. $ORIGIN 168.192.in-addr.arpa. 100.1 PTR a.test.com.
测试解析结果:
[[email protected] ~]# host 192.168.1.100 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: 100.1.168.192.in-addr.arpa domain name pointer a.test.com. #返回的结果正确
使用DNS实现服务的负载均衡
对于一个域名多个IP 的情况,DNS会对多个IP进行轮询,这样就实现了负载均衡功能。DNS只会按照自身的配置信息进行轮询,不会探测后端的服务节点是否可用。
直接在master上的ZONE配置文件上添加一条A 记录,serial 值+1 即可。
t A 192.168.1.111
[[email protected] etc]# host t.test.com 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: t.test.com has address 192.168.1.111 # 反回了两行信息 t.test.com has address 1.2.3.4
配置DNS视图(智能DNS)
智能DNS是指通过判断用户的来源,返回给用户一个最佳的服务站点。简单来说就是让联通和电信的不同用户在访问相同的站点时,分别将请求解析到与用户网络相同的服务器上来提升用户的体验。只能DNS还可以探测后端节点的运行状态,如果发现后端有节点故障,会将请求发送到能提供正常服务的主机上。
配置智能DNS,修改master上的/etc/named.conf 文件:
vim /etc/named.conf
acl group1 { # 在原来的基础上增加两个group的配置,加在include之前 192.168.1.10; # 在两个group中分别指定两个不同的DNS服务器. }; acl group2 { 192.168.1.11; }; include "/var/named/chroot/etc/view.conf";
编辑master节点上的view.conf 文件,添加group,将之前的view.conf 文件清空:
[[email protected] etc]# cat view.conf view "GROUP1" { match-clients { group1;}; zone "viewtest.com" { type master; file "group1.viewtest.com.zone"; }; }; view "GROUP2" { match-clients { group2;}; zone "viewtest.com" { type master; file "group2.viewtest.com.zone"; }; };
分别创建两个指定的zone文件:
[[email protected] ~]# cat /var/named/chroot/etc/group1.viewtest.com.zone $ORIGIN . $TTL 3600 ; 1 hour viewtest.com IN SOA op.viewtest.com dns.viewtest.com. ( 2007 ; serial 900 ; refresh (15 minutes) 600 ; retry (10 minutes) 86400 ; expire (1 day) 3600 ; minimum (1 hour) ) NS OP.viewtest.com. $ORIGIN viewtest.com. view A 1.2.3.4 op A 1.2.3.4
[[email protected] ~]# cat /var/named/chroot/etc/group2.viewtest.com.zone $ORIGIN . $TTL 3600 ; 1 hour viewtest.com IN SOA op.viewtest.com dns.viewtest.com. ( 2007 ; serial 900 ; refresh (15 minutes) 600 ; retry (10 minutes) 86400 ; expire (1 day) 3600 ; minimum (1 hour) ) NS OP.viewtest.com. $ORIGIN viewtest.com. view A 1.2.100.100 op A 1.2.100.100
两个文件的指定解析的IP不同。
更改两个文件的权限,并重启named:
chown named.named group* systemctl restart named
测试结果,以192.168.1.10作为客户端,对DNS发起解析请求:
[[email protected] ~]# host view.viewtest.com 192.168.1.10 Using domain server: Name: 192.168.1.10 Address: 192.168.1.10#53 Aliases: view.viewtest.com has address 1.2.3.4
以192.168.1.11作为客户端,对DNS发起解析请求:
[[email protected] ~]# host view.viewtest.com 192.168.1.10 Using domain server: Name: 192.168.1.10 Address: 192.168.1.10#53 Aliases: view.viewtest.com has address 1.2.100.100
不同的客户端解析的结果不一样,这样就达到了我们的要求。
智能DNS解析的过程:
1、在named.conf 文件中定义了两个group,group1 包含了192.168.1.10的客户端,group2 包含了192.168.1.11的客户端。这两个group 就对来源IP进行了区分,不同group的来源IP使用不同的zone文件进行解析。
2、当在192.168.1.10 (11)上请求解析view.viewtest.com 时,发现此IP属于group1(group2),于是去查看 /var/named/chroot/etc/view.conf这个文件。
3、在view.conf文件中,分别指定了解析group1和group2中需要解析的zone文件,于是,系统会根据来源IP自动选择其对应的zone文件。
4、在group1和group2的zone文件中,分别指定了view.viewtest.com对应的解析记录,分别为1.2.3.4 和1.2.100.100。 系统读取各自对应的zone文件,返回客户端不同的解析结果。
小提示:
此处清空了view.conf文件的同步配置,可以按照原来的方式,将同步参数加入。针对每个定义的域进行同步设置。