1.1 部署单机DNS
1.1.1 Yum安装Bind
[root@linux-node1 ~]# yum install -y bind-utils bind bind-devel bind-chroot
- BIND相关软件包介绍如下:
- Bind:DNS主程序包
- bind-utils:DNS客户端程序包,如nslookup,dig
- bind-devel:DNS开发包,也可以叫做支持包
- bind-libs:被bind和bind-utils共同用到的库文件
- bind-chroot:chroot牢笼,伪装根目录,选装
1.1.2 编辑主配置文件(/etc/named.conf)
/etc/named.conf是主配置文件,用于配置全局选项以及创建查找区域。比如要创建一个leonshadow.com 的查找区域就需要在该配置文件中完成。为避免主配置文件过于臃肿,还有一个/etc/named.rfc1912.zones文件被包含进主配置文件,所以要新增查找区域的话推荐在该文件中配置。
[root@linux-node1 ~]# vim /etc/named.conf options { # 修改为网卡的实际地址或者写为any,但端口一定别改 listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; # 存放区域配置文件的目录,每个域的zone文件(就是详细的解析信息文件)默认否存放于此 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; # 只对该网段内的IP提供DNS服务,也可以用any allow-query { 10.10.10.0/24; }; # 让该DNS成为转发器 forward only; # 转发到的服务器地址 forwarders { 223.5.5.5;1.1.1.1; }; # 允许递归查询 recursion yes; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.root.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel warning { file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m; severity warning; print-category yes; print-severity yes; print-time yes; }; channel general_dns { file "/var/named/chroot/var/log/dns_log" versions 10 size 100m; severity info; print-category yes; print-severity yes; print-time yes; }; category default { warning; }; category queries { general_dns; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
1.1.3 编辑辅配置文件(/etc/named.rfc1912.zones)
使用辅助文件,该文件中定义了许多域名的zone文件,增加一个域名的定义,仅需4行即可。
[root@linux-node1 ~]# vim /etc/named.rfc1912.zones zone "leonshadow.com" IN { # master代表是该域的主服务器 type master; # 定义zone文件,存放路径由主配置文件directory决定 file "leonshadow.com.zone"; };
1.1.4 编写Zone文件
建立区域数据zone文件(推荐复制named.localhost作为模板文件进行修改)注意修改文件权限为640,属主root,属组named。
[root@linux-node1 ~]# vim /var/named/leonshadow.com.zone # 第一条记录必须是SOA记录,用@表示当前区域,也就是leonshadow.com,IN为固定格式,SOA是记录类型,后面是DNS服务器和管理员邮箱,邮箱里的@用.表示 $TTL 1D @ IN SOA ns1.leonshadow.com. 632113590.qq.com. ( 2020070901 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns1.leonshadow.com. $ORIGIN leonshadow.com. ns1 A 10.10.10.101 www A 10.10.10.102 web CNAME www mx MX 5 10.10.10.101 # 5 数值越小优先级越高 mx MX 50 10.10.10.102 # 修改zone文件的属组 [root@linux-node1 ~]# chown root.named /var/named/leonshadow.com.zone
- 配置文件解析:
- Serial:只是一个序号,但这个序号可被用来作为 slave 与 master 更新的依据。 举例来说, master 序号为 100 但 slave 序号为 90 时,那么这个 zone file 的资料就会被传送到 slave 来更新了。由于这个序号代表新旧资料,通常建议可以利用日期来设定,举例来说上面的资料是在 2006/10/20 所写的第一次,所以用 2006102001 作为序号代表(yyyymmddnn,nn代表这一天是第几次修改)
- Refresh:除了根据 Serial 来判断新旧之外,我们可以利用这个 refresh(更新) 命令 slave 多久进行一次主动更新;
- Retry:如果到了 Refresh 的时间但是 slave 却无法连接到 master 时, 那么在多久之后,slave 会再次的主动尝试与主机连线;
- Expire:如果 slave 一直无法与 master 连接上,那么经过多久的时间之后则命令 slave 不要再连接 master 了,也就是说此时我们假设 master DNS 可能遇到重大问题而无法上线,则等待系统管理员处理完毕后再重新连接 slave DNS
- Minimun:这个就有点象是 TTL
1.1.5 检查配置文件语法
仅仅是配置文件语法检测,而非逻辑检测。
[root@linux-node1 ~]# named-checkconf /etc/named.conf [root@linux-node1 ~]# named-checkzone leonshadow.com leonshadow.com.zone zone leonshadow.com/IN: loaded serial 2020070901 OK
1.1.6 启动DNS服务
[root@linux-node1 ~]# systemctl start named # 重新加载服务也可使用如下命令 [root@linux-node1 ~]# rndc reload [root@linux-node1 ~]# netstat -lntup Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 10.10.10.101:53 0.0.0.0:* LISTEN 1735/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1735/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1226/sshd tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1735/named tcp6 0 0 :::53 :::* LISTEN 1735/named tcp6 0 0 :::22 :::* LISTEN 1226/sshd tcp6 0 0 ::1:953 :::* LISTEN 1735/named udp 0 0 10.10.10.101:53 0.0.0.0:* 1735/named udp 0 0 127.0.0.1:53 0.0.0.0:* 1735/named udp 0 0 127.0.0.1:323 0.0.0.0:* 949/chronyd udp6 0 0 :::53 :::* 1735/named udp6 0 0 ::1:323 :::* 949/chronyd
- 开启端口说明:
- TCP 53:主从复制时使用
- UDP 53:客户查询时使用
- 953:DNS远程控制工具rndc使用,可以进行数据的更新、服务的启动等工作
1.1.7 解析测试
[root@linux-node1 ~]# dig @10.10.10.101 web.leonshadow.com ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @10.10.10.101 web.leonshadow.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5103 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;web.leonshadow.com. IN A ;; ANSWER SECTION: web.leonshadow.com. 86400 IN CNAME www.leonshadow.com. www.leonshadow.com. 86400 IN A 10.10.10.102 ;; AUTHORITY SECTION: leonshadow.com. 86400 IN NS ns1.leonshadow.com. ;; ADDITIONAL SECTION: ns1.leonshadow.com. 86400 IN A 10.10.10.101 ;; Query time: 0 msec ;; SERVER: 10.10.10.101#53(10.10.10.101) ;; WHEN: Thu Jul 09 11:43:28 CST 2020 ;; MSG SIZE rcvd: 115
1.2 部署主从DNS
主从DNS服务器配置时,由于DNS大多数均为查询使用,只有管理员才会进行域名写入操作,一般主DNS不对外提供DNS解析服务,仅作为配置变更使用,而从DNS服务器可以加入到一个或多个集群中提供域名解析服务,此时只要主服务器配置不丢,从服务器就不需要考虑备份问题。
1.2.1 Yum安装Bind
主从DNS服务器执行相同操作,同1.1.1。
1.2.2 编辑主配置文件(/etc/named.conf)
主从DNS服务器执行相同操作,同1.1.2。
1.2.3 编辑辅配置文件(/etc/named.rfc1912.zones)
- 主DNS服务器配置:
[root@linux-node1 ~]# vim /etc/named.rfc1912.zones zone "leonshadow.com" IN { type master; file "leonshadow.com.zone"; allow-transfer { 10.10.10.102; # 同步到从服务器的地址 }; notify yes; also-notify { 10.10.10.102; # 同步到从服务器的地址 }; };
- 从DNS服务器配置:
[root@linux-node2 ~]# vim /etc/named.rfc1912.zones zone "leonshadow.com" IN { type slave; masters { 10.10.10.101; }; file "slaves/slave.leonshadow.com.zone"; };
1.2.4 在主DNS服务器上编写Zone文件
仅在主服务器上更新zone文件,同1.1.4。
1.2.5 启动DNS服务
主从DNS服务器执行相同操作,同1.1.6。
1.2.6 测试主从同步
1.2.6.1 添加记录测试
- 仅在主DNS服务器上操作:
[root@linux-node1 ~]# vim /var/named/leonshadow.com.zone $TTL 1D @ IN SOA ns1.leonshadow.com. 632113590.qq.com. ( 2020070902 ; serial,每次更新后需将此值+1,否则不同步 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns1.leonshadow.com. $ORIGIN leonshadow.com. ns1 A 10.10.10.101 www A 10.10.10.102 web CNAME www mx MX 5 10.10.10.101 mx MX 50 10.10.10.102 test A 10.10.10.100 # 添加此条记录 # 重载DNS服务 [root@linux-node1 ~]# rndc reload server reload successful
- 从服务器上进行验证:
[root@linux-node1 ~]# dig @10.10.10.102 test.leonshadow.com ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @10.10.10.102 test.leonshadow.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25709 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;test.leonshadow.com. IN A ;; ANSWER SECTION: test.leonshadow.com. 86400 IN A 10.10.10.100 ;; AUTHORITY SECTION: leonshadow.com. 86400 IN NS ns1.leonshadow.com. ;; ADDITIONAL SECTION: ns1.leonshadow.com. 86400 IN A 10.10.10.101 ;; Query time: 1 msec ;; SERVER: 10.10.10.102#53(10.10.10.102) ;; WHEN: Thu Jul 09 14:01:24 CST 2020 ;; MSG SIZE rcvd: 98
1.2.6.2 添加泛解析记录
- 仅在主DNS服务器上操作:
[root@linux-node1 ~]# vim /var/named/leonshadow.com.zone $TTL 1D @ IN SOA ns1.leonshadow.com. 632113590.qq.com. ( 2020070903 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns1.leonshadow.com. $ORIGIN leonshadow.com. ns1 A 10.10.10.101 www A 10.10.10.102 web CNAME www test A 10.10.10.100 * A 1.2.3.4 [root@linux-node1 ~]# rndc reload
- 从服务器上进行验证:
[root@linux-node1 ~]# dig @10.10.10.102 aaaa.leonshadow.com ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @10.10.10.102 aaaa.leonshadow.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12129 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;aaaa.leonshadow.com. IN A ;; ANSWER SECTION: aaaa.leonshadow.com. 86400 IN A 1.2.3.4 ;; AUTHORITY SECTION: leonshadow.com. 86400 IN NS ns1.leonshadow.com. ;; ADDITIONAL SECTION: ns1.leonshadow.com. 86400 IN A 10.10.10.101 ;; Query time: 1 msec ;; SERVER: 10.10.10.102#53(10.10.10.102) ;; WHEN: Thu Jul 09 15:07:07 CST 2020 ;; MSG SIZE rcvd: 98
1.2.6.3 添加反向解析记录
- 主DNS服务器上操作:
[root@linux-node1 ~]# vim /var/named/leonshadow.com.zone # 注意:此处192.168是反向的 zone "168.192.in-addr.arpa" IN { type master; file "168.192.zone"; allow-transfer { 10.10.10.102; }; notify yes; also-notify { 10.10.10.102; }; }; [root@linux-node1 ~]# vim /var/named/168.192.zone $TTL 1D @ IN SOA ns1.leonshadow.com. 632113590.qq.com. ( 2020070901 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns1.leonshadow.com. 102.122 IN PTR a.leonshadow.com. # 此处解析的IP地址为:192.168.122.102 [root@linux-node1 ~]# chown root.named /var/named/168.192.zone [root@linux-node1 ~]# rndc reload
- 从DNS服务器上操作:
[root@linux-node2 ~]# vim /etc/named.rfc1912.zones # 注意:此处192.168是反向的 zone "168.192.in-addr.arpa" { type slave; masters { 10.10.10.101; }; file "slaves/slave.168.192.zone"; }; [root@linux-node2 ~]# rndc reload
- 测试运行结果:
[root@linux-node1 ~]# host 192.168.122.102 10.10.10.101 Using domain server: Name: 10.10.10.101 Address: 10.10.10.101#53 Aliases: 102.122.168.192.in-addr.arpa domain name pointer a.leonshadow.com. [root@linux-node1 ~]# host 192.168.122.102 10.10.10.102 Using domain server: Name: 10.10.10.102 Address: 10.10.10.102#53 Aliases: 102.122.168.192.in-addr.arpa domain name pointer a.leonshadow.com.

我的微信
如果有技术上的问题可以扫一扫我的微信