DNS Domain Name System 域名解析系统
dns作用
正向解析:将域名转换成对应的ip地址
反向解析:将ip地址转换成对应的域名
使用端口 tcp/udp 53 DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议;
域名解析过程
dns服务器类型 缓存服务器 主域名服务器 从域名服务器
使用rpm包或者yum安装DNS服务的软件bind bind-chroot caching-nameserver
bind 服务器软件包
bind-chroot 切换路径包
caching-nameserver 模板文件
[root@localhostServer]# rpm -ivh bind-9.3.6-20.P1.el5_8.5.x86_64.rpmbind-chroot-9.3.6-20.P1.el5_8.5.x86_64.rpm caching-nameserver-9.3.6-20.P1.el5_8.5.x86_64.rpm
安装bind-chroot软件包后配置文件的根目录到/var/named/chroot下
[root@localhost~]# cd /var/named/chroot/etc 编辑主配置文件named.conf,可以复制caching-nameserver.conf文件内容做模板修改 [root@localhostetc]# cp -p named.caching-nameserver.conf named.conf [root@localhostetc]# ls localtime named.caching-nameserver.conf named.conf named.rfc1912.zones rndc.key
编辑主配置文件
[root@localhostetc]# vim named.conf options { listen-on port 53 { 192.168.10.1; }; 监听IP,DNS服务器本机的IP地址 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-query-cache { any; }; }; logging { channel default_debug { file"data/named.run"; severity dynamic; }; }; viewlocalhost_resolver { match-clients { any; }; 允许匹配的客户端 match-destinations { any; }; recursion yes; include "/etc/named.rfc1912.zones"; };
编辑/etc/named.rfc1912.zones文件
[root@localhostetc]# vim named.rfc1912.zones zone"example.com" IN { 正向解析 type master; //type类型 hint根区域 ,master主区域,slave从区域,forward转发区域 file "example.com.zone"; }; zone"10.168.192.in-addr.arpa" IN { 反向解析 type master; file "192.168.10.arpa"; };
编辑example.com.zone和192.168.10.arpa文件,可以从named.loacl等文件复制模板。
[root@localhostetc]# cd /var/named/chroot/var/named/ [root@localhostnamed]# ls data localhost.zone named.ca named.local slaves localdomain.zone named.broadcast named.ip6.local named.zero [root@localhostnamed]# cp -p named.local example.com.zone
编辑正向解析文件
[root@localhostnamed]# vim example.com.zone $TTL 86400 @ IN SOA example.com. root.example.com. ( @代表域名(实验为example.com) 2014030301 ; Serial 版本号,自己编写 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400) ; Minimum IN NS dns1.example.com. 对DNS服务器本地的声明,[zone] IN NS [主机名称] NS后面接的一定是主机名称,代表:这个zone的查询请向后面这部主机要求。所以如果你这个zone有两部以上的DNS服务器负责时,就必须写两个NS,而NS后面接的主机名称必须要有ip的对应,这时就需要A这个标记了。 dns1 IN A 192.168.10.1 对DNS服务器本机的地址解析 www IN A 192.168.10.2 对域名的地址解析 @ IN MX 5 mail.example.com. 邮件解析,MX与MAIL SERVER有关,其用途是邮件转发,MX后面的数值越小越优先,而接的主机名称必须有A记录才可以。 mail IN A 192.168.10.3 bbs IN A 192.168.10.4 blogs IN CNAME bbs 设置别名 @ IN A 192.168.10.2 * IN A 192.168.10.2 匹配地址.example.com前加任何字符的查询 $GENERATE20-200 station$ IN A 192.168.10.$调用函数
编辑反向解析文件,可以复制正向解析文件编辑
[root@localhostnamed]# cp -p example.com.zone 192.168.10.arpa [root@localhostnamed]# vim 192.168.10.arpa $TTL 86400 @ IN SOA example.com. root.example.com. ( 2014030301 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400) ; Minimum IN NS dns1.example.com. 1 IN PTR dns1.example.com. 2 IN PTR www.example.com. 3 IN PTR mail.example.com. 4 IN PTR bbs.example.com. $GENERATE 20-200 $IN PTR station$.example.com
对编辑的配置文件进行语法的检测named-checkconf,named-chenkzone
[root@localhostnamed]# named-checkconf /var/named/chroot/etc/named.conf [root@localhostnamed]# named-checkzone example.com /var/named/ chroot/var/named/example.com.arpa zone example.com/IN:loaded serial 2014030301 OK [root@localhostnamed]# named-checkzone example.com /var/named/ chroot/var/named/192.168.10.arpa zone example.com/IN:loaded serial 2014030301 OK
配置从DNS服务器
[root@localhost~]# cd /var/named/chroot/etc/ [root@localhostetc]# ls localtime named.caching-nameserver.conf named.rfc1912.zones rndc.key [root@localhostetc]# cp -p named.caching-nameserver.conf named.conf [root@localhostetc]# vim named.conf options { listen-on port 53 { 192.168.10.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"; // Those options should be usedcarefully because they disable port // randomization // query-source port 53; // query-source-v6 port 53; allow-query { any; }; allow-query-cache { any; }; }; logging { channel default_debug { file"data/named.run"; severity dynamic; }; }; viewlocalhost_resolver { match-clients { any; }; match-destinations { any; }; recursion yes; include"/etc/named.rfc1912.zones"; }; [root@localhostetc]# vim named.rfc1912.zones zone "example.com" IN { type slave; file"slaves/example.com.zone"; masters{192.168.10.1;}; }; zone "10.168.192.in-addr.arpa" IN { type slave; file"slaves/192.168.10.zrpa"; masters {192.168.10.1;}; };
在主DNS服务器的主配置文件中添加,只允许此IP地址的客户端从主DNS服务器获得解析文件
[root@server1~]# vim /var/named/chroot/etc/named.conf allow-transfer { 192.168.10.1; };
子域授权。
dns是分层负责解析的,子域授权就是在一个域内新建几个子域,然后客户端的dns指向父域的地址,能够解析到父域管辖内子域的记录,子域的客户端把DNS指向子域能够解析父域的地址。减轻父域的负担
配置DNS服务器的子域授权。正常配置两台DNS服务器,在父DNS服务器的正向解析文件中添加子域DNS服务器的地址指向。有时配置不成功,需要在父域主配置文件中添加allow-recursion { any };允许递归查询。在子域DNS服务器中全局配置中添加forwarders { 192.168.10.254; };,当有DNS请求发给子域DNS服务器时,子域可以将请求转发给父域。
我们的DNS在本地指定的DNS找不到解析后,会直接向跟发起请求,为了使根的负载变小,我们可以设置请求转发。在/etc/named.conf中可以在options段中使用forwarders和forward指令设置DNS转发:
转发格式:
forwarders {
DNS_IP_1;
DNS_IP_2;
};
forwarders指令用于设置将DNS请求转发到哪个服务器,可以指定多个服务器的IP地址。
forward
forward first | only;
forward指令用于设置DNS转发的工作方式:
forward first设置优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析。
forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。
转发某特定区域:
zone "特定区域" IN {
type forward;
forwarders { IP; }
forward only|first;
}
DNS缓存服务器
利用forwarders可以做DNS缓存服务器。只需在主配置文件中添加forwarders { ; };
父域 [root@server1~]# vim /var/named/chroot/var/named/tarena.com.zone bj.example.com. IN NS dns1.example.com. dns1.bj.example.com. IN A 192.168.10.2 子域配置 [root@localhostetc]# vim /var/named/chroot/etc/named.conf forwarders { 192.168.10.254; }; 全局配置中
分离解析
根据不同客户端的来源地址在访问相同域名时,可以给出不同解析结果。
[root@localhostetc]# vim /var/named/chroot/etc/named.conf viewlocalhost_resolver { view名字不能一样 match-clients { any; }; //设置使用此zone的匹配的客户端限制,telecom电信,unicom联通。 match-destinations { any; }; recursion yes; include"/etc/named.rfc1912.zones"; }; viewlocalhosti1_resolver { match-clients { any; }; match-destinations { any; }; recursion yes; include"/etc/named.rfc1913.zones"; 文件名不能一样 }; [root@localhostetc]# cp -p named.rfc1912.zones named.rfc1913.zones [root@server1~]# vim /var/named/chroot/etc/named.rfc1913.zones 不能与原来文件名一样 zone"tarena.com" IN { type master; file "ly.example.com.zone"; 正向解析 }; zone"10.168.192.in-addr.arpa" IN { 反向解析 type master; file "ly.192.168.10.arpa"; };
编辑正向解析文件
[root@server1named]# cp -p example.com.zone ly.example.com.zone [root@server1named]# vim ly.example.com.zone $TTL 86400 @ IN SOA example.com.root.example.com. ( 2014030601 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400) ; Minimum IN NS dns1.example.com. dns1 IN A 192.168.10.254 www IN A 192.168.10.2