# DNS 域名解析服务

# 准备工作

# 设置服务器网络参数,设置主机名

# 网络参数

参见配置文件: /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33		设备名称
NAME=ens33			网卡名称
BOOTPROTO=static	static为静态ip地址
ONBOOT=yes			开机是否激活网卡(yes激活,no禁用)
IPADDR=				配置IP地址
NETMASK=			配置子网掩码
PREFIX=				配置子网掩码(位数)
GATEWAY=			配置默认网关
DNS1=				配置首选DNS地址
注意:如有备用DNS地址的配置项为DNS2

注意:网卡配置文件内,选项要大写,小写不报错,但不生效,参数可小写

# 设置主机名

三种方式
1.nmtui
2.vim /etc/hostname
3.hostnamectl set-hostname 主机名

# 安装软件包

# 安装方式

安装bind软件包,需要先挂载光盘
mount /dev/cdrom /mnt
挂载	 设备名称	 挂载点目录
1.rpm安装
cd /挂载点目录/Packages
rpm -i 安装包名
2.yum安装
yum安装需要配置yum软件仓库
yum install 安装包名

# yum 软件仓库配置

# 本地源
cd /etc/yum.repos.d
vim 任意名.repo
[glj]			仓库名称自定义
name=			yum仓库描述可有可无
baseurl=file://	指定yum仓库的路径,file://表示本地仓库
enabled=1		表示启用该仓库,1为启用,0为不启用
gpgcheck=0		是否校验仓库软件包的签名,1为校验,0为不校验
# 网络源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

# 编辑配置文件

# 主配置文件 /etc/named.conf

# 全局配置

options {
        listen-on port 53 { any; };
                    _ _ _ _ _ _ _ _ _ _ _ _ _略
设置named服务器监听端口及ip地址,为不同网段做dns需要使用any
(any为所有)
        allow-query     { any; };
         			_ _ _ _ _ _ _ _ _ _ _ _ _略
设置可以请求解析的客户机地址(设置某网段,any为所有)
        dnssec-validation no;
					_ _ _ _ _ _ _ _ _ _ _ _ _略
};

# 区域配置 (或者在 /etc/named.rfc1912.zones 也行)

zone "正向域"
        type    master;
        file    "文件名1";
};
zone "反向域.in-addr.arpa"
        type    master;
        file    "文件名2";
};
type  hint(提示作用)  master(主dns服务器) slave(从dns服务器)
样例:
zone "server.com" IN {                                    
    type 	master;                                       
    file   	"server.com.zone";                             
};
zone "16.16.172.in-addr.arpa" IN {                       
    type master;
    file "172.16.16.arpa";                               
};

注意:根域不能动

zone "." IN {
        type hint;
        file "named.ca";
};

# 正向解析文件:/var/named 目录下自拟文件名

模板:/var/named/named.localhost

$TTL 1D
@	IN SOA	  域名.   rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@		  NS      DNS主机名.
主机一 	A		对应IP地址
主机二		A		对应IP地址
主机名		A		对应IP地址
(DNS服务器)
样例:
$TTL 1D
@	IN SOA	  server.com.   rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@		NS		dns.server.com.
www		A		100.100.100.111
mail	A		100.100.100.222
dns		A		100.100.100.100

# 反向解析文件:/var/named 目录下自拟文件名

参见正向文件
$TTL 1D
@	IN SOA	  域名.   rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@			  NS	  DNS主机名.
IP地址		PTR		主机1对应完整域名.
IP地址		PTR		主机2对应完整域名.
IP地址		PTR		DNS服务器对应主机名.
样例:
$TTL 1D
@	IN SOA	server.com. rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@		NS		dns.server.com.
111		PTR		www.server.com.
222		PTR		mail.server.com.
100		PTR		dns.server.com.

# 启动服务

1.先关闭防火墙
systemctl stop firewalld
2.关闭SELinux
setenforce 0
3.启动服务
systemctl start named
4.启动成功进行测试 or 启动失败查看日志文件排错
启动失败(/var/log/messages)

注意:这里关闭防火墙和 SELinux 都是临时关闭系统重启后失效

# 验收测试

[root@glj named]# nslookup
> server
Default server: 100.100.100.100
Address: 100.100.100.100#53
> www.server.com
Server:		100.100.100.100
Address:	100.100.100.100#53
Name:	www.server.com
Address: 100.100.100.111
> 
> 100.100.100.222
Server:		100.100.100.100
Address:	100.100.100.100#53
222.100.100.100.in-addr.arpa	name = mail.server.com.
> 
> 
> exit

# 总结易错点

1.网络参数设置问题,DNS1设置错误		在nslookup里使用server查错
2.忘记关闭防火墙与SELinux
3.主配置文件区域配置问题,type hint;忘记修改成type master;
4.正,反向解析文件出错,忘记域名和DNS主机名后面有点
$TTL 1D
@	IN SOA	server.com. rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@		NS		dns.server.com.
111		PTR		www.server.com.
222		PTR		mail.server.com.
100		PTR		dns.server.com.
5.每次更改配置后忘记重启服务