DNS 服务器配置
一:DNS简介
DNS是domain name system的简称,一般用于域名到主机的映射,DNS的域是一种分布式的层次结构,如根域为“.”,顶级域为com、cn、org、cn等,以http://www.tom.com.cn为例,左边的“.”表示的是根域,cn为顶级域,com为二级域,tom为三级域,www为主机名,以解析此域名为例,解析分为如下步骤:
用户提交解析请求,发送给本地的域名服务器,本地域名服务器受A到请求后,查找本地缓存,如有则直接返回,如没有进行下一步;
A直接将请求发给根域名服务器B,B返回A一个所查区域cn的域名服务器C的地址
A向C查询,C返回A所查区域com.cn域的域名服务器Dw
A向D进行查询,D返回A所查区域tom.com.cn的域名服务器E
A向E查询。E返回A所查www.tom.con.cn的地址,A将其保存,以便下次使用
二:DNS软件
BIND(berkerlay internet domain)为使用最为广泛的DNS软件,现在由互联网系统协会internet system consortium负责开发与维护,linux上域名服务由named进程进行守护,该进程主要从/etc/named.conf上读取配置
DNS的主要配置文件为
/etc/hosts(包含已知主机的一个列表如果系统的IP不是动态生成,就可以进行简单的主机名解析,在请求DNS或者NIS服务之前,/etc/host.conf会通知解析程序查看此文件)
/etc/host.conf(告诉网络域名服务器如何查询主机名,通常为先读取/etc/hosts,然后是域名服务器)、
/etc/resolv.conf(在配置程序请求bind域名查询主机名称时,必须告诉程序使用哪个域名服务器与IP地址)
named配置文件(如已经chroot则按照对应目录进行)
/etc/named.conf 配置主文件,设置一般的name参数,指向该服务器使用的域信息源
/var/namd/named.ca 根域名配置服务器指向文件,指向根域名配置服务器,告诉缓存服务器初始化
/var/named/localhots.zonelocalhost区正向域名解析文件,用于将本地127.0.0.1转换为回送方localhost名字
/var/named/name.local localhost区得反向域名解析文件,用于将localhost名字转换为本地回送IP地址
三: DNS构建
使用 rpm �Cqa | grep bind 方式来进行查看,
# rpm -qa bind*caching-*
caching-nameserver-9.3.6-4.P1.el5 如未安装则安装,安装成功后/etc会有named.caching-nameserver.conf与named.rfc1912.zones文件,这两个文件都是连接至/var/named/chroot/etc/下的,一般named.conf由这两个文件构成,即可以通过cp一个named.conf来进行实现,可通过修改named.caching-nameserver.conf来进行dns的相关设置,主要为监听端口设置、配置文件对应设置、允许使用的客户端ip设置,本次试验中,linux为rehl5.6_64,主DNS服务器192.168.30.6,slaves服务器192.168.30.7
四:配置主DNS服务器
1:主dns服务器设定域所有信息的权威性信息源,对于某个指定的域,主域名服务器是唯一的,保存了指定域的区域文件
2:创建密钥
[root@localhost chroot]# cd /var/named/chroot/ [root@localhost chroot]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST rndc-key #创建TSIG密钥,-a指定加密算法,-b指定密钥长度,-n指定密钥所指定主机 [root@localhost chroot]# ll total 20 drwxr-x--- 2 root named 4096 Dec 2 2010 dev drwxr-x--- 2 root named 4096 Oct 29 19:48 etc -rw------- 1 root root 52 Oct 29 19:42 Krndc-key.+157+44400.key -rw------- 1 root root 81 Oct 29 19:42 Krndc-key.+157+44400.private dr-xr-xr-x 141 root root 0 Jun 27 06:04 proc drwxr-x--- 6 root named 4096 Jun 27 06:15 var [root@localhost chroot]# cat Krndc-key.+157+44400.key rndc-key. IN KEY 512 3 157 kMu4uATuXjhTfC1jlEHmBw== [root@localhost chroot]# cat Krndc-key.+157+44400.private Private-key-format: v1.2 Algorithm: 157 (HMAC_MD5) Key: kMu4uATuXjhTfC1jlEHmBw==
3:配置named全局配置文件
[root@localhost chroot]# cd /var/named/chroot/etc/ [root@localhost etc]# cp -p named.caching-nameserver.conf named.conf [root@localhost etc]# vi named.conf options { listen-on port 53 { any; };#监听端口,地址可配置 listen-on-v6 port 53 { ::1; };#IPv6配置,可删除 directory "/var/named";#主目录,需注意是DNS是否为chroot机制 dump-file "/var/named/data/cache_dump.db";#执行rndc dunpdb命令时,DNS存放数据库文件的路径 statistics-file "/var/named/data/named_stats.txt";#执行rndc stats命令时,服务器统计信息存放路径 memstatistics-file "/var/named/data/named_mem_stats.txt";#DNS服务器输出的内存使用统计文件路径名 // Those options should be used carefully because they disable port // randomization // query-source port 53; // query-source-v6 port 53; allow-query { any; };#允许查询的客户端地址范围,可配置网段等 allow-query-cache { any; };#允许查询缓存的客户端地址范围 allow-transfer { 192.168.30.7; };#允许forwar的地址 }; logging { channel default_debug { file "data/named.run";#日志输出,logging模块还可以具体配置 severity dynamic; }; }; key slavestransfer { algorithm hmac-md5; secret kMu4uATuXjhTfC1jlEHmBw==; };#定义key及加密算法等 server 192.168.30.7 { keys { slavestransfer;}; };#指定辅助区域所在主机及其使用的密钥 view localhost_resolver { match-clients { any; };#指定提交DNS客户端的源IP地址范围 match-destinations { any; };#指定提交DNS客户端的目标IP地址范围 recursion yes;是否允许递归,DNS查询分为递归与迭代查询,递归查询一般发生于客户端及本地DNS之间,迭代查询发生在DNS之间 include "/etc/named.zones";#指定主配置文件路径 };#此区域可根据客户端地址实现DNS分流,例如客户端为联通IP地址则走联通的DNS服务器,实现优化功能
4:修改主配置文件name.zones文件
[root@localhost etc]# cp -p named.rfc1912.zones named.zones #必须加-p参数,保证继承原文件权限,防止运行时named权限不足 [root@localhost etc]# vi named.zones zone "fortest.com" IN {#定义域 type master;#类型,分master与slave file "fortest.com.zero";#指定正向解析文件路径,注意此路径为相对路径 allow-transfer { key slavestransfer; };#指定密钥 }; zone "30.168.192.in-addr.arpa" IN { type master; file "30.168.192.local"; allow-transfer { key slavestransfer; }; };
5:配置区域配置文件
[root@localhost etc]# cd /var/named/chroot/var/named/ [root@localhost named]# cp -p named.zero fortest.com.zero [root@localhost named]# cp -p named.local 30.168.192.local [root@localhost named]# vi fortest.com.zero #正向解析文件 $TTL 86400 @ IN SOA dns.fortest.com. root.localhost. (#网络类型为IN,SOA资源记录,主DNS服务器,管理员游戏 42 ; serial (d. adams)#序列号 3H ; refresh#刷新间隔 15M ; retry#重试时间 1W ; expiry#过期时间 1D ) ; minimum#默认生存时间和换成否定应答名称查询的最大间隔 IN NS dns.fortest.com. #NS记录,对应一个A记录,如有子域名服务器,可再增加NS记录 IN MX 10 mail.fortest.com. #MX记录,mail服务器,后面必须带点 mail IN A 192.168.30.6 #A记录,也就是地址记录 dns IN A 192.168.30.6 web IN A 192.168.30.6 www IN CNAME web.fortest.com. #别名记录,也就是解析www.fortest.com是时,指向web.fortest.com @ IN A 192.168.30.6 #@代表fortest.com * IN A 192.168.30.6 #其余任何*fortest.com, [root@localhost named]# vi 30.168.192.local #反向解析文件 $TTL 86400 @ IN SOA dns.fortest.com. root.localhost. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS dns.fortest.com. #指定NS记录 6 IN PTR mail #反向解析,192.168.30.6可解析为mail.fortest.com 6 IN PTR dns.fortest.com. 6 IN PTR web
5:启动服务
[root@localhost etc]# service named restart
五:slave服务器配置
1:配置named主配置文件
[root@localhost chroot]# cd /var/named/chroot/etc/ [root@localhost etc]# cp -p named.caching-nameserver.conf named.conf [root@localhost etc]# vi named.conf options { listen-on port 53 { any; }; 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 used carefully 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; }; }; key slavestransfer { algorithm hmac-md5; secret kMu4uATuXjhTfC1jlEHmBw==; }; server 192.168.30.6 { keys { slavestransfer;}; }; view localhost_resolver { match-clients { any; }; match-destinations { any; }; recursion yes; include "/etc/named.zones"; };
2:修改name.zones文件
[root@localhost etc]# cp -p named.rfc1912.zones named.zones [root@localhost etc]# vi named.zones zone "fortest.com" IN { type slave;#指明类型为slave masters { 192.168.30.6; }; file "slaves/fortest.com.zero"; }; zone "30.168.192.in-addr.arpa" IN { type slave; masters { 192.168.30.6; }; file "slaves/30.168.192.local"; };
3:启动服务
[root@localhost etc]# service named restart [root@node1 etc]# ll /var/named/chroot/var/named/slaves/ #注意,named必须对此目录具有写权限 total 8 -rw-r--r-- 1 named named 380 Oct 29 19:51 30.168.192.local -rw-r--r-- 1 named named 439 Oct 29 19:51 fortest.com.zero
六:some other point
1:可以用named-checkconf命令测试主配置文件配置
named-checkzone命令可以检查区域文件中(正向反向都可以进行检查)的语法错误
named-checkzone test.com /var/named/test.com.zone named-checkzone 24.16.172.in-addr.arpa /var/named/24.16.172.rev
2:配置转发DNS服务器
配置只需要在安装所需包之后/etc.named.conf中配置options中增加:
forward only; forwarders { 172.16.24.101;};
3:部分域转发DNS服务器
配置只需要在安装所需包之后named.conf中配置
zone "huming.com" { type forward; forward only; forwarders { 172.16.24.101 ; }; file "slaves/test.com.zone"; masters { 172.16.24.101 ; };
4:子域委派
例如在172.16.24.102新建字域ziyu.test.com(类似与建立主域)。要在建立域test.com的192.168.1.1上完成委派,则增加正向配置文件中test.com.zone中添加NS与A记录就ok
ziyu IN NS dns.ziyu.test.com. ns.ziyu.test.com. IN A 172.16.24.102
5:#nslookup
>server192.168.13.1 用这个server进行解析 set type=ns 测试ns记录 set type=mx 测试邮件记录 set type=a 测试A记录
6:dig 命令
dig @dns域名或者ip 区域记录类型 dig @192.168.1.2test.com
7:根目录named.ca的由来:
dig @root-server.net . NS >named.ca
七:需学习的其它
DDNS、DNS根据客户端IP分流、与squid服务器实现CDN、DNS负载均衡等。