目录:
1.试验记录
2.全流程

record

注:记录过程中已发现存在的错误或不恰当之处:
数据库文件中时间大小应以秒为单位。
新增区域应写在/etc/named.rfc1912.zones中。

Record:

Centos 7

提示:
0.
检查是否安装DNS服务的软件
rpm -qa|grep bind
whereis named
yum info bind
1.
网络配置文件位置
/etc/sysconfig/network-scripts/
比如:修改ens33配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
重启网络服务
systemctl restart network.service
2.
修改文件权限 读写执行421
chmod 数字 文件名
或(不加空格)
chmod 组代号 ±=(加减等于号) 权限代号
组代号:u-user g-group o-others a-all
权限代号:r读 w写 x执行
修改属主属组
chown 属主:属组 文件名
3.
客户机改dns — 改网卡配置文件(目录 /etc/sysconfig/network-scripts/) 或者 改dns配置文件(vim /etc/resolv.conf)
经测试,如果改DNS文件,重启network.service后/etc/resolv.conf还会变成网卡配置文件中设置的DNS,所以还是直接去网卡配置里面改。
centos7 手动修改dns
重启网卡 systemctl restart network
4.
临时关闭SELinux :
setenforce 0
5.
临时关闭防火墙命令
systemctl stop firewalld.service
6.
vi打开文件没有语法高亮
vim打开文件有语法高亮,有红色标识的是错误的地方,最好修改,有些不改也能运行,但很可能出错。
7.
dns正反向配置文件中以英文符号的";"分号作为注释符号。
8.
查看监听的端口
netstat -lnpt
9.
windows系统刷新dns缓存命令: ipconfig /flushdns

配置过程

固定ip:

centos DNS服务器搭建缓存外网 centos7搭建dns_centos DNS服务器搭建缓存外网


检查是否安装了bind软件包

yum -y install bind

主DNS服务器 配置文件 设置 /etc/named.conf

新增区(zone)

tpye字段 master是主服务器,slave是从服务器。

修改:

listen-on port 53 { any; };

allow-query { any; };

另外:

第一个zone是正向解析,第二个是反向解析

centos DNS服务器搭建缓存外网 centos7搭建dns_dns服务搭建_02


正向解析:

复制模板文件 位置: /var/named/named.localhost

复制并改名为 xxx.com.zone (名字)

给其他组用户增加读权限,用于本地调试

解释:(重要)

在这个文件中,“;”分号是注释符号,名称后面没加点的是主机名,加了的是全称域名。

$ORIGIN 后填写域名作为@符号的引用源,不写则会引用主配置文件中zone语句后的值。

$TTL是生存时间。

SOA是起始授权,表明此DNS服务器是该DNS域中的主服务器(权威DNS服务器)。后面两个参数分别是主DNS服务器主机名和管理者邮箱。

括号内第一个参数代表配置文档的新旧,越大标识越新。每次修改文件后都应改大。

括号内第二个参数是刷新频率,标识slave隔多久跟master对比并选择是否更新,单位是秒。

括号内第三个参数是失败重新尝试时间,单位是秒。

括号内第四个参数是失效时间,单位是秒。表示主服务器不工作多长时间之后将此服务停止。

括号内第五个参数表示其它DNS服务器能缓存否定的时间,单位是秒。否定回答是指查询记录在区域文件中不存在。失败解析记录缓存时间。

解析记录类型:

NS表示指定域的DNS服务器主机名,不管是主dns还是从dns。

A表示指定主机的IP地址,AAAA是使用IPv6的IP地址。

MX表示指定域的邮件服务器主机名。MX后的数是优先级,越小越优先。相同优先级在多台之间分担负载。

CNAME表示别名。用于同一台主机上的多个服务类型。

centos DNS服务器搭建缓存外网 centos7搭建dns_centos7_03

反向解析:

复制模板文件 位置: /var/named/named.localhost

复制并改名为 192.168.118.zone

权限更改:

给其他组用户增加读权限,用于本地调试

注:反向解析配置文件内容IP字段写全" xxx.xxx.xxx.in-addr.arpa. "或者只写主机位。

centos DNS服务器搭建缓存外网 centos7搭建dns_centos7_04

或:直接给所有用户all增加读权限

centos DNS服务器搭建缓存外网 centos7搭建dns_dns服务搭建_05

语法检查命令:
使用named-checkconf命令可以对named配置文件进行语法检查。需要指定要检查的配置文件的名称,如果没有指定则默认为/etc/named.conf文件。
语法格式:
named-checkconf [参数] [配置文件]
named-checkzone 区名 区数据库文件名
例子:(named.service)
named-checkconf -z /etc/named.conf
另:
named-checkconf-命名配置文件语法检查工具 参考:
1【named-checkconf命令 – named配置文件语法检查 ->详细
2【FreeBSD手册页 ->链接

防火墙放行DNS:
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
或:直接暂时关闭防火墙

dns的胶水记录
参考:
1.DNS之胶水记录(glue record) 2.dns的胶水记录glue record

验证是DNS服务器否正常提供服务
1.本机验证
1)服务启动没有致命性错误,查看运行状态没有红色报错;
2)查看运行状态,日志中有 “ all zones loaded ”则表示载入正常,状态为绿色active:running;
3)nslookup正反向解析都能成功显示解析结果;
2.客户端验证
1)nslookup可以正确解析。

出现的问题:

1.

IP地址设置错误 每个字段范围1~254

2.

@ 重复

centos DNS服务器搭建缓存外网 centos7搭建dns_centos7_06


图中这里第二个@处要么用@要么写全称jnrplinux.com. 不可以都写

这里SOA后第二个字段是管理员邮箱,可以加.结尾也可以不加。

3.

引号括起来的字符串内容不能有多余的空格。

4.

此报错: ignoring out-of-zone data (1.168.192.in-addr.arpa)

不影响运行。

5.

虽然 named.service 成功启动并处于运行状态,但日志中可以看到有 network unreachable resolving

这个报错对ipv4解析没有影响。

网上查到:这个错误的原因是named尝试使用IPV6进行传输

解决方法- 编辑文件vi /etc/sysconfig/named //named.service

把下面的代码加入文件中

OPTIONS="-4"

再次查看状态就正常了

清理host缓存:nscd -i hosts
安装 nscd
yum -y install nscd

备注:

1:(图片)

【Centos7 搭建DNS服务器与原理配置详解】

centos DNS服务器搭建缓存外网 centos7搭建dns_dns_07

]

2.
然后将服务,在防火墙上放行:
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
3.

疑问:

是否能把named.service服务的正反向解析文件写在同一个文件里?不能!

1.

在主配置文件里注释掉反向解析区

centos DNS服务器搭建缓存外网 centos7搭建dns_dns_08


2.

在正向解析文件里添加反向解析记录

3.

重启named.service服务:未报错

查看状态:正常

正向解析:正常

反向解析:报错-未找到 not found

4.

恢复原样

删除新增内容,取消注释,重启服务。

恢复正常。从DNS服务器:

原理:

对从服务器进行操作,新增从服务器的区(zone)的type设为slave,查询主服务器的数据库文件(二进制文件)。

要在主DNS服务器设置允许被查询即(内容或者改成any;):

allow-query { 192.168.118.152; };

从DNS服务器修改配置文件:(名字和主服务器相同)

指明master的IP地址。

file内容不必创建,只需写出目录,程序会自动生成并拥有权限。

centos DNS服务器搭建缓存外网 centos7搭建dns_centos DNS服务器搭建缓存外网_09


结果,可以让主机指向从DNS服务器,也可以成功解析。从服务器的区解析依赖主服务器的区。

报错

SOA record not at top of zone:SOA记录没在区头,反向区配置文件错误

nslookup结果出现** server can’t find xxx.com: REFUSED:拒绝被查询,检查主配置文件的allow-query 后是否为 { any; };

nslookup结果出现** server can’t find 102.118.168.192.in-addr.arpa.: NXDOMAIN:查询失败,检查区配置文件设置是否正确

辅助服务器启动时红色报错:
dumping master file: slave/tmp-wCBICZTShC: open: file not found

疑问
经测试:

每次修改完配置文件要重启服务?是必须的。

文件权限
区配置文件的权限是否要修改?是。
区配置文件权限最低是怎样的?因为修改区配置文件只是为了本地测试通过,不影响客户机解析,故只需确保named有读权限。
区配置文件的属主属组一定要修改吗?不需要修改。对本地测试和客户机解析均不影响。

关键字$ORIGIN
是必要的吗?不是。不写则@取值为named.conf中zone后的字符串。
写了会报错吗?有可能会。比如我测试时正向写了没报错,反向的报错了,于是注释掉了再就不报错了。

关键字IN

是必要的吗?不是。比如下图的正向区配置文件,本地和宿主机nslookup仍能解析正确。

centos DNS服务器搭建缓存外网 centos7搭建dns_centos DNS服务器搭建缓存外网_10


反向区配置文件

ARP记录的格式“111.168.192.in-addr.arpa”是允许的吗?改成要解析的网段就行。我想反向解析其他网段行不行?行。

就把反向解析的网段少写一段,剩下的就由需要解析的ip补全。

centos DNS服务器搭建缓存外网 centos7搭建dns_配置文件_11

centos DNS服务器搭建缓存外网 centos7搭建dns_centos DNS服务器搭建缓存外网_12

全流程

区域数据库文件名、域名和IP地址都已无效处理,要改成你自己的才能使用。


在Centos7上
主DNS服务器,不带chroot
1. ifconfig 查看IP(固定IP),并把DNS指向自己
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改保存退出。
2.检查软件安装
yum -y install bind
3.配置主配置文件
vim /etc/named.conf
修改两个any:
options {
listen-on port 53 { 127.0.0.1; };
allow-query { localhost; };
};
把127.0.0.1和localhost都改成any,其余不动。
保存退出。
4.新增正反向区
vim /etc/named.rfc1912.zones
新增正向和反向解析区
例如:

zone "xxx.com" IN {
	type master;
	file "xxx.zone";
	allow-transfer { any; };  	//允许被查询,没有从服务器可以不加
};

保存退出。
5.创建并且配置正向数据库文件
cp /var/named/named.localhost /var/named/xxx.zone
vim /var/named/xxx.zone

$TTL 86400
@       IN SOA  xxx.com. admin.xxx.com. (
                                        202020201       ; serial
                                        86400      ; refresh
                                        3600      ; retry
                                        604800      ; expire
                                        10800 )    ; minimum
        NS      xxx.com.
xxx.com.        A       192.168.1.1
dns		A		192.168.1.1
www		A		192.168.1.1

保存退出。

6.创建并且配置反向数据库文件
cp /var/named/named.localhost /var/named/xxx.rev.zone
vim /var/named/xxx.rev.zone

保存退出。

7.修改权限或者更改属主,可用ll查看文件权限
cd /var/named/
chmod 644 /var/named/xxx.zone
chmod 644 /var/named/xxx.rev.zone

chown root:named xxx.zone
chown root:named xxx.rev.zone

8.检查dns语法
named-checkconf //检查主配置文件
named-checkzone xxx.com xxx.zone
named-checkzone 1.168.192.in-addr.arpa xxx.rev.zone
9.启动服务并查看状态
systemctl start named.service
systemctl status named.service
关闭ipv6解析(非必须,可跳过,进入下一步)
vi /etc/sysconfig/named
把下面的代码插入文件末尾
OPTIONS="-4"
保存退出。
重启服务并查看状态
systemctl restart named.service
systemctl status named.service
10.本地lookup测试
nslookup xxx.com
nslookup 192.168.1.1
11.暂时关闭防火墙 或 添加规则并重启防火墙
systemctl stop firewalld.service

firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
12.客户机修改dns指向本服务器并进行nslookup测试


从DNS服务器搭建(辅助DNS服务器)
在另一台Centos7上
13.ifconfig 查看IP(固定IP),并把DNS指向自己
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改保存退出。
14.检查软件安装
yum -y install bind
15.配置主配置文件
vim /etc/named.conf
修改两个any,保存退出。
16.新增正反向区
vim /etc/named.rfc1912.zones
新增正向和反向解析区

例:
zone "xxx.com" IN {
	type slave;
	file "slaves/xxx.zone";
	masters { 192.168.1.1; };
};

17.保证该路径对named用户具有写入权限
cd /var/named/
chmod 766 slaves
18.检查dns语法
named-checkconf
19.启动服务并查看状态
systemctl start named.service
systemctl status named.service
关闭ipv6解析(非必须,可跳过,进入下一步)
vi /etc/sysconfig/named
把下面的代码插入文件末尾
OPTIONS="-4"
保存退出。
重启服务并查看状态
systemctl restart named.service
systemctl status named.service
20.本地nslookup测试
nslookup xxx.com
nslookup 192.168.1.1
21.暂时关闭防火墙 或 添加规则并重启防火墙
systemctl stop firewalld.service
22.客户机修改dns指向本服务器并进行nslookup测试


下面是带chroot的流程:
在一个Cnetos7上
1. ifconfig 查看IP(固定IP),并把DNS指向自己
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改保存退出。
2.检查软件安装
yum install bind-chroot bind -y
3.复制生成文件
cp -R /usr/share/doc/bind-*/sample/var/named/* /var/named/chroot/var/named/
touch /var/named/chroot/var/named/data/cache_dump.db
touch /var/named/chroot/var/named/data/named_stats.txt
touch /var/named/chroot/var/named/data/named_mem_stats.txt
touch /var/named/chroot/var/named/data/named.run
mkdir /var/named/chroot/var/named/dynamic
touch /var/named/chroot/var/named/dynamic/managed-keys.bind
chmod -R 777 /var/named/chroot/var/named/data
chmod -R 777 /var/named/chroot/var/named/dynamic
cp -p /etc/named.conf /var/named/chroot/etc/named.conf

4.编辑主配置文件
vim /var/named/chroot/etc/named.conf
修改两个any,保存退出。
5.新增正反向区
cp /etc/named.rfc1912.zones /var/named/chroot/etc/
chmod 646 /var/named/chroot/etc/named.rfc1912.zones
vim /var/named/chroot/etc/named.rfc1912.zones
新增正向和反向解析区

例:
zone "x.net" IN {
	type master;
	file "x.zone";
	allow-query { any; };
};

保存退出。
6.创建并且配置正向数据库文件

cp /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/x.zone

vim /var/named/chroot/var/named/x.zone

$TTL 86400
@       IN SOA  x.net. admin.x.net. (
                                        202020201       ; serial
                                        86400      ; refresh
                                        3600      ; retry
                                        604800      ; expire
                                        10800 )    ; minimum
        NS      x.net.
x.net.        A       192.168.1.1
x		A		192.168.1.1
x		A		192.168.1.1
x		CNAME		www.x.net.

保存退出。

7.创建并且配置反向数据库文件

cp /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/x.rev.zone

vim /var/named/chroot/var/named/x.rev.zone

$TTL 86400
@       IN SOA  x.net. x.x.net. (
                                        202020201       ; serial
                                        86400      ; refresh
                                        3600      ; retry
                                        604800      ; expire
                                        10800 )    ; minimum
        NS      x.net.
1		PTR		x.x.net.
1		PTR		x.x.net.
1		PTR		x.x.net.

保存退出。
修改权限或者更改属主,可用ll查看文件权限
cd /var/named/chroot/var/named/
chmod 644 x.zone
chmod 644 x.rev.zone
8.检查dns语法
named-checkconf -z /var/named/chroot/etc/named.conf
named-checkconf /var/named/chroot/etc/named.conf
named-checkzone x.net /var/named/chroot/var/named/x.zone
named-checkzone 1.168.192.in-addr.arpa /var/named/chroot/var/named/x.rev.zone
9.启动服务并查看状态
systemctl start named-chroot
systemctl status named-chroot
10.本地lookup测试
nslookup x.net
nslookup 192.168.1.1
11.暂时关闭防火墙 或 添加规则并重启防火墙
systemctl stop firewalld.service
12.客户机修改dns指向本服务器并进行nslookup测试