DNS域名解析服务
一.BIND域名服务基础
1.DNS系统的作用及类型
2.BIND的安装和配置文件
二.使用BIND构建域名服务器
1.构建缓存域名服务器
2.构建主 ·从域名服务器
一.BIND域名服务基础
1.DNS系统的作用及类型
1.1DNS系统的作用
正向解析:根据域名查找对应的IP地址
反面解析:根据IP地址查找对应的域名
DNS系统的分布式数据结构
DNS域名系统( Domain Name System缩写DNS, DomainName被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS使用的协议及端口号
DNS的默认端为53。DNS端口分为TCP和UDP。
一、TCP是用来做区域传送,多用于主从同步
在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息
二、UDP是用来做DNS解析的
域名:通常由一个完全合格域名(FQDN)标识。FQDN全称 Fully Qualified Domain Name,它能准确表示出其相于DNS域树根的位置,也就是节点到DNS树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS
域 google来说,其完全正式域名(FQDN)为google.com。
例如,google为com域的子域,其表示方法为 google.com.而www为 google域中的子域,可以使用www.google.com.表示。
注意:通常,FQDN有严格的命名限制,长度不能超过256字节,只允许使用字符a-z,0-9,A-2和减号(-)。点号(.)只允许在域名标志之间(例如” google.com")或者FQDN的结尾使用。域名不区分大小,由最顶层到下层,可以分成:根域、级域、二级域、子域。
即全域名:同时带有主机名和域名的名称
FQDN = Hostname + DomainName 如:www baidu.com.
注意:最前面的一定是主机,最后一个点表示根域,通常是省略不写的,但实际上www.abc.com=www.abc.com.
域名结构
http:// www.sina.com.cn./
http://主机名,子域,二级域,顶域 根域/
正向解析查询过程:
①先查本机的缓存记录
②查询hosts文件
③查询dns域名服务器,交给dns域名服务器处理
以上过程成为递归查询:我要一个答案你直接会给我结果
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
⑤求助根域服务器,根域服务器返回可能会知道结果的顶域服务器让他去找顶级域服务器
⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑦求助二级域服务器,二級域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
windows系统查询dns缓存命令: ipconfig/ displays
windows系统清理dns缓存命令: ipconfig/ flushes
linux清dns缓存需要安装nscd软件,启动、执行nscd -i hosts
两种查询方式
(1)递归查询
递归查询是一种DNS服务器的查询模式,在该模式下DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
总的一句话,就是客户机发送请求后自己只用等待结果即可,中间具体过程交给服务器实现。
(2)迭代查询
DNS服务器另外一种询方式为送代查询,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询的结果为止。
总的一句话,客户机的请求需要自己挨个去查询才能得到结果,服务器没有结果时候只会给你提供其它服务器的地址,而不会帮你去请求查询,这与递归截然相反。
总结:从递归和迭代查询可以看出:
客户端-本地DNS服务器:这部分属于递归查询。
本地DHS服务器---外网:这部分属于迭代查询
递归查询时,返回的结果只有两种:查询成功或查询失败
迭代查询又称作重指引,返回的是最佳的查询点或者主机地址。
DNS系统类型
主域名服务器
特定DNS区域的权威服务器,具有唯一性
负责维护该区域内所有域名->IP地址的映射记录
需要自行建立所负责区域的地址数据文件
从域名服务器
也称为辅助域名服务器,是对主域名服务器的热备份
其维护的域名->IP地址记录来源于主域名服务器
需要从主域名服务器自动同步区域地址数据库
缓存域名服务器
也称为DNS高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
DNS的分布式互联网解析库
大型、分布式的互联网DNS解析库
根.根域名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
IANA,互联网数字分配机构
- Internet Assigned Numbers Authority,
-整个域名系统的最高权威机构
-主管DNS根、.int、.arpa等国际化域名资源CNNIC,中国互联网络信息中心
- China lnternet Network Information Center
-主管国家顶级域.cn
域名代理/注册/购买服务商
-新网,http://www.xinnet.com
-万网,http://www.net.cn
-中国互联,http://hulian.top
中国数据
BIND软件安装
BIND
BIND是应用最广泛的DNS服务程序
官方站点:https://www.isc.org/
BIND的软件包如下
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 即可
BIND主配置文件named.conf
[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 {
listen-on port 53 { 192.168.10.17; }; 监听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”; 包含区域配置文件里的所有配置修改
(3)修改区域配置文件,添加正向区域配置
vim /etc/named. rfc1912. zones
文件里有模版,可复制粘贴后修改
zone“benet.com” IN {正向解析“benet.com”区域
type master;#类型为主区域
file "benet.com.zone"; 指定区域数据文件为benet.com.zone
allow-update { none; } ;
};
(4)配置正向区域数据文件
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
(5)启动服务,关闭防火墙
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
(6)在客户端的域名解析配置文件中添加DNS服务器地址
vi /etc/resolv .conf
修改完后立即生效
nameserver 192.168.80.10
或
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改完后需要重启网卡
DNS1=192.168.80.10
systemctl restart network
(7)测试DNS解析
host
www.benet.com
nslookup www.benet.com
ext file
lenath:11.599 lines:231
Ln:121 Co
反向解析
vim /etc/named.rfc1912.zones
192.168.10.0 反向则是 10.168.192
zone“10.168.192.in-addr.arpa” IN {
type master;
file“benet.com.zone.local”;
指定反向解析的数据文件,也可以跟正向解析的数据文件相同
allow-update{none;};
};
cd /var/named/
cp -p benet.com.zone benet.com.zone.local
$TTL 1D 有效解析记录的生存周期,默认单位为秒
@ IN SOA benet.com. admin.benet.com.(
SOA标记、域名和管理员邮箱,@变量表示域名
0 ; serial 更新序列号,10位以内数字,用于主从同步,主服务器这个数值要大于从服务器否则无法同步
1D ; refresh 刷新时间
1H ; retry 重试刷新时间间隔
1W ; expire 失效时间,超过该时间则放弃
3H ) ; minimum 无效解析记录的生存周期
NS benet.com.
A 192.168.10.20 20是192.168.10.20的意思
80 IN PTR www.benet.com.
81 IN PTR mail.benet.com. PTR反向指针 功能:反向解析
systemctl restart named rndc reload也可以重载配置文件
host 192.168.10.20 将会反向解析出域名www.benet.com
DNS主从服务器及自动同步
实验环境:
主服务器:192.168.100.80
从服务器:192.168.100.17
配置主服务器192.168.100.80
1.主配置文件
vim /etc/named.conf
listen-on port 53{} 中值为any
allow-query{}中值改为any
2.区域配置文件
vim /etc/named.rfc1912.zones
zone "benet.com" IN {
type master; 类型为主区域
file "benet.com.zone";
allow-transfer { 192.168.100.17; }; 设置从服务器地址
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "benet.com.zone.local";
allow-transfer{ 192.168.100.17; };
};
3.配置正向区域数据文件
cd /var/named
cp -p name.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.100.80 记录主机IP地址
IN MX 10 mail.benet.com. MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.100.80 记录正向解析www.benet.com对应的IP
mail IN A 192.168.100.81 MX为邮件交换记录,数字越大优先级低
ftp IN CNAME www CNAME使用别名,ftp 是www的别名
* IN A 192.168.100.200 泛域名解析,“*"代表任意主机名
配置从服务器192.168.100.17
yum install -y bind
vim /etc/named.conf
options {
listen-on port 53 { 192.168.100.17; }; 监听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 { any; }; 允许使用本DNS解析服务的网段,也可用any代表所有
}
修改从域名服务器区域配置文件,添加正、反区域配置
vim /etc/named.rfc1912.zone
zone "benet.com" IN {
type slave; 类型为从区域
file "slaves/benet.com.zone"; 下载的区域数据文件保存到slaves/目录下
masters { 192.168.100.80; }; 设置主服务器地址
};
zone "100.168.192.in-addr.arpa" IN {
type slave;
file "slaves/benet.com.zone.local";
masters { 192.168.100.80; };
主、从都重启动服务,并查看区域数据文件是否已下载成功
systemctl restart named
ls -1 /var/named/slaves/
在客户端的域名解析配置文件中添加从DNS服务器地址
echo "nameserver 192.168.100.17" >> /etc/ resolv.conf
测试
host 192.168.100.80
nslookup 192.168.100.17
停止主服务器的服务,模拟主服务器故障
DNS分离解析
实验环境:
主服务器:192.168.10.20 网卡vmnet2 192.168.20.21
Web服务器:192.168.10.21 网卡vmnet3 10.0.0.101
分离解析的域名服务器实际也是主域名服务器,这里主要是指根据不同的客户端提供不同的域名解析记录。比如来自内网
和外网的不同网段地址区域的客户机请求解析同一域名时,为其提供不同的解析结果,得到不同的IP地址。
注:DNS分离解析即将内外网的相同域名解析为不同的IP地址。现实网络中一些电商网站为了让用户有更好的体验效果解析速度更快,就把来自不同运营商的用户解析到相对应的服务器这样就大大提升了访问速度
配置网关服务器搭建DNS分离解析
在网关服务器搭建DNS分离解析,使局域网主机解析www.benet.com为192.168.10.20,外网主机解析www.benet.com
为10.0.0.100。
1.为网关服务器配置双网卡
在关机状态下再添加一-块网卡,重启系统
ens33 192.168.20.21
ifconfig ens37 10.0.0.1/24
ifconfig
2.安装bind软件包
yum install -y bind
3.修改主配置文件
vim /etc/named.conf
options {
listen-on port 53 { any; }; 监听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 { any; };允许使用本DNS解析服务的网段,也可用any代表所有
}
include "/etc/named. rfc1912. zones";
4.修改区域配置文件
vim /etc/named.rfc1912.zones
view "lan" { 定义内网view,view代表容器分割
match-clients { 192.168.80.0/24; } ; 匹配内网网段
zone "benet.com" IN { 设置要解析的区域
type master;
file "benet.com.zone.lan"; 数据配置文件
};
zone "." IN { 可将根域配置从主配置文件
type hint; hint是根区域类型
file "named.ca";
};
view "wan" { 定义外网view .
match-clients { any; } ; 匹配除了内网网段以外的任意地址
zone "benet.com" IN {
type master;
file "benet.com.zone.wan";
};
};
注意:一旦启用view,所有的zone必须都在view下,所以要把系统默认的自检用的zone也放在view下或者删55
修改区域数据配置文件
cd /var/named
cp -p named.localhost benet.com.zone.lan
cp -p named.localhost benet.com.zone.wan
vim benet.com.zone.lan
$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.20.80 记录主机IP地址
www IN A 192.168.20.80 记录正向解析www.benet.com对应的IP
vim benet.com.zone.wan
$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 10.0.0.1 记录主机IP地址
www IN A 10.0.0.100 记录正向解析www.benet.com对应的IP
启动服务
systemctl start named
在内、外网客户端的域名解析配置文件中添加DNS服务器地址
echo "nameserver 192.168.80.10" >> /etc/resolv.conf 内网客户端
echo "nameserver 10.0.0.1" >> /etc/resolv.conf 外网客户端
在内、外网客户端上测试
nslookup www.benet.com
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤