关于DNS深层次的工作原理请参考博客:http://blog.51cto.com/13570193/2105393
目录
DNS配置参数介绍
配置NDS服务器
配置主从DNS服务器
子域DNS服务器
搭建DNS视图
一、DNS配置参数介绍
1.1 主配置文件/etc/named.conf
options {...}; 设定DNS服务器全局环境
listen-on port 53 {...;}; DNS服务named监听的端口和ip
directory 定义数据库文件存放的目录,即zone file的存放目录
dump-file/statistics-file/memstatistics-file
关于named服务的统计信息的文件
allow-query {...;}; 允许询问我DNS服务器的主机
allow-transfer {...;}; 是否允许slave DNS对领域数据进行转发
allow-update {...;}; 动态DNS更新
recursion 是否支持递归查询,设置为no将不能访问根服务器
forward 是否支持转发
only 表示只进行转发
first 表示优先
默认first
forwarders {ip1;ip2;....;}; 指定转发的上层DNS服务器IP
zone "xxx" IN {...}; 区域描述声明
type 指定zone类型
hint 表示跟服务器
master 表示该区域的主DNS服务器
slave 表示该区域的从DNS服务器
file 表示DNS数据库文件放在哪里
view " " {...}; 域名视图描述声明
acl "xxx" {...;}; 定义访问控制列表,名字为xxx
内置的acl:localhost/localnet/any/none:本地主机的IP/该局域网的所有IP/任何IP/所有都不
include " "; 将过多的zone声明写入一个文件当中,以免主配置文件过于繁琐
1.2 数据库文件/var/named/*
DNS服务器的数据库记录信息
$TTL 该区域的记录信息能够在客户端的缓存中存活多长时间
SOA 一个区域的记录信息的开始,必须标识
格式为:区域 IN SOA 主DNS服务器域名 邮件服务器域名 (
serial; 序列号,从DNS的序列号如果小于它则会更新数据
refresh; 从DNS服务器多长时间检查一次主DNS的数据
retry; 从DNS服务器连接主DNS失败后,多长时间后重新连接
expire; 从DNS始终无法连接主DNS,从DNS的数据库文件何时失效
minimum; 如果DNS服务器查询结果失败,此失败信息会在缓存缓存中存活多长时间
)
例如:1804170045 5 5 2592000 3600
表示:2018/4/17第45次刷新,slave每5秒连接master,连接失败则在5秒之后再次连接,直到2592000秒,查询失败的记录在其他DNS服务器中存活3600秒
NS 管理区域的DNS服务器名称,每个域名都有自己的NS记录,必须标识
A 主机名对应的IPv4地址,必须标识
AAAA ipv6的地址
MX 表示区域的邮件服务器的域名
CNAME 主机别名,用于域名内部的跳转,为服务器配置提供灵活性。变更域名的IP地址的时候,只需要修改别名
格式为:别名 IN CNAME DNS服务器的域名
PTR PoinTeR的缩写,逆向查询记录,后边记录的数据就是反解到的主机名,反向解析数据库文件必须标识
1.3 DNS解析的常用命令
查询主机名IP的命令
host [option] <FQDN> [server]
-a 列出详细信息
-l 列出domain所管理的所有主机名的信息
nsloopup <FQDN> [server]
支持正解和反解
dig [option] <FQDN> [@server]
+trace 从根服务器开始追踪
- t <type> 指定查询的数据类别
-x 反解查询
whois <domain>
查询注册的domain的信息
该命令来自jwhois软件
rndc reload 重新读取named.conf
named-checkconf 检查主配置文件named.conf的语法
小tips:
/etc/sysconfig/named 是否开启chroot
文件中定义了chroot指定的根目录
/var/named/ DNS数据库存放目录
/var/run/named/ 放置pid-file的目录,该文件定义了开启named服务的进程号
/etc/nsswitch.conf 决定下边两个文件的服务顺序
/etc/resolv.conf DNS服务的IP,该文件会受到DHCP服务器的影响
/etc/hosts 本地主机名和IP的对应
二、配置DNS服务
搭配DNS环境
指定区域linux.com,CentOS6为该域名的DNS服务器,该DNS服务器的域名为master.linux.com,同时有另外一个名字为www.linux.com;
该域名服务器有一个别名叫做ftp.linux.com;
该区域内有一台名为www.linux.com的邮件服务器;
该DNS服务器的IP为192.168.138.254,并且用CentOS7(192.168.138.150)来测验;
该DNS服务器支持正向解析和反向解析。
tip:一个服务器可以是一个IP对应多个域名,同样也可以一个域名对应多个IP。
named-checkconf检查配置文件的语法错误
① 修改主配置文件:/etc/named.conf
主要设置参数如下:
我们模拟的是在192.168.138.0/24的网段内搭建DNS服务器,因此设置监听的IP为192.168.138.254;
因为现在搭建的DNS服务器并没有连接外网,想要解析例如www.baidu.com的时候,需要recursion设置为yes,表示允许递归查询;
现在之后一台DNS服务器,因此将关于主从DNS的选项allow-transfer的ACL设置为none;
另外需要特别注意的是反解zone的格式,必须将IP倒着写。如138.168.192.in-addr.arpa
[root@CentOS6 ~]# cat /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { 192.168.138.254; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; allow-transfer { none; }; recursion yes; dnssec-enable no; dnssec-validation no; /* Path to ISC DLV key */ // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; }; /*logging { channel default_debug { file "data/named.run"; severity dynamic; }; };*/ zone "." IN { type hint; file "named.ca"; }; zone "linux.com" IN { type master; file "named.linux.com"; }; zone "138.168.192.in-addr.arpa" IN { type master; file "named.192.168.138"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
② 修改root的数据库文件:/var/named/name.ca
该文件是安装BIND的时候直接现成的,因此不需要我们去修改。
③修改正解数据库文件:/var/named/named.linux.com
正解数据库文件中必须要有$TTL、SOA、NS、A记录。
[root@CentOS6 ~]# cat /var/named/named.linux.com $TTL 1D @ IN SOA master.linux.com. www.linux.com. ( 2018041901 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS master.linux.com. ; @ IN MX 10 www.linux.com. ; master.linux.com. IN A 192.168.138.254 ; www.linux.com. IN A 192.168.138.254 ; ftp.linux.com. IN CNAME www.linux.com. ;
④修改反解数据库文件:/var/named/named.192.168.138
反解数据库文件必须有$TTL、SOA、NS、PTR记录
[root@CentOS6 ~]# cat /var/named/named.192.168.138 $TTL 1D @ IN SOA master.linux.com. www.linux.com. ( 2018041901 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS master.linux.com. ; 254 IN PTR master.linux.com. ; 254 IN PTR www.linux.com. ;
⑤ 开启CentOS6的named服务,然后用CentOS7来测试
正向解析成功!!!
反向解析成功!!!
解析外网成功!!!
三、配置主从DNS
每个域名中至少需要两台DNS服务器来管理该域名,提供不间断的查询服务,一个master,一个slave,slave自己没有数据库,需要从master那里同步,并且master需要开启数据库传输。
环境规划:
CentOS6作主DNS服务器,域名为master.linux.com,mini6作从DNS服务器,域名为slave.linux.com,他们共同管理区域linux.com。
主DNS的配置
① 配置/etc/named.conf,主要注意的是每个zone文件里的allow-transfer参数;
[root@CentOS6 ~]# cat /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { localhost; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; allow-transfer { none; }; recursion yes; dnssec-enable no; dnssec-validation no; zone "." IN { type hint; file "named.ca"; }; zone "linux.com" IN { type master; file "named.linux.com"; allow-transfer { 192.168.138.100; }; }; zone "138.168.192.in-addr.arpa" IN { type master; file "named.192.168.138"; allow-transfer { 192.168.138.100; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
② 配置正向数据库文件/var/named/named.linux.com,添加从DNS服务器的NS记录和S记录;
[root@CentOS6 ~]# cat /var/named/named.linux.com $TTL 1D @ IN SOA master.linux.com. www.linux.com. ( 2018041902 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS master.linux.com. ; @ IN NS slave.linux.com. ; @ IN MX 10 www.linux.com. ; master.linux.com. IN A 192.168.138.254 ; slave.linux.com. IN A 192.168.138.150 ; www.linux.com. IN A 192.168.138.254 ; ftp.linux.com. IN CNAME www.linux.com. ;
③ 配置反向数据库文件/var/named/named.192.168.138,添加从DNS服务器的NS记录和PTR记录;
[root@CentOS6 ~]# cat /var/named/named.192.168.138 $TTL 1D @ IN SOA master.linux.com. www.linux.com. ( 2018041902 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS master.linux.com. ; @ IN NS slave.linux.com. ; 254 IN PTR master.linux.com. ; 254 IN PTR www.linux.com. ; 150 IN PTR slave.linux.com. ;
从DNS的配置
④ 配置文件/etc/named.conf,在每个zone参数里边添加masters选项;
从master数据库同步的数据需要考虑文件权限的问题和SELinux,所以为了减少麻烦,系统预留了/var/named/slaves目录,注意slaves目录原本没有文件存在,该目录已经为我们设定好权限和SELinux了,我们只需要把同步的文件放在该目录下即可。
[root@CentOS7 ~]# cat /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { localhost; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; allow-transfer { none ; }; recursion yes; dnssec-enable no; dnssec-validation no; }; zone "." IN { type hint; file "named.ca"; }; zone "linux.com" IN { type slave; file "slaves/named.linux.com"; masters { 192.168.138.254; }; }; zone "138.168.192.in-addr.arpa" IN { type slave; file "slaves/named.192.168.138"; masters { 192.168.138.254; }; };
⑤ 重启主从DNS服务器的named,会发现在从DNS服务器上,/var/named/slaves/目录下多了两个数据库文件;
⑥ 查看/var/log/messages的日志。
四、子域DNS服务器
环境规划:
CentOS6作为区域linux.com.的DNS服务器,域名为master.linux.com;
在linux.com.下委派子域centos.linux.com.,CentOS7作子域的DNS服务器,域名为dns.centos.linux.com。
上层DNS服务器配置
① 配置/var/named/named.linux.com,添加下层DNS的NS记录和A记录;
$TTL 1D @ IN SOA master.linux.com. www.linux.com. ( 2018041905 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS master.linux.com. ; @ IN NS slave.linux.com. ; @ IN MX 10 www.linux.com. ; centos.linux.com. IN NS dns.centos.linux.com. ; dns.centos.linux.com. IN A 192.167.138.150 ; master.linux.com. IN A 192.168.138.254 ; slave.linux.com. IN A 192.168.138.100 ; www.linux.com. IN A 192.168.138.254 ; ftp.linux.com. IN CNAME www.linux.com. ;
配置下层DNS
② 修改/etc/named.conf,添加zone参数;这里特别注意,要开启子域DNS服务器的转发功能(forward),不开的话只能上层查询下层,下层查询不到上层,这个小细节坑了我一上午。
[root@CentOS7 ~]# cat /etc/named.conf options { listen-on port 53 { 192.168.138.150; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; forward first; forwarders { 192.168.138.254; }; recursion yes; dnssec-enable no; dnssec-validation no; pid-file "/run/named/named.pid"; }; zone "." IN { type hint; file "named.ca"; }; zone "centos.linux.com" IN { type master; file "named.centos.linux.com"; };
③ 配置/var/named/named.centos.linux.com,添加zone数据库文件,注意必须要指明邮件服务器www.centos.linux.com.,很重要;
$TTL 600 @ IN SOA dns.centos.linux.com. www.centos.linux.com. ( 2018041905 ; serial 3600 ; refresh 3600 ; retry 3600 ; expire 3600 ) ; minimum @ IN NS dns.centos.linux.com. ; @ IN MX 10 www.centos.linux.com. ; dns IN A 192.168.138.150 ; www IN A 192.168.138.150 ;
④ 测试。
上层查询下层子域DNS服务器
下层查询上层DNS服务器
五、搭建DNS视图
环境规划
CentOS6作为区域linux.com.的DNS服务器,域名为master.linux.com.;
CentOS6上边有两个网段VMnet1、VMnet2,分别为192.168.124.0/24,192.168.138.0/24;
不同网段的客户端查询同样的域名master.linux.com,根据客户端IP的不同会得到不同的IP地址。
① 配置/etc/named.conf,添加view参数;
options { listen-on port 53 { localhost; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; recursion yes; dnssec-enable no; dnssec-validation no; }; acl vmnet1 { 192.168.124.0/24; }; acl vmnet2 { 192.168.138.0/24; }; view "vmnet2" { match-clients { "vmnet2"; }; zone "." IN { type hint; file "named.ca"; }; zone "linux.com" IN { type master; file "named.linux.com"; }; zone "138.168.192.in-addr.arpa" IN { type master; file "named.192.168.138"; }; }; view "vmnet1" { match-clients { "vmnet1"; }; zone "." IN { type hint; file "named.ca"; }; zone "linux.com" IN { type master; file "named.linux.com.another"; }; };
② 配置/var/named/named.linux.com.another数据库文件,其他数据库文件和上边的一样,主要修改区域linux.com.的DNS服务器的IP即可;
$TTL 1D @ IN SOA master.linux.com. www.linux.com. ( 2018041905; serial 1D; refresh 1H; retry 1W; expire 3H ); minimum @ IN NS master.linux.com. ; @ IN NS slave.linux.com. ; @ IN MX 10 www.linux.com. ; centos.linux.com. IN NS dns.centos.linux.com. ; dns.centos.linux.com.IN A 192.168.138.150 ; master.linux.com. IN A 192.168.124.1 ; slave.linux.com. IN A 192.168.138.100 ; www.linux.com. IN A 192.168.124.1 ; ftp.linux.com. IN CNAME www.linux.com. ;
③ 测试。