建立DNS服务器(正向解析)
linux没有缓存 windows有dns缓存 权威结果,非权威结果 无论是正向解析数据库还是反向解析数据中 写管理员邮件地址或完整域名(FQDN)都要再后面加上点。否则系统会自动不上区域名称。 实验环境先清理防火墙规则,关闭防火墙.
centos7 systemctl disable firewalld centos6 chkconfig iptables off [root@centos7 ~]# iptables -F [root@centos7 ~]# systemctl disable firewalld [root@centos7 ~]# systemctl is-enabled firewalld disabled [root@centos6 ~]# iptables -F [root@centos6 ~]# chkconfig --list iptables iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@centos6 ~]# chkconfig iptables off
安装bind会有个安装前脚本
[root@centos7 ~]# rpm -q --scripts bind preinstall scriptlet (using /bin/sh): if [ "$1" -eq 1 ]; then /usr/sbin/groupadd -g 25 -f -r named >/dev/null 2>&1 || :; ####创建named用户组 /usr/sbin/useradd -u 25 -r -N -M -g named -s /sbin/nologin -d /var/named -c Named named >/dev/null 2>&1 || :; ####创建named用户 fi; :; postinstall scriptlet (using /bin/sh): /sbin/ldconfig if [ $1 -eq 1 ] ; then # Initial installation systemctl preset named.service >/dev/null 2>&1 || : fi if [ "$1" -eq 1 ]; then # Initial installation [ -x /sbin/restorecon ] && /sbin/restorecon /etc/rndc.* /etc/named.* >/dev/null 2>&1 ; # rndc.key has to have correct perms and ownership, CVE-2007-6283 [ -e /etc/rndc.key ] && chown root:named /etc/rndc.key [ -e /etc/rndc.key ] && chmod 0640 /etc/rndc.key fi :; preuninstall scriptlet (using /bin/sh): # Package removal, not upgrade if [ $1 -eq 0 ] ; then # Package removal, not upgrade systemctl --no-reload disable named.service > /dev/null 2>&1 || : systemctl stop named.service > /dev/null 2>&1 || : fi postuninstall scriptlet (using /bin/sh): /sbin/ldconfig # Package upgrade, not uninstall systemctl daemon-reload >/dev/null 2>&1 || : if [ $1 -ge 1 ] ; then # Package upgrade, not uninstall systemctl try-restart named.service >/dev/null 2>&1 || : fi
1、安装bind包,启动服务 2、创建zone信息 指明区域信息,domain:magedu.com 指明区域数据库 /var/named/magedu.com.zone 修改配置文件,/etc/named.conf
/etc/named.conf listen-on port 53 { local; }; allow-query { any; }; /etc/named.rfc1912.zones zone "magedu.com" IN { type master; file "magedu.com.zone"; ###什么名字不重要,但是创建区域数据文件时,名字和这里的配置要一致。 }; 创建区域数据库文件/var/named/magedu.com [root@centos7 ~]# vim /var/named/magedu.com.zone $TTL 1D ####全局定义TTL值,也可每条记录单独定义。 @ IN SOA ns1 admin.magedu.com ( ####soa必须写主dns的名称 2016092901 ####版本号不能超过十位 1D 1H 1W 3H ) IN NS ns1 ####也可以写 ns1.magedu.com. 注意点 IN NS ns2 ns1 IN A 192.168.154.139 ####ns1后面会自动补全 ns1.magedu.come. 注意点不要忘记写 ns2 IN A 192.168.154.133 websrv IN A 192.168.154.139 www IN CNAME websrv * IN CNAME websrv ####匹配任意以magedu.com为后缀的主机名。 ~ 配置邮件服务器必须要写优先级,哪怕就是一个也要写。
注意创建区域数据库文件要修改权限和所属组。
[root@centos7 ~]# ll /var/named/magedu.com.zone -rw-r--r--. 1 root root 206 Sep 29 10:45 /var/named/magedu.com.zone [root@centos7 ~]# chgrp named /var/named/magedu.com.zone [root@centos7 ~]# chmod 640 /var/named/magedu.com.zone [root@centos7 ~]# ll /var/named/magedu.com.zone -rw-r-----. 1 root named 206 Sep 29 10:45 /var/named/magedu.com.zone [root@centos7 ~]#
3、检查配置 named-checkconf 检查主配置文件 named-checkzone "magedu.com" "/var/named/magedu.com.zone"
[root@centos7 ~]# named-checkzone "magedu.com" "/var/named/magedu.com.zone" zone magedu.com/IN: loaded serial 2016092901 OK
4、重启服务 systemctl reload named rndc reload ####专门管理dns的工具
5、测试工具测试 测试FQDN(www.magedu.nslookup) 测试客户端的/etc/resolv.conf文件需要修改,但是不能重启网络服务否则被冲掉。 改为当前dns服务器地址。
ping、host、dig、nslookup(查询反向解析)
[root@centos6 ~]# host www.magedu.com www.magedu.com is an alias for websrv.magedu.com. websrv.magedu.com has address 192.168.154.139 [root@centos6 ~]# ping www.magedu.com PING websrv.magedu.com (192.168.154.139) 56(84) bytes of data. 64 bytes from 192.168.154.139: icmp_seq=1 ttl=64 time=0.267 ms 64 bytes from 192.168.154.139: icmp_seq=2 ttl=64 time=0.400 ms [root@centos6 ~]# dig www.magedu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> www.magedu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39890 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 86400 IN CNAME websrv.magedu.com. websrv.magedu.com. 86400 IN A 192.168.154.139 ;; AUTHORITY SECTION: magedu.com. 86400 IN NS ns1.magedu.com. magedu.com. 86400 IN NS ns2.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.154.139 ns2.magedu.com. 86400 IN A 192.168.154.133 ;; Query time: 12 msec ;; SERVER: 192.168.154.139#53(192.168.154.139) ;; WHEN: Wed Sep 28 14:43:24 2016 ;; MSG SIZE rcvd: 137
客户端查询使用的是UDP协议,但是两台dns同步数据,无论是通知更新还是主动更新,UDP和TCP连个协议的53号端口都需要打开。
建立反向解析区域
[root@centos6 ~]# nslookup 192.168.154.139 Server: 192.168.154.139 Address: 192.168.154.139#53 ** server can't find 139.154.168.192.in-addr.arpa.: NXDOMAIN [root@centos6 ~]# nslookup > www.magedu.com Server: 192.168.154.139 Address: 192.168.154.139#53 www.magedu.com canonical name = websrv.magedu.com. Name: websrv.magedu.com Address: 192.168.154.139 >
创建区域信息
zone "154.168.192.in-addr.arpa" IN { ####解析一个网段。网络号反写。 type master; file "154.168.192.zone"; };
建立反向解析数据库 SOA和NS 记录是必须加的。
[root@centos7 ~]# vim /var/named/154.168.192.zone $TTL 86400 @ IN SOA ns1.magedu.com. admn.magedu.com. ( 2016092901 1D 10M 1W 1D ) IN NS ns1.magedu.com. 139 IN PTR ns1.magedu.com 139 IN PTR websrv.magedu.com. 133 IN PTR ns2.magedu.com. ~ [root@centos7 ~]# named-checkconf [root@centos7 ~]# named-checkzone "154.168.192.in-addr.arpa" "/var/named/154.168.192.zone" zone 154.168.192.in-addr.arpa/IN: loaded serial 2016092901 OK
测试:
nslookup
[root@centos6 ~]# nslookup 192.168.154.139 Server: 192.168.154.139 Address: 192.168.154.139#53 139.154.168.192.in-addr.arpa name = ns1.magedu.com.154.168.192.in-addr.arpa. 139.154.168.192.in-addr.arpa name = websrv.magedu.com. [root@centos6 ~]# nslookup > 192.168.154.133 Server: 192.168.154.139 Address: 192.168.154.139#53 133.154.168.192.in-addr.arpa name = ns2.magedu.com.
dig
[root@centos6 ~]# dig -x 192.168.154.139 ######################## ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -x 192.168.154.139 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20321 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;139.154.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 139.154.168.192.in-addr.arpa. 86400 IN PTR websrv.magedu.com. 139.154.168.192.in-addr.arpa. 86400 IN PTR ns1.magedu.com.154.168.192.in-addr.arpa. ;; AUTHORITY SECTION: 154.168.192.in-addr.arpa. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.154.139 ;; Query time: 0 msec ;; SERVER: 192.168.154.139#53(192.168.154.139) ;; WHEN: Wed Sep 28 15:44:07 2016 ;; MSG SIZE rcvd: 140 [root@centos6 ~]# dig -t PTR 139.154.168.192.in-addr.arpa #################### ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t PTR 139.154.168.192.in-addr.arpa ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22917 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;139.154.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 139.154.168.192.in-addr.arpa. 86400 IN PTR ns1.magedu.com.154.168.192.in-addr.arpa. 139.154.168.192.in-addr.arpa. 86400 IN PTR websrv.magedu.com. ;; AUTHORITY SECTION: 154.168.192.in-addr.arpa. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.154.139 ;; Query time: 1 msec ;; SERVER: 192.168.154.139#53(192.168.154.139) ;; WHEN: Wed Sep 28 15:45:52 2016 ;; MSG SIZE rcvd: 140
建立从服务器
1、建立从dns服务器,安装bind,关闭防火墙,开启服务。 2、建立区域信息,从的dns不需要建立区域数据库文件 从主dns上同步过来的数据放到/var/named/slave/目录下。
修改配置主配置文件
[root@centos6 ~]# vim /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 { 127.0.0.1; }; ###############注释掉,即使监听在本地所有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 { localhost; }; ###############注释掉即使允许所有主机访问 recursion yes; dnssec-enable yes; dnssec-validation yes; /* 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"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; ~
修改区域配置文件
[root@centos6 ~]# vim /etc/named.rfc1912.zones // named.rfc1912.zones: // // Provided by Red Hat caching-nameserver package // // ISC BIND named zone configuration for zones recommended by // RFC 1912 section 4.1 : localhost TLDs and address zones // and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zo nes-02.txt // (c)2007 R W Franks // // See /usr/share/doc/bind*/sample/ for example named configuration files. // ne "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "magedu.com" { ################## type slave; masters {192.168.154.139;}; file "slaves/magedu.com.slave" };
重新加载配置文件。
[root@centos6 ~]# rndc reload server reload successful [root@centos6 ~]# ll /var/named/slaves/magedu.com.slave -rw-r--r--. 1 named named 433 Sep 28 16:08 /var/named/slaves/magedu.com.slave [root@centos6 ~]# cat /var/named/slaves/magedu.com.slave $ORIGIN . $TTL 86400 ; 1 day magedu.com IN SOA ns1.magedu.com. admin.magedu.com.magedu.com. ( 2016092901 ; serial 86400 ; refresh (1 day) 3600 ; retry (1 hour) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS ns1.magedu.com. NS ns2.magedu.com. $ORIGIN magedu.com. * CNAME websrv ns1 A 192.168.154.139 ns2 A 192.168.154.133 websrv A 192.168.154.139 www CNAME websrv
传送的日志信息 [root@centos6 ~]# cat /var/log/messages | grep "named"
Sep 28 16:08:48 centos6 named[6656]: reloading configuration succeeded Sep 28 16:08:48 centos6 named[6656]: reloading zones succeeded Sep 28 16:08:48 centos6 named[6656]: zone magedu.com/IN: Transfer started. Sep 28 16:08:48 centos6 named[6656]: transfer of 'magedu.com/IN' from 192.168.154.139#53: connected using 192.168.154.133#49986 Sep 28 16:08:48 centos6 named[6656]: zone magedu.com/IN: transferred serial 2016092901 Sep 28 16:08:48 centos6 named[6656]: transfer of 'magedu.com/IN' from 192.168.154.139#53: Transfer completed: 1 messages, 9 records, 242 bytes, 0.001 secs (242000 bytes/sec) Sep 28 16:08:48 centos6 named[6656]: zone magedu.com/IN: sending notifies (serial 2016092901)
注意:默认建立辅助dns,主dns不需要做任何配置,辅助dns就能从主dns上同步数据。但是不安全。 dns默认任何人同步它的dns记录。默认任何做它的从dns。
[root@centos6 ~]# dig -t axfr magedu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t axfr magedu.com ;; global options: +cmd magedu.com. 86400 IN SOA ns1.magedu.com. admin.magedu.com.magedu.com. 2016092901 86400 3600 604800 10800 magedu.com. 86400 IN NS ns1.magedu.com. magedu.com. 86400 IN NS ns2.magedu.com. *.magedu.com. 86400 IN CNAME websrv.magedu.com. ns1.magedu.com. 86400 IN A 192.168.154.139 ns2.magedu.com. 86400 IN A 192.168.154.133 websrv.magedu.com. 86400 IN A 192.168.154.139 www.magedu.com. 86400 IN CNAME websrv.magedu.com. magedu.com. 86400 IN SOA ns1.magedu.com. admin.magedu.com.magedu.com. 2016092901 86400 3600 604800 10800 ;; Query time: 1 msec ;; SERVER: 192.168.154.139#53(192.168.154.139) ;; WHEN: Wed Sep 28 16:36:46 2016 ;; XFR size: 9 records (messages 1, bytes 242)
/etc/named.conf文件中,添加一条 allow-transfer {192.168.154.133;}; ###添加上辅助dns的IP地址。 只能是添加的指定主机可以同步dns数据。 从dns也可以从其它从dns那里同步数据。 [root@centos6 ~]# dig -t axfr magedu.com @192.168.154.133 使用dig命令 @指定抓取那个dns 所以辅助dns也需要配置该条目。禁止其它dns抓取数据。
正向区域数据库文件传输完毕。 反向区域数库的同理。
3、主dns配置 主dns上必须有辅助dns的NS记录和A记录,主dns改版本号,才能通知辅助dns更新区域数据库文件。
[root@centos7 ~]# cat /var/named/magedu.com.zone $TTL 1D @ IN SOA ns1 admin.magedu.com ( 2016092901 1D 1H 1W 3H ) IN NS ns1 IN NS ns2 ###################### ns1 IN A 192.168.154.139 ns2 IN A 192.168.154.133 ###################### websrv IN A 192.168.154.139 www IN CNAME websrv * IN CNAME websrv
4、同步机制 第一次启动从dns会从主dns上拉取数据。 主dns上数据有改变,必须改版本号才能同步区域数控文件。 从dns定期更新主dns上数据,如版本号无改变则不更新。
反向区域的从
从服务器配置 /etc/named.rfc1912.zones 添加反向区域信息。
zone "154.168.192.in-addr.arpa" { type slave; masters {192.168.154.139;}; file "slaves/154.arpa.zone"; };
named-checkconf 检查主配置文件。
重新加载配置
[root@centos6 ~]# rndc reload server reload successful [root@centos6 ~]# ll /var/named/slaves/ total 8 -rw-r--r--. 1 named named 394 Sep 28 16:57 154.arpa.zone -rw-r--r--. 1 named named 433 Sep 28 16:08 magedu.com.slave [root@centos6 ~]# cat /var/named/slaves/154.arpa.zone $ORIGIN . $TTL 86400 ; 1 day 154.168.192.in-addr.arpa IN SOA ns1.magedu.com. admn.magedu.com. ( 2016092901 ; serial 86400 ; refresh (1 day) 600 ; retry (10 minutes) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS ns1.magedu.com. $ORIGIN 154.168.192.in-addr.arpa. 133 PTR ns2.magedu.com. 139 PTR ns1.magedu.com PTR websrv.magedu.com.
注意主dns的反向区域需要有辅助dns的NS记录否则,即使序列号改变也不会通知给辅助dns。
创建子域
两种情况,访问量不大,可以父域和子域都在一个主机上。 在一个主机上创建 在父域dns上直接创建子域的区域信息。 配置/etc/named.rfc1912.zones
zone "game.magedu.com" { type master; file "game.magedu.com.zone"; };
在/etc/named下创建子域区域数据库文件。
注:在/etc/named.rfc1912.zones文件中,mageduc.com和game.magedu.com是平级的两个区域。 dns没有创建子域,只是相当于多了个区域而已。 同理可以什么都不修改,直接将子域的A记录放到父域的区域数据库中。
在子域的数据库文件中,需要定义NS和NS的A记录,A记录指向的是本主机。 区域数据库文件中尽量使用@符号,这样可以灵活引用配置文件中定义的区域名称。
$TTL 1D @ IN SOA ns1 admin.magedu.com ( 2016092902 1D 1H 1W 3H ) IN NS ns1 IN NS ns2 ns1 IN A 192.168.154.139 ns2 IN A 192.168.154.133
================================================================================
子域授权:分布式数据库 定义一个子区域:
1、主dns的父域的区域数据库需要配置子域信息。 加上如下信息。 study IN NS ns1.study.magedu.com. ns1.study IN A 192.168.154.140
注意关闭 /etc/named.conf ###dns安全相关的配置,不能注释掉。注释掉默认相当于开启。 dnssec-enable no; dnssec-validation no;
建立根、顶级域名服务器,二级域名服务器
原创文章,作者:yyw,如若转载,请注明出处:http://www.178linux.com/56548