小阿轩yx-DNS域名解析服务
DNS 服务介绍
DNS是英文Domain Name System的缩写,翻译过来就是域名解析系统。
它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
- 协议:UDP协议
- 架构:C/S
DNS 系统的作用
DNS系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析和反向解析;
- 正向解析:根据域名查找对应的IP地址,域名的正向解析是 DNS 服务器最基本的功能,也是最常用的功能
- 反向解析:根据IP地址查找对应的域名,即将指定的 IP 地址解析为相对应的域名。域名的
反向解析不是很常用,只在一些特殊场合才会用到,比如可用于反垃圾邮件的验证
DNS 域名解析服务的应用场景
A.公司内部
DNS 系统的介绍
Internet 域名空间的最顶层是根域(.)
- 全球有 13 台根服务器
a、b、c、d、e、f、g、h、i、j、k、l、m(A)是IPV4的地址
(一台在日本、两台在欧洲、剩下的都在美国本土)
m. root-servers.net. 518400 IN A 202.12.27.33服务器在日本
k. root-servers.net. 518400 IN A 193.0.14.129服务器在欧洲英国伦敦
i. root-servers.net. 518400 IN A 192.30.148.17服务器在欧洲瑞典
a、b、c、d、e、f、g、h、i、j、k、l、m(AAAA)是IPV6的地址
- 1 个主根域名服务器
- 12 个辅根域名服务器
DNS 根域下面是顶级域
由 Internet 域名注册授权机构管理。共有 3 种类型的顶级域
- 国际顶级域名:采用 3 个字符的代号,如 .com、 .edu、.org
- 国家或地区域名:采用 2 个字符的国家或地区代号,如.cn 为中国、.kr 为韩国、.us 为美国
- 新通用顶级域名:也叫新顶级域名、新顶域,如xin、 .top、 .xyz、.vip
DNS 域名 | 组织类型 | 举例 |
com | 商业公司 | www.xuanzishare.com |
edu | 教育机构 | www.harvard.edu |
net | 网络公司 | www.csdn.net |
gov | 非军事政府机构 | www.whitehouse.gov |
mil | 军事政府机构 | www.navy.mil |
org | 非盈利组织 | www.linux.org |
xx | 国家/地区 | www.cas.cn |
DNS域名解析查询过程
DNS查询方式
- 递归查询(主机向本地域名服务器查询采用递归查询)
在该模式下,DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
- 迭代查询(本地域名服务器向域名服务器查询采用迭代查询)
DNS另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
常见DNS服务器地址
- Google 谷歌公司:8.8.8.8(主),8.8.4.4 (备)
- 国内电信DNS:114.114.114.114
- 阿里巴巴公司:223.5.5.5 (主),223.6.6.6 (备)
DNS系统类型
缓存域名服务器
也称为DNS高速缓存服务器
- 通过向其他域名服务器查询获得域名 -> IP地址记录
- 将客户端域名查询结果缓存到本地,提高重复查询时的速度和效率。
主域名服务器
- 特定DNS区域的权威服务器,具有唯一性
- 负责维护该区域内所有域名->IP地址的映射记录
- 需要自行建立所负责区域的地址数据文件
从域名服务器
- 也称为辅助域名服务器,是对主域名服务器的热备份
- 其维护的域名->IP地址记录来源于主域名服务器
- 需要从主域名服务器自动同步区域地址数据库
BIND 软件安装
BIND(Berkeley Internet Name Daemon)
- BIND是应用最广泛的DNS服务程序
- 官方站点:https://www.isc.org/
安装bind程序所需的包有:
- bind:主程序包,提供域名解析服务的主要程序和相关配置文件
- bind-utils:提供 DNS 域名解析使用的各种测试工具,如:nslookup
- bind-libs:提供 bind、bind-utils 实现功能的各种库函数
- bind-chroot:安装 bind 服务时提供的一个伪装目录(/var/named/chroot),提高配置文件和区域数据文件的安全性
/etc/named.conf – /var/named/chroot/etc/named.conf
1、安装BIND软件
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
[root@localhost ~]# yum -y install bind bind-utils bind-libs bind-chroot
BIND 服务的配置文件
1、BIND服务器端程序
- 主要执行程序:/usr/sbin/named
- 默认监听端口:53
- 主配置文件:/etc/named.conf
- DNS解析记录的数据文件路径:/var/named/
2、BIND服务控制
- systemctl [status|start|stop|restart] named.service
构建缓存域名服务器
BIND服务主配置文件 named.conf
[root@localhost ~]# vim /etc/named.conf
全局配置部分
- 设置DNS服务器的全局参数
- 包括监听地址和端口、区域数据文件存放的目录等
- 使用options { …… }; 的配置段
options {
# 全局的选项和设置
listen-on port 53 { 192.168.1.5; };
# 监听 DNS 查询的 53 端口
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";
query-source port 53;
allow-query { 192.168.1.0/24; };
recursion yes;
};
区域配置部分
- 设置本服务器提供域名解析的特定DNS区域
- 包括域名、服务器角色、数据文件名等
- 使用zone “区域名” IN { …… }; 的配置段
zone "." IN {
# 定义 hyx.cloud 区域
type hint;
# 将此区域定义为主区域
file "hyx.com.zone";
# 指向包含 hyx.cloud 区域数据的文件
allow-transfer { 192.168.60.12; };
# 允许区域传输到指定的 IP 地址
};
zone "16.16.173.in-addr.arpa" IN {
# 定义 16.16.173.in-addr.arpa 的反向查找区域
type master;
# 将此区域定义为主区域
file "173.16.16.arpa";
# 指向包含反向查找区域数据的文件
allow-transfer { 192.168.60.12; };
# 允许区域传输到指定的 IP 地址
};
全局 TTL 配置项及 SOA 记录
- $TTL(Time To Live,生存时间)
- SOA(Start Of Authority,授权信息开始)
- 分号 “;” 开始的部分表示注释信息
$TTL 86400
# 有效解析记录的生存周期
@ IN SOA bdqn.com. admin.bdqn.com.(
# SOA标记、区域名称 管理邮箱地址
2011030501
# 更新序列号,可以是10位以内的整数
3H
# 刷新时间,重新下载地址数据的间隔
15M
# 重试延时,下载失败后的重试间隔
1W
# 失效时间,超过该时间仍无法下载则放弃,从服务器更新参数
1D
# 无效解析记录的生存周期
)
正向解析记录
- NS 域名服务器(Name Server)记录
- MX 邮件交换(Mail Exchange)记录
- A 地址(Address)记录,只用在正向解析区域中
- CNAME 别名(Canonical Name)记录
@ IN NS ns1.bdqn.com.
IN MX 10 mail.bdqn.com.
ns1 IN A 58.119.74.203
www IN A 173.16.16.1
mail IN A 173.16.16.4
ftp IN CNAME www
反向解析记录
- PTR 指针(Point)记录
- 记录的第一列指定 IP 地址中的主机地址部分
1 IN PTR www.bdqn.com.
4 IN PTR mail.bdqn.com.
对配置文件进行语法检查
named-checkconf 工具
named-checkconf [主配置文件]
[root@localhost ~]# named-checkconf -z /etc/named.conf
# -z 尝试加载主配置文件中对应的区域数据库文件
zone bdqn.com/IN: loading from master file bdqn.com.zone failed: file not found
…… //省略部分内容
named-checkzone 工具
named-checkzone <域名> <区域数据文件>
[root@localhost ~]# cd /var/named/
[root@localhost named]# named-checkzone bdqn.com bdqn.com.zone
zone bdqn.com/IN: loaded serial 2011030501
OK
DNS 服务配置
主服务器配置
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 先修改 网络配置文件中,DNS 地址
DNS1=192.168.254.11
DNS2=192.168.254.12
# 安装 bind 软件
[root@localhost ~]# mkdir /media/cdrom
[root@localhost ~]# mount /dev/cdrom /media/cdrom/
[root@localhost ~]# cd /media/cdrom/Packages/
[root@localhost Packages]# rpm -ivh bind-9.9.4-72.el7.x86_64.rpm
# 错误:依赖检测失败:python-ply 被 bind-32:9.9.4-72.el7.x86_64 需要
[root@localhost Packages]# rpm -ivh python-ply-3.4-11.el7.noarch.rpm
[root@localhost Packages]# rpm -ivh bind-9.9.4-72.el7.x86_64.rpm
# 安装 bind 包
[root@localhost Packages]# cp /etc/named.conf /etc/named.conf.bak
# 备份配置文件
[root@localhost Packages]# vim /etc/named.conf
named.conf
options {
# 全局的选项和设置
listen-on port 53 { 192.168.254.13; };
# 监听 DNS 查询的 53 端口
directory "/var/named";
# 指定区域文件存储的目录
allow-query { 192.168.254.0/24; 192.168.70.0/24; };
# 允许来自指定 IP 段的 DNS 查询
};
zone "hyx.cloud" IN {
# 定义 hyx.cloud 区域
type master;
# 将此区域定义为主区域
file "hyx.cloud.zone";
# 指向包含 hyx.cloud 区域数据的文件
allow-transfer { 192.168.254.13; };
# 允许区域传输到指定的 IP 地址
};
zone "16.16.173.in-addr.arpa" IN {
# 定义 16.16.173.in-addr.arpa 的反向查找区域
type master;
# 将此区域定义为主区域
file "173.16.16.arpa";
# 指向包含反向查找区域数据的文件
allow-transfer { 192.168.254.13; };
# 允许区域传输到指定的 IP 地址
};
[root@localhost ~]# cd /var/named/
[root@localhost named]# vim hyx.cloud.zone
# :r named.localhost
# 导入模板文件
localhost.cloud.zone
$TTL 86400
@ IN SOA hyx.cloud. admin.hyx.cloud. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1.hyx.cloud.
IN NS ns2.hyx.cloud.
IN MX 10 mail.hyx.cloud.
ns1 IN A 192.168.254.11
ns2 IN A 192.168.254.13
www IN A 173.16.16.1
mail IN A 173.16.16.2
study IN A 173.16.16.3
ftp IN A 173.16.16.4
web IN CNAME 173.16.16.1
* IN A 173.16.16.1
173.16.16.arpa
$TTL 86400
@ IN SOA hyx.cloud. admin.hyx.cloud. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1.hyx.cloud.
IN NS ns2.hyx.cloud.
IN MX 10 mail.hyx.cloud.
ns1 IN A 192.168.254.11
ns2 IN A 192.168.254.13
mail IN A 173.16.16.2
1 IN PTR www.hyx.cloud.
2 IN PTR mail.hyx.cloud.
3 IN PTR study.hyx.cloud.
4 IN PTR ftp.hyx.cloud.
[root@hyx named]# named-checkconf -z /etc/named.conf
# 检查主配置文件
[root@hyx named]# named-checkzone hyx.cloud /var/named/hyx.cloud.zone
zone hyx.cloud/IN: loaded serial 0
OK
# 检查区域配置文件
[root@hyx named]# named-checkzone hyx.cloud /var/named/173.16.16.arpa
zone hyx.cloud/IN: loaded serial 0
OK
# 检查区域配置文件
systemctl enable named
systemctl start named
systemctl status named
[root@hyx named]# netstat -anpt | grep named
缓存服务器配置
前置配置与主服务器一致,仅修改 named.conf 配置文件即可
options {
listen-on port 53 { 192.168.254.11; };
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";
query-source port 53;
allow-query { 192.168.254.0/24; };
recursion yes;
};
zone "." IN {
type hint;
file "named.ca";
};
构建主域名服务器
- 主、从域名服务器均位于 Internet 中,所负责的 DNS 区域为“bdqn.com”
- 主服务器的 IP 地址为 173.16.16.5,主机名为 ns1.bdqn.com
- 从服务器的 IP 地址为 173.16.16.6,主机名为 ns2.bdqn.com
- 在 bdqn.com 区域中,除了 NS 记录以外,提供的解析记录还包括以下内容
网站服务器 www.bdqn.com,IP 地址为 173.16.16.1。
邮件服务器 mail.bdqn.com,IP 地址为 173.16.16.2。
在线培训服务器 study.bdqn.com,IP 地址为 173.16.16.3
5.参考上述各服务器的地址映射关系,为 173.16.16.0/24 网段提供反向解析。
6.设置 bdqn.com 域的泛域名解析,对应的 IP 地址为 173.16.16.1。
7.客户机将首选 DNS 服务器、备用 DNS 服务器分别设为 173.16.16.5 和 173.16.16.6, 使用其中的任何一个服务器,都能够正常查询 bdqn.com 区域中的主机地址
1、确认本机的网络地址、主机映射、默认DNS服务器地址
#DNS2的配置
[root@localhost ~]# hostnamectl set-hostname ns2.bdqn.com
[root@localhost ~]# bash
[root@ns2 ~]# vim /etc/hosts
192.168.10.101 ns1.bdqn.com ns1
192.168.10.102 ns2.bdqn.com ns2
#(2)安装bind服务
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
[root@localhost ~]# yum -y install bind bind-utils bind-libs bind-chroot
2、修改主配置文件
[root@ns1 ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
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";
allow-query { any; };
};
#zone "." IN {
# type hint;
# file "named.ca";
#};
view "LAN" {
match-clients { 192.168.10.0/24; };
zone "bt.com" IN {
type master;
file "lan.bt.com.zone";
};
};
view "WAN" {
match-clients { any; };
zone "bt.com" IN {
type master;
file "wan.bt.com.zone";
};
};
#include "/etc/named.rfc1912.zones";
#include "/etc/named.root.key";
内部区域文件设置
[root@ns1 ~]# cd /var/named/
[root@ns1 named]# vim lan.bt.com.zone
$TTL 1D
@ IN SOA bt.com. admin.bt.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1.bt.com.
ns1 IN A 192.168.10.101
www IN A 192.168.10.102
mail IN A 192.168.10.103
ftp IN A 192.168.10.104
外部区域文件设置
[root@ns1 named]# vim wan.bt.com.zone
$TTL 1D
@ IN SOA bt.com. admin.bt.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1.bt.com.
ns1 IN A 173.16.16.101
www IN A 173.16.16.102
mail IN A 173.16.16.103
ftp IN A 173.16.16.104
[root@ns1 named]# chown named lan.bt.com.zone wan.bt.com.zone
语法检测
[root@ns1 named]# named-checkconf -z /etc/named.conf
zone bt.com/IN: loaded serial 0
zone bt.com/IN: loaded serial 0
[root@ns1 named]# named-checkzone bt.com /var/named/lan.bt.com.zone
zone bt.com/IN: loaded serial 0
OK
[root@ns1 named]# named-checkzone bt.com /var/named/wan.bt.com.zone
zone bt.com/IN: loaded serial 0
OK
构建从域名服务器
确认本机的网络地址、主机映射、默认 DNS 服务器地址
建立主配置文件named.conf
[root@ns2~]# vi /etc/named.conf
options {
directory "/var/named";
};
zone "bdqn.com" IN {
type slave; //类型为从区域
masters { 173.16.16.5; }; //指定主服务器的 IP 地址
file "slaves/bdqn.com.zone"; //下载的区域文件保存到 slaves/目录
};
zone "16.16.173.in-addr.arpa" IN {
type slave;
masters { 173.16.16.5; };
file "slaves/173.16.16.arpa";
}
启动事务
[root@ns1 named]# systemctl start named
[root@ns1 named]# netstat -anptu | grep named
客户端验证
使用
nslookup
命令进行测试
1、外网客户端
[root@localhost ~]# yum -y install bind-utils
[root@localhost ~]# nslookup
> www.bt.com
Server: 173.16.16.1
Address: 173.16.16.1#53
Name: www.bt.com
Address: 173.16.16.101
2、内网客户端
[root@localhost ~]# yum -y install bind-utils
[root@localhost ~]# nslookup
> www.bt.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: www.bt.com
Address: 192.168.1.5
3、启动named服务,查看区域数据文件是否下载成功
[root@ns2 ~]# systemctl start named
[root@ns2 ~]# ll /var/named/slaves/
总用量 8
-rw-r--r--. 1 named named 544 7月 3 10:00 192.168.10.arpa
-rw-r--r--. 1 named named 488 7月 3 09:58 bdqn.com.zone
4、验证从域名服务器
将客户端的DNS服务器修改为192.168.10.102
[root@localhost ~]# nslookup www.bdqn.com
Server: 192.168.10.102
Address: 192.168.10.102#53
Name: www.bdqn.com
Address: 192.168.10.106
小阿轩yx-DNS域名解析服务