DNS 域名系统(Domain Name System 缩写 DNS,Domain Name 被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS 的默认端口为53,DNS 端口分为 TCP 和 UDP
注意:通常,FQDN有严格的命名限制,长度不能超过 256 字节,只允许使用字符 a-z,0-9,A-Z 和减号 (-),点号 (.) 只允许在域名标志之间(例如 “google.com” )或者FQDN的结尾使用。域名不区分大小,由最顶层到下层,可以分成:根域、顶级域、二级域、子域
根.根域名DNS服务器:专门负责根域名
一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区)
.com(工商企业)
.net(网络供应商)
.edu(教育机构)
.cn(中国国家域名)
.org(团体组织)
gov(政府部门)
二级DNS服务器:专门负责二级域名的解析
.net.cn
.edu.cn
.com.cn
子域名DNS服务器:专门负责子域名的解析也称为三级域名
ina.com.cn
.pku.edu.cn
主机站点
tts9
tts6
mail
www
DNS系统的作用
DNS系统类型
(1)先查本机的缓存记录
(2)查询 hosts 文件
(3)查询 dns 主域名服务器,交给 dns 域名服务器处理
以上过程成为递归查询:我要一个答案你直接会给我结果
(4)这个 dns 服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
(5)求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
(6)求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
(7)求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
(8)本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
windows系统查询dns缓存命令: ipconfig /displaydns
windows系统清理dns缓存命令: ipconfig /flushdns
linux清dns缓存需要安装nscd软件,启动、执行nscd -i hosts
bind-9.9.4-37.el7.x86_64.rpm //提供了域名服务的主要程序及相关文件
bind-utils-9.9.4-37.el7.x86_64.rpm //提供了对 DNS 服务器的测试工具程序,如 nslookup 等
bind-libs-9.9.4-37.el7.x86_64.rpm //提供了 bind、bind-utils 需要使用的库函数
bind-chroot-9.9.4-37.el7.x86_64.rpm //为 BIND 服务提供一个伪装的根目录(将/var/named/chroot/文件夹 作为 BIND 服务的根目录),以提高安全性
默认已安装 bind-utils 和 bind-libs,因此只需要安装 bind 和 bind-chroot 即可
[root@localhost ~]# rpm -qc bind //查询bind软件配置文件所在路径
/etc/logrotate.d/named //主配置文件 控制系统全局
/etc/named.rfc1912.zones //区域配置文件 控制具体单个区域 主要配置文件
/var/named/named.localhost //区域数据配置文件 区域信息 部分配置文件
安装bind软件包
yum install bind -y (必须网络源或光盘挂载) 或rpm -ivh 前提挂载光盘(系统盘ISO镜像)
vim /etc/named.conf
options {undefined
listen-on port 53 { 192.168.80.10; }; 监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
#listen-on-v6 port 53 { ::1; }; //ipv6行若不使用可以注释掉或者删除
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"; //内存统计文件的位置
allow-query { 192.168.80.0/24; 172.16.100.0/24; }; //允许使用本DNS解析服务的网段,也可用any代表所有
}
zone "." IN { //正向解析"."根区域
type hint; //类型为根区域
file "named.ca"; //区域数据文件为named.ca,
记录了13台根域服务器的域名和IP地址等信息
};
include "/etc/named. rfc1912. zones"; //包含区域配置文件里的所有配置
vim /etc/named.rfc1912.zones //文件里有模版,可复制粘贴后修改
zone "benet.com" IN { //正向解析"benet.com"区域
type master; //类型为主区域
file "benet.com.zone"; //指定区域数据文件为benet.com.zone
allow-update { none; };
};
cd /var/ named/
cp -p named.localhost benet.com.zone //保留源文件的权限和属主的属性复制
vim /var/named/benet.com.zone
$TTL 1D //有效解析记录的生存周期
@ in SOA benet.com. admin.benet.com. ( //"@"符号表示当前的DNS区域名
0 ; serial //更新序列号,可以是10位以内的整数
1D ; refresh //刷新时间,重新下载地址数据的间隔
1H ; retry //重试延时,下载失败后的重试间隔
1W ; expire //失效时间,超过该时间仍无法下载则放弃
3H) ; minimum //无效解析记录的生存周期,
NS benet.com. //记录当前区域的DNS服务器的名称
A 192.168.80.10 //记录主机IP地址
IN MX 10 mail.benet.com. //MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.80.10 //记录正向解析www.benet.com对应的IP
mail IN A 192.168.80.11 //MX为邮件交换记录,数字越大优先级低
ftp IN CNAME www //CNAME使用别名,ftp 是www的别名
* IN A 192.168.80.100 //泛域名解析,"*"代表任意主机名
#"@"这里是一个变量,当前DNS区域名
#SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
"benet.com. "此为完全合格域名(FQDN) ,后面有个"."不能漏掉
#“admin.benet.com.”表示管理员邮箱,这里的"@"符号已有其他含义,所以用"."代替
#IN 表示internet
systemctl start named
systemctl stop firewalld
setenforce 0
#如果服务启动失败,可以查看日志文件来排查错误
tail -f /var/log/messages
#如果服务启动卡住,可以执行下面命令解决
rndc-confgen -r /dev/urandom -a
#对域名语法进行检查(named.conf)
named-checkconf -z /etc/named.conf
vim /etc/resolv.conf //修改完后立即生效
nameserver 192.168.80.10
或
vim /etc/sysconfig/network-scripts/ifcfg-ens33 //修改完后需要重启网卡
DNS1=192.168.80.10
systemctl restart network
host www.benet.com
nslookup www.benet.com
ext file
lenath:11.599 lines:231
Ln:121 Co
第一步:安装并关闭防火墙
安装主软件和配置包管理软件
[root@localhost ~]# yum install bind bind-utils -y
关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl restart named
[root@localhost ~]# netstat -ntap |grep named
[root@localhost ~]# rpm -qc bind 查询安装服务的配置文件
[root@localhost ~]# vim /etc/named.conf 进入修改配置文件
第四步:编写域名,在配置文件/etc/named.rfc1912.zones下
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "fyr.com" IN {
type master;
file "fyr.com.zone";
allow-update { none; };
};
第五步:切换至named文件夹,拷贝named.localhost变成根域名文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
[root@localhost named]# cp -p named.localhost fyr.com.zone
[root@localhost named]# vim fyr.com.zone
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# rndc reload(也可以实验systemctl restart network)
[root@localhost ~]# cat /etc/resolv.conf //显示当前生效的
[root@localhost ~]# host www.fyr.com
[root@localhost ~]# host ftp.fyr.com
[root@localhost ~]# host mail.fyr.com
第一步:安装并关闭防火墙
安装主软件和配置包管理软件
[root@localhost ~]# yum install bind bind-utils -y
关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl restart named
[root@localhost ~]# netstat -ntap |grep named
[root@localhost ~]# rpm -qc bind 查询安装服务的配置文件
[root@localhost ~]# vim /etc/named.conf 进入修改配置文件
第四步:修改区域配置文件/etc/named.rfc1912.zones
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "16.168.192.in-addr.arpa" IN {
type master;
file "fyr.com.zone.local";
allow-update { none; };
};
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
[root@localhost named]# cp -p fyr.com.zone fyr.com.zone.local
[root@localhost named]# vim fyr.com.zone.local
$TTL 1D
@ IN SOA master.fyr.com admin.fyr.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.fyr.com.
master A 192.168.16.16
80 PTR www.fyr.com.
28 PTR mail.fyr.com.
16 PTR ftp.fyr.com.
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# systemctl restart network(rndc reload也可以重载配置文件)
[root@localhost ~]# cat /etc/resolv.conf //显示当前生效的
[root@localhost named]# host 192.168.16.28
[root@localhost named]# host 192.168.16.80
[root@localhost named]# host 192.168.16.16
实验环境
主服务器:192.168.16.16
从服务器:192.168.16.18
第一步:安装主从软件和配置包管理软件并关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y bind
第二步:主配置文件/etc/named.conf
配置主服务器192.168.16.16
[root@localhost ~]# vim /etc/named.conf 进入修改配置文件
第三步:修改主域名服务器区域配置文件/etc/named.rfc1912.zones
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "fyr.com" IN {
type master; //类型为主区域
file "fyr.com.zone"; 和var下面地址一样
allow-transfer { 192.168.16.18; }; //设置从服务器地址
};
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost fyr.com.zone //保留源文件的权限和属主的属性复制
[root@localhost named]# vim fyr.com.zone
$TTL 1D
@ IN SOA master admin.fyr.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.16.16
www A 192.168.16.16
mail A 192.168.16.28
ftp A 192.168.16.21
第五步:从配置文件/etc/named.conf
配置从服务器192.168.16.18
[root@localhost ~]# vim /etc/named.conf 进入修改配置文件
第六步:修改从域名服务器区域配置文件/etc/named.rfc1912.zones,添加正、反区域配置
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "fyr.com" IN {
type slave; //类型为从区域
file "slaves/fyr.com.zone"; //下载的区域数据文件保存到slaves/目录下
masters { 192.168.16.16; }; //设置主服务器地址
};
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost fyr.com.zone
第八步: 主、从重启动服务,并查看区域数据文件是否已下载成功
[root@localhost named]# systemctl restart named
ls -l /var/named/slaves/ 反向解析就必须要有区域文件
第九步:在客户端的域名解析配置文件中添加从DNS服务器地址并测试
[root@localhost named]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost named]# systemctl restart network
测试
[root@localhost named]# host www.fyr.com
[root@localhost named]# host mail.fyr.com
[root@localhost named]# host ftp.fyr.com