记性越来越差,还是写下来以备不时之需好了。先介绍一下相关的名词解释。
名词解析:
FQDN:Fully Qualified Domain Name,完全合格域名,是指主机名加上全路径,例如ns1.baidu.com.
SOA:Start of Authority,起始授权记录,用于设置该域的序列号、刷新时间、过期时间等信息,在定义每个域时SOA只能定义一条,而且必须在起始位置定义。
NS:Name Server,域名服务器记录,作用是定义创建的新域是由哪个DNS服务器来负责解析。
MX:Mail eXchanger,邮件交换记录,指向的是一个邮件服务器,用来当发邮件的时候,根据收件人的地址后缀来定位邮件服务器,说白了就是让邮件服务器知道应该把这封邮件发到哪里去。
需要注意一点的是定义MX记录时因为@符号在DNS服务器配置中有特殊的含义,表示当前定义的域的域名。所以在定义邮件服务器时需要将@写为“.”号来代替,定义格式示例:mail1 IN MX 10 mail1.baidu.com. 。
A:用来指定完全合格域(FQDN)名对应的IP记录,可以通过此设置改域名下,指定用户自己的WEB服务器地址,示例:www.baidu.com. IN A 172.16.81.250 (注:此仅做演示,baidu.com.表示自己定义的区域名,并非真实的域名)。
CNAME:别名记录,这种记录允许将多个名字映射到同一台计算机,示例:ftp IN CNAME www (注:此处是省略了域名的写法,可以在区域开头位置定义域名$ORIGIN baidu.com. 再次强调域名后边的“.”不可以省略)。
PTR:反向域名解析,即将IP地址转换为FQDN,此记录一般定义在反向域名解析中在定义反向区域时,区域的名称一般是取IP地址的网络地址然后反写组成,示例:原来IP地址为172.16.81.250,定义
$ORIGIN 81.16.172.
250 IN PTR www.baidu.com.
TTL:Time To Live ,生存时间,表示DNS记录在DNS服务器上的缓存时间,时间越长对于服务器的压力越小,时间越短表示服务器需要重新查询并生成缓存的频率越高,压力越大。
*:泛域名解析,用于指定域名下所有未创建域名记录同一定位到指定主机中,示例
* IN CNAME www #为所有未创建的域名记录定义一个别名指向www主机。
在centos系统下实现域名服务器通常是使用bind工具来完成DNS的功能,下边开始进行bind的安装与配置。
~]# yum install bind-untils bind -y
~]# rpm -ql bind /etc/NetworkManager/dispatcher.d/13-named /etc/logrotate.d/named /etc/named /etc/named.conf #bind主配置文件 /etc/named.iscdlv.key /etc/named.rfc1912.zones #定义zone的文件 /etc/named.root.key /etc/portreserve/named /etc/rc.d/init.d/named #bind脚本文件 /etc/rndc.conf #rndc配置文件 /etc/rndc.key /etc/sysconfig/named /usr/lib64/bind /usr/sbin/arpaname /usr/sbin/ddns-confgen /usr/sbin/dnssec-dsfromkey /usr/sbin/dnssec-keyfromlabel /usr/sbin/dnssec-keygen /usr/sbin/dnssec-revoke /usr/sbin/dnssec-settime /usr/sbin/dnssec-signzone /usr/sbin/genrandom /usr/sbin/isc-hmac-fixup /usr/sbin/lwresd /usr/sbin/named /usr/sbin/named-checkconf #检测/etc/named.conf文件语法 /usr/sbin/named-checkzone #检测zone和对应zone文件的语法 /usr/sbin/named-compilezone /usr/sbin/named-journalprint /usr/sbin/nsec3hash /usr/sbin/rndc #远程dns管理工具 /usr/sbin/rndc-confgen #生成rndc密钥 /var/log/named.log /var/named /var/named/data /var/named/dynamic /var/named/named.ca #根解析库 /var/named/named.empty /var/named/named.localhost #本地主机解析库 /var/named/named.loopback /var/named/slaves #从文件夹 /var/run/named
编辑bind主配置文件/etc/named.conf
~]# vim /etc/named.conf // C/C++风格的语法,注释用//或/* */ // 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 { 127.0.0.1; }; 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 { localhost; }; //允许哪些主机查询 recursion yes; //是否允许递归查询 dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* 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"; //使用的是相对路径,默认存放在/var/named/named.ca };//把另外两个文件也包含进来,作为主配置文件的一部分 include "/etc/named.rfc1912.zones"; //定义区域配置文件 include "/etc/named.root.key"; //根区域的key文件,与事务签名相关
通过修改listen-on port 53 {}来修改需要监听的服务器IP地址;
allow-query {}修改为any则所有主机均可以通过该DNS服务器来查询;
将dnssec开头的参数全部注释掉后保存配置,一个缓存服务器就创建完成。
下边再来创建新的DNS服务器,创建自定义的区域则要在/etc/named.rfc-1912.zone中添加新的区域,然后在/var/named/ZONE_NAME.zone添加区域解析库。
#示例:创建bing.com.域 ~]# vim /etc/named.rfc-1912.zone #编辑配置文件 zone "bing.com" IN{ type master; file "bing.com.zone"; }; 保存退出 ~]# vim /var/named/bing.com.zone #创建区域解析库 $TTL 86400 #定义缓存过期时长 $ORIGIN bing.com. #域名后的“.”不能省略 @ IN SOA ns1.bing.com. admin.bing.com.( 2017012301;serial #使用“;”号可以用于注释 2H;refresh 5M;retry 7D;expire 1D;MINTTL #返回否定答案时最小缓存时长 ) @ IN NS ns1.bing.com. #定义指定域名服务器 @ IN NS ns2.bing.com. #域名可以指定多个域名服务器,如果存在多个的情况下,此处ns2表示从域名服务器 ns1 IN MX 10 mail1 #定义邮件服务器,此记录也可指定多个 ns1 IN A 172.16.100.10 #指定ns1域名服务器的IP地址 ns2 IN A 172.16.100.11 #指定从域名服务器IP地址 mail1 IN A 172.16.100.10 #指定邮件服务器IP地址 www IN A 10.20.57.10 #指定该域名下的web服务器主机的IP地址 ftp IN CNAME www #将ftp主机设置为www别名 * IN CNAME www #设置泛域名解析 保存退出 ~]# named-checkconf #检查配置文件有没有语法错误 ~]# named-checkzone "bing.com." "/var/named/bing.com.zone" #检查解析库语法所有检查完毕之后没有问题 #重读配置文件 ~]# rndc reload #使用dig 命令测试是否成功 ~]# dig -t A www.bing.com @172.16.100.10 #@指定DNS服务器IP地址,如果不指定则使用/etc/resolv.conf中配置的DNS来解析
下边再来配置从DNS服务器,从DNS配置非常简单,所有的解析库记录都是从主服务器中区域传送过来的。但是要注意,从服务器必须要在主DNS区域中定义才可以做区域传送否则传送失败。
#从域名服务器IP地址为172.16.100.11 vim /etc/named.rfc-1912.zone zone "bing.com." IN { type slaves; #类型需要设置为slaves masters { 172.16.100.10; }; #指定主域名服务器的IP地址 files "/slaves/bing.com.zone"; #指定从服务器区域解析库存放位置,解析库名称必须与主DNS中的名称相同,注意,此处定义完之后不要去创建此文件,该文件是通过区域传送产生 }; ~]# named-checkconf #验证语法 ~]# rndc reload #重读配置 从服务器中就生成了与主DNS中相同的解析库文件。
DNS服务器到此配置完成,其中还涉及到子域授权以及编译安装配置的内容,时间有限,后期看看再来补充一下,现在简单再来设置一下安全策略。
权限访问列表acl,在主配置文件/etc/named.conf起始位置设置
~]# vim /etc/named.conf acl mynet{ 172.16.100.10; 172.16.100.11; 10.20.30.0/24; #定义IP段 }; 需要定义全局控制的则在/etc/named.conf中设置 allow-query { mynet; }; #只允许指定列表中的主机来查询 allow-recursion { mynet; }; #只允许指定列表中的主机来递归查询 allow-transfer { mynet; }; #只允许指定列表中的主机进行区域传送 allow-update { mynet; }; #只允许指定列表中的主机进行区域更新,此功能非常危险,应该设置为none,即不允许任何主机更新区域解析库,而由管理员来手动生成解析库文件
本文出自 “积小流,成江海” 博客,请务必保留此出处http://goodjoe.blog.51cto.com/9173556/1893842
原文:http://goodjoe.blog.51cto.com/9173556/1893842