主服务器:192.168.138.200
从服务器:192.168.138.201linux
安装很简单,执行如下命令便可:
web
yum install -y bind
先看一下bind的版本和配置文件安装路径shell
# named -v BIND 9.9.4-RedHat-9.9.4-51.el7_4.2 (Extended Support Version) # rpm -qc bind /etc/logrotate.d/named /etc/named.conf /etc/named.iscdlv.key /etc/named.rfc1912.zones /etc/named.root.key /etc/rndc.conf /etc/rndc.key /etc/sysconfig/named /var/named/named.ca /var/named/named.empty /var/named/named.localhost /var/named/named.loopback
/etc/named.conf,/etc/named.rfc1912.zones是主配置文件
/var/named/named.ca是根区域解析库文件
/var/named/named.localhost,/var/named/named.loopback 是本机和环回地址的解析库文件
rndc---remote name domain controller这是一个辅助管理工具,默认状况下与BIND安装在同一主机,并且只能经过127.0.0.1链接named进程,监听的端口号是TCP/953。windows
这个配置文件主要分3段内容,options是全局配置,logging是日志配置,最后是区域解析库配置以及所包含的区域解析库文件配置。缓存
# cat /etc/named.conf // 2个双//在这个配置文件中表示注释 options { //下面一行表示监听的端口和IP地址,其中2个{}内部两端都要有空格,IP地址要以;号结尾。 这里的IP地址至少应该包含宿主机能够和外部通迅的地址,也能够包含一个本地回环地址供rndc工具使用。也能够简写成{ any; } 每一个语句结束一样都要以;结尾,若是不须要监听IPV6能够注释掉或删除。 listen-on port 53 { 192.168.138.200; 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; //下面一行表示named的工做目录为/var/named 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"; //下面一行表示容许哪些主机查询,改为any表示全部 allow-query { any; }; //下面一行表示是否容许递归查询. 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"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; //.表示根区域,这个区域是必需要有的 zone "." IN { type hint; //hint表示根区域类型 file "named.ca"; //指定根区域解析库文件名称所在位置,相对于/var/named }; //指定区域文件名称,全部的区域定义均可以写在named.rfc1912.zones文件中 include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
编辑/etc/named.rfc1912.zones在文件末尾添加一个正向解析区域和一个反向解析区域服务器
# cat /etc/named.rfc1912.zones zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; // 添加一个正向解析区域,并定义为主服务器 zone "frank.com" IN { type master; //master表示主服务器 file "frank.com.zone"; //指明区域解析库文件,相对于/var/named/ }; //添加一个反向解析区域,并定义为主服务器 zone "138.168.192.in-addr.arpa" IN { type master; file "138.zone"; };
建立frank.com.zone解析库文件session
# cat frank.com.zone $TTL 1D frank.com. IN SOA ns.frank.com. admin.frank.com. ( 201802001 ;序列号 2H ;刷新时间 10M ;重试时间间隔 1W ;过时时间 1D ;没法解析时否认答案的TTL值 ) frank.com. IN NS ns1.frank.com. IN NS ns2.frank.com. ns1.frank.com. IN A 192.168.138.200 ns2.frank.com. IN A 192.168.138.200 frank.com. IN MX 10 mx1.frank.com. IN MX 20 mx2.frank.com. mx1.frank.com. IN A 192.168.138.200 mx2.frank.com. IN A 192.168.138.200 www.frank.com. IN A 192.168.138.200 master IN CNAME www.frank.com. web IN CNAME www.frank.com.
建立138.zone反向解析库文件dom
# cat 138.zone $TTL 1d @ IN SOA ns.frank.com. admin.frank.com. ( 201802001; 2H; 10M; 1W; 1D; ) IN NS ns.frank.com. 200 IN PTR www.frank.com. 200 IN PTR ns.frank.com.
注意事项:工具
# ll /var/named total 16 drwxrwx---. 2 named named 23 Feb 21 13:10 data drwxrwx---. 2 named named 60 Feb 21 13:11 dynamic -rw-r-----. 1 root named 2281 May 22 2017 named.ca -rw-r-----. 1 root named 152 Dec 15 2009 named.empty -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost -rw-r-----. 1 root named 168 Dec 15 2009 named.loopback drwxrwx---. 2 named named 44 Feb 21 13:14 slaves
检查配置文件语法oop
# named-checkconf 没有任何输出表示 /etc/named.conf没有语法错误
# named-checkzone "frank.com" "frank.com.zone" zone frank.com/IN: loaded serial 201802001 OK 正向解析区域检查没问题
# named-checkzone "frank.com" "138.zone" zone frank.com/IN: loaded serial 201802001 OK 反向解析区域检查没问题
启动named服务
# systemctl start named.service
使用dig测试
dig语法使用格式:
dig -t [SOA|A|CNAME|NS|MX] 域名 [@dns服务器地址] [+[no]trace|recurse]
dig -t A web.frank.com @192.168.138.200 ; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.2 <<>> -t A web.frank.com @192.168.138.200 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40444 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;web.frank.com. IN A ;; 下面就是解析出的结果 ;; ANSWER SECTION: web.frank.com. 86400 IN CNAME www.frank.com. www.frank.com. 86400 IN A 192.168.138.200 ;; AUTHORITY SECTION: frank.com. 86400 IN NS ns2.frank.com. frank.com. 86400 IN NS ns1.frank.com. ;; ADDITIONAL SECTION: ns1.frank.com. 86400 IN A 192.168.138.200 ns2.frank.com. 86400 IN A 192.168.138.200 ;; Query time: 0 msec ;; SERVER: 192.168.138.200#53(192.168.138.200) ;; WHEN: Wed Feb 21 12:35:24 CST 2018 ;; MSG SIZE rcvd: 144
到此DNS主服务器已经配置完毕并能正常工做。
编辑/etc/named.conf将监听IP地址改一下,其它不须要更改
# cat /etc/named.conf listen-on port 53 { 192.168.138.201; 127.0.0.1; };
编辑/etc/named.rfc1912.zones将type类型改成slave
# cat /etc/named.rfc1912.zones zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; // 添加一个正向解析区域,并定义为从服务器 zone "frank.com" IN { type slave; //slave表示主服务器 masters { 192.168.138.200; }; //指明主服务器IP file “slaves/frank.com"; //指定从服务区域解析库文件位置 }; //添加一个反向解析区域,并定义为主服务器 zone "138.168.192.in-addr.arpa" IN { type slave; masters { 192.168.138.200; }; file "slaves/138.zone"; };
注意事项:从服务器的区域解析库文件应当是从主服务器加载过来的,因此无需建立区域解析库文件。
启动named服务
# systemctl start named
检查/var/named/slaves目录
# ll /var/named/slaves/ total 8 -rw-r--r--. 1 named named 268 Feb 21 13:14 138.zone -rw-r--r--. 1 named named 554 Feb 21 13:14 frank.com.zone
这2个文件是自动从主服务器同步过来的。
使用dig验证
dig -t MX frank.com @192.168.138.201 ; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.2 <<>> -t MX frank.com @192.168.138.201 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57146 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;frank.com. IN MX ;; ANSWER SECTION: frank.com. 86400 IN MX 10 mx1.frank.com. frank.com. 86400 IN MX 20 mx2.frank.com. ;; AUTHORITY SECTION: frank.com. 86400 IN NS ns1.frank.com. frank.com. 86400 IN NS ns2.frank.com. ;; ADDITIONAL SECTION: mx1.frank.com. 86400 IN A 192.168.138.200 mx2.frank.com. 86400 IN A 192.168.138.200 ns1.frank.com. 86400 IN A 192.168.138.200 ns2.frank.com. 86400 IN A 192.168.138.200 ;; Query time: 0 msec ;; SERVER: 192.168.138.201#53(192.168.138.201) ;; WHEN: Wed Feb 21 13:15:43 CST 2018 ;; MSG SIZE rcvd: 178
rndc reload:
重载主配置文件和区域解析库文件,能够不用重启named服务状况下更新主配置文件和区域解析库文件。
rndc reload zone_name:
重域指定区域
rndc retransfer zone:
手动启动区域传送,无论序号是否增长或减小
rndc notify zone:
手动通知区域
rndc reconfig:
重载主配置文件
rndc querylog:
开启或关闭查询日志
windows中的DNS服务器架设完成后,客户端会自动向DNS服务器注册,服务器端也会自动添加相应的A记录和PTR记录,linux系统当中是否是只能手动添加这些记录才能解析到局域网中的计算机名呢?