dns服务部署
服务器资源准备情况
IP | 系统 | 用途 |
---|---|---|
192.168.0.130 | CentOS Linux release 7.4.1708 (Core) | DNS主节点 node1 |
192.168.0.133 | CentOS Linux release 7.4.1708 (Core) | DNS从节点 node2 |
192.168.0.135 | CentOS Linux release 7.4.1708 (Core) | 客户机node3,配置主从IP为DNS |
在主从服务器安装 bind 服务:
[root@ndoe1 ~]# yum -y install bind-utils bind bind-devel bind-libs
[root@ndoe2 ~]# yum -y install bind-utils bind bind-devel bind-libs
node1主节点配置 /etc/named.conf
[root@ndoe1 ~] vim /etc/named.conf
options {
//指定BIND通过哪些网络接口和哪个端口来接收客户端请求。如果省略端口号,则使用默认端口53。127.0.0.1允许接收来自本地的请求。如果完全省略此项或网络接口是any,则默认使用所有端口。
listen-on port 53 { any; }; // 需要修改的地方
//指定BIND通过哪个端口监听IPv6客户端请求。IPv6,服务器只接受通配符地址,any和none。
listen-on-v6 port 53 { ::1; };
//BIND可以在该目录中找到包含区域数据的文件
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";
//定义客户端可以自此发送DNS请求的网络。可以用地址信息(192.168.0.1/24)替换或使用any替换
allow-query { any; }; // 需要修改的地方
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* dnssec-lookaside auto; */
/* 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";
forward only; // 需要新增的地方
forwarders { 114.114.114.114;8.8.8.8; }; // 需要新增的地方,主要进行转发,该处为全局转发,该配置一定要在此处,经实验,在中间新增该配置不生效。
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint; // 指定区域类型
file "named.ca"; // 区域文件,需要手动创建。范例文件为named.localhost
};
/*
zone ".baidu.com" IN { // 可以设置为某些域名进行转发
type forward;
forward only; // first|only first:首先转发。当转发器不回应时,自行去迭代查询。 only:只转发给指定的转发器。
forwarders { 114.114.114.114;8.8.8.8; };
};
*/
include "/etc/named.rfc1912.zones";
# include "/etc/named.root.key"; // 此处需注释,不然只能解析自定义域名,外网域名无法解析
文件中 有进行备注的 为需要修改的地方。
listen-on port 53 { any; }; 监听在当前主机上的哪个网络接口。默认是监听在localhost,也就是只有本机才能够查询,这显然是不符合现实需要的,因此可以改为any,表示可以监听多个网络接口,any之后要加上分号才算结束。只要监听在能够与外网主机进行通信的网络接口上,就可以为外网主机提供解析服务,当前前提是别人知道自己主机的IP地址。这里也可以监听在指定的网络接口上,可以监听多个接口,每个地址后面都需要加上分号。
directory "/var/named"; 这里的意思是如果在/etc/named.conf(包括被包含进来的配置文件)中定义了正反解区域解析库文件的文件名时,该文件名默认应该存放于哪个目录下,默认是存放在/var/named/目录下。需要注意的是,如果安装了bind-chroot程序包,则这些区域解析库文件最终会被主动链接到/var/named/chroot/var/named/这个目录。
*dump-file、statistics-file、memstatistics-file 与named这个服务有关的许多统计信息,如果想要输出为文件的话,默认的文件名就由这三项指定。
allow-query { any; }; 这是针对DNS客户端的设置,表示谁可以向我的DNS服务提出查询请求的意思。默认设置为localhost,表示仅允许本地查询,这里修改为any,表示对所有的用户开放(当然,防火墙必须放行才行)。
allow-transfer { none; }; 当架设主-从DNS服务器时,允许哪台从DNS服务器向我的这台DNS服务器转发区域解析库文件的数据。
recursion yes; 是否允许为DNS客户端做递归查询。默认为yes.
开始配置内网的域名解析: /etc/named.rfc1912.zones
[root@ndoe1 ~]# vim /etc/named.rfc1912.zones
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "fubao.cn" IN { # 新增需要的二级域名配置,其他二级域名再新增该配置即可
type master; # 主节点
file "fubao.cn.zone"; # 需要修改的地方,并且在/var/named下新增该文件
allow-update { 192.168.0.133; };
allow-transfer { 192.168.0.133; }; # 允许同步DNS的辅助服务器IP,填写为我们后续的从节点服务器IP
also-notify { 192.168.0.133; };
notify yes; # 启用变更通告,当主文件变更,通知从进行比较同步
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
文件中后面有备注的为新增或需要修改的地方
配置单独的正向解析文件
[root@ndoe1 ~]# cd /var/named/
[root@ndoe1 ~]# cp named.localhost fubao.cn.zone
[root@ndoe1 ~]# chown named:named fubao.cn.zone
如果有其他的二级域名解析的,和上述操作一样,再次进行复制想要的域名文件,并修改文件权限、
配置在二级域名的文件中新增三级域名
[root@ndoe1 ~] vim /var/named/fubao.cn.zone
$TTL 1D ; TTL 修改配置生效时间,默认为一天
@ IN SOA @ rname.invalid. (
0 ; serial 配置编号,每次改完配置 +1,这样从服务器就知道更新配置
1D ; refresh 从服务器刷新时间,默认一天刷新一次
1H ; retry 如果刷新失败,默认1小时重试一次
1W ; expire 缓存过期时间,一周
3H ) ; minimum 无效地址解析记录默认缓存时间(该数据库中不存在的地址),默认为3小时。
NS @
A 127.0.0.1
AAAA ::1
wwww IN A 192.168.0.131
此时,我们新增了一个 www.fubao.con 的 A 记录
启动服务,并设置为自动重启
[root@ndoe1 ~]# systemctl start named
[root@ndoe1 ~]# systemctl enable named
查看 服务 或端口 是否启动
[root@ndoe1 ~]# ps -ef |grep named
[root@ndoe1 ~]# netstat -tlunp | grep 53
本地服务器测试
[root@ndoe1 ~]# dig @127.0.0.1 www.fubao.cn
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> @127.0.0.1 www.fubao.cn
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56235
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.fubao.cn. IN A
;; ANSWER SECTION:
www.fubao.cn. 86400 IN A 192.168.0.131
;; AUTHORITY SECTION:
fubao.cn. 86400 IN NS fubao.cn.
;; ADDITIONAL SECTION:
fubao.cn. 86400 IN A 127.0.0.1
fubao.cn. 86400 IN AAAA ::1
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jun 05 17:17:41 CST 2022
;; MSG SIZE rcvd: 127
其他检查配置方法
# 检查主配置
named-checkconf /etc/named.conf
# 检查 zone 配置
named-checkzone fubao.cn /var/named/fubao.cn.zone
在客户机 192.168.0.135 上配置
修改客户机192.168.0.135的 dns 为 192.168.0.130 192.168.0.133
修改后,重启网卡
[root@ndoe3 ~]# ping www.fubao.cn
PING www.fubao.cn (192.168.0.131) 56(84) bytes of data.
64 bytes from 192.168.0.131 (192.168.0.131): icmp_seq=1 ttl=63 time=0.225 ms
64 bytes from 192.168.0.131 (192.168.0.131): icmp_seq=2 ttl=63 time=0.203 ms
64 bytes from 192.168.0.131 (192.168.0.131): icmp_seq=3 ttl=63 time=0.290 ms
64 bytes from 192.168.0.131 (192.168.0.131): icmp_seq=4 ttl=63 time=0.270 ms
[root@ndoe3 ~]# ping www.baidu.com
PING www.baidu.com (183.232.231.174) 56(84) bytes of data.
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=1 ttl=56 time=7.27 ms
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=2 ttl=56 time=7.18 ms
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=3 ttl=56 time=7.13 ms
此时完成主节点服务器的搭建,可以ping通内网域名,也可以ping通外网域名(如果外网有问题,查看商法的 named.conf 配置文件)
从节点服务配置
- 先将主节点的 named.conf复制到从节点
[root@ndoe1 ~]# scp /etc/named.conf root@192.168.0.133:/etc/named.conf
- 修改主服务器的配置文件: /etc/named.rfc1912.zones
[root@ndoe2 ~]# vim /etc/named.rfc1912.zones
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "fubao.cn" IN { # 新增 该配置文件
type slave; # 从节点配置
file "slaves/fubao.cn.zone"; # 指定域名解析的路径,不用新增,从节点从主节点进行同步
masters { 192.168.0.130; }; # 指定主服务器的 IP
masterfile-format text; # 指定区域文件的格式为text,不指定有可能会为乱码
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
此处主要新增 有备注的地方
从节点的named进行重启验证
systemctl start named
systemctl enable named
重启成功后我们会发现,在从节点服务器的 /var/named/slaves 目录下,fubao.cn.zone 已经同步成功