根域名服务器:最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。本地域名服务器要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。则根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。所以根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
在与现有IPv4根服务器体系架构充分兼容基础上,由我国下一代互联网国家工程中心领衔发起的“雪人计划”于2016年在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6(互联网协议第六版)根服务器架设,事实上形成了13台原有根加25台IPv6根的新格局,为建立多边、民主、透明的国际互联网治理体系打下坚实基础。中国部署了其中的4台,由1台主根服务器和3台辅根服务器组成,打破了中国过去没有根服务器的困境。
顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名
权限域名服务器:负责一个“区”的域名服务器
本地域名服务器:本地域名服务器不属于域名服务器的层次结构,当主机发出DNS查询时,这个查询报文就发送给本地域名服务器
为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,如:
[root@server ~]# yum install bind -y
/etc/named.conf : 主配置文件,共59行,去除注释和空行之和有效行数仅30行左右,用于设置bind服务程序的运行
/etc/named.rfc1912.zones : 区域配置文件(zone),用于保存域名和IP地址对应关系文件的所在位置,类似于图书目录,当需要修改域名与IP映射关系时需要在此文件中查找相关文件位置
[root@server ~]# vim /etc/named.conf
options { # 全局参数设置
listen-on port 53 { 127.0.0.1; }; # 重要,监听允许访问的ip与端口,可以使用IP地址、网段、所有主机(any)
listen-on-v6 port 53 { ::1; };# 重要,监听允许访问的ipV6与端口
directory "/var/named"; # DNS数据目录位置,默认即可
dump-file "/var/named/data/cache_dump.db"; # 默认缓存文件位置,默认即可
statistics-file "/var/named/data/named_stats.txt"; # DNS状态文件保存文件,默认即可
memstatistics-file "/var/named/data/named_mem_stats.txt"; # 内存状态文件保存文件,默认即可
secroots-file "/var/named/data/named.secroots"; # 安全根服务器保存位置,默认即可
recursing-file "/var/named/data/named.recursing"; # 递归查询文件保存位置,默认即可
allow-query { localhost; }; # 重要,表示允许那些客户端进行访问,可以书写IP地址、网段、所有主机(any)
recursion yes; # 重要,允许递归查询,若删除则为迭代查询
dnssec-validation yes; # 开启加密,默认即可
managed-keys-directory "/var/named/dynamic"; # 指定目录中文件保存位置,用于管理密钥(DNSSEC)
pid-file "/run/named/named.pid"; # pid文件保存路径,默认即可
session-keyfile "/run/named/session.key"; # 会话密钥存储路径,自动生成,默认即可
logging { # 指定日志记录的分类及其存储目录
channel default_debug { # 设置日志输出方式
file "data/named.run"; # 产生日志信息文件的位置
severity dynamic; # 日志级别
};
};
zone "." IN { # zone 表示区域, "." 表示根,此处设置DNS根服务器的相关内容
type hint; # 表示服务器的类型为根
file "named.ca"; # 用于保存dns根服务器信息的文件,存储路径/var/named/named.ca,一共有13台ipv4和13台ipv6根服务器信息
};
include "/etc/named.rfc1912.zones"; # 表示当前DNS服务器的区域配置文件位置
include "/etc/named.root.key"; # 密钥存储文件位置
zone "localhost.localdomain" IN { # 正向解析域名
type master; # 服务类型:master表示主服务器,slave表示从服务器,hint根服务器
file "named.localhost"; # 域名与IP地址规则文件存储位置
allow-update { none; }; # 允许那些客户端动态更新本机域名解析
};
# allow-update:允许更新解析库内容,一般关闭
# allow-query: 允许查询的主机,白名单
# allow-tranfter : 允许同步的主机,白名单,常用
# allow-recursion: 允许递归的主机
zone "1.0.0.127.in-addr.arpa" IN { # 表示127.0.0.1的反向解析配置,IP地址需要倒置书写,只需书写网段即可
type master;
file "named.loopback"; # 反向解析的规则文件保存位置
allow-update { none; };
};
[root@server ~]# vim /var/named/named.localhost
$TTL 1D # 设置生存周期时间,为1天,$表示宏定义
@ IN SOA @ rname.invalid. (
# @ :表示zone域,现在表示域名,如baidu.com
# IN SOA : 授权信息开始
# rname.invalid. : 域名管理员的邮箱(不能使用@,使用点替代邮件分隔符@)
1 ; serial # 序列号,10位以内的整数
1D ; refresh # 更新频率为1天
1H ; retry # 失败重试时间为1小时
1W ; expire # 失效时间1周
3H ) ; minimum # 缓存时间为3小时
IN NS ns.域名.
ns IN A 域名解析服务器IP地址
www IN A 域名解析服务器IP地址
bbs IN A 域名解析服务器IP地址
mail IN A 域名解析服务器IP地址
# A:表示IPv4地址, AAAA表示IPv6地址
[root@server ~]# vim /var/named/named.loopback
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.域名. # 域名服务器记录,注意结尾的点
ns IN A 域名解析服务器的IP地址
IP地址 PTR 域名. # PTR 指针记录,用于反向解析
服务端IP | 客户端IP | 网址 |
---|---|---|
192.168.13.134 | 192.168.13.135 | www.openlab.com |
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
# 服务端及客户端都设置静态IP地址
[root@server ~]# yum install bind -y
[root@server named]# vim /etc/named.conf
options {
listen-on port 53 { any ;};
……
allow-query { any ;};
[root@server ~]# vim /etc/named.rfc1912.zones
# 选择一个正向解析模版,进行修改,设置解析区域名及存储解析记录的数据文件名
zone "openlab.com" IN {
type master;
file "openlab.com.zone";
allow-update { none; };
};
[root@server ~]# cd /var/named
[root@server named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@server named]# cp -a named.localhost openlab.com.zone
[root@server named]# vim openlab.com.zone
# 修改如下
$TTL 1D
openlab.com. IN SOA ns.openlab.com. andy.qq.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
openlab.com. IN NS ns.openlab.com.
ns.openlab.com. IN A 192.168.13.134
www.openlab.com. IN A 192.168.13.134
bbs.openlab.com. IN A 192.168.13.134
ftp.openlab.com. IN A 192.168.13.134
www1.openlab.com. IN CNAME www.openlab.com.
[root@server named]# systemctl start named
[root@node1 ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection # 打开网卡配置文件
[ipv4]
address1=192.168.13.135/24,192.168.13.2
dns=192.168.13.134; # 修改dns值为服务端ip
method=manual
[root@node1 ~]# nmcli connection reload # 重载配置文件
[root@node1 ~]# nmcli connection up ens160 # 激活
[root@node1 ~]# nslookup # 进入交互模式进行测试
> www.openlab.com
Server: 192.168.13.134
Address: 192.168.13.134#53
Name: www.openlab.com
Address: 192.168.13.134
> ftp.openlab.com
Server: 192.168.13.134
Address: 192.168.13.134#53
Name: ftp.openlab.com
Address: 192.168.13.134
> www1.openlab.com
Server: 192.168.13.134
Address: 192.168.13.134#53
www1.openlab.com canonical name = www.openlab.com.
Name: www.openlab.com
Address: 192.168.13.134
> # ctrl+d退出
[root@node1 ~]# nslookup bbs.openlab.com # 命令模式
Server: 192.168.13.134
Address: 192.168.13.134#53
Name: bbs.openlab.com
Address: 192.168.13.134
# 或者使用下列方法测试
[root@node1 ~]# host www.openlab.com
[root@node1 ~]# dig @192.168.13.134 www.openlab.com
[root@server named]# vim openlab.com.zone
$TTL 1D
@ IN SOA ns.openlab.com. admin.openlab.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.openlab.com.
ns IN A 192.168.48.130
www IN A 192.168.48.130
ftp IN A 192.168.48.130
bbs IN A 192.168.48.130
www1 IN CNAME www
服务端IP | 客户端IP | 网址 |
---|---|---|
192.168.13.134 | 192.168.13.135 | www.openlab.com |
[root@server ~]# vim /etc/named.rfc1912.zones
zone "13.168.192.in-addr.arpa" IN { # 区域名使用倒置的网段号+.in-addr.arpa组成
type master;
file "192.168.13.arpa"; # 数据配置文件名使用网段号+.arpa组成
allow-update { none; };
};
[root@server ~]# cd /var/named/
[root@server named]# cp -a named.loopback 192.168.13.arpa
[root@server named]# vim 192.168.13.arpa
$TTL 1D
@ IN SOA ns.openlab.com. zy.qq.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.openlab.com.
134 IN PTR ns.openlab.com.
134 IN PTR www.openlab.com.
134 IN PTR bbs.openlab.com.
134 IN PTR ftp.openlab.com.
[root@server named]# systemctl restart named
[root@node1 ~]# nslookup
> www.openlab.com
Server: 192.168.13.134
Address: 192.168.13.134#53
Name: www.openlab.com
Address: 192.168.13.134
> 192.168.13.134
134.13.168.192.in-addr.arpa name = ftp.openlab.com.
134.13.168.192.in-addr.arpa name = ns.openlab.com.
134.13.168.192.in-addr.arpa name = www.openlab.com.
134.13.168.192.in-addr.arpa name = bbs.openlab.com.
> # ctrl+d退出
设备 | IP | 系统 |
---|---|---|
主服务器 | 192.168.13.134 | RHEL9.1 |
从服务器 | 192.168.13.135 | RHEL9.1 |
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0
[root@node1 ~]# systemctl stop firewalld
# 服务端及客户端都设置静态IP地址
[root@server ~]# yum install bind -y
[root@node1 ~]# yum install bind -y
[root@server ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.13.134; }; # 可以该为本机IP或any
……
allow-query { any; };
[root@server ~]# vim /etc/named.rfc1912.zones
zone "openlab.com" IN {
type master;
file "openlab.com.zone";
allow-transfer { 192.168.13.135; };
};
# 重点:改为同步模式,格式为allow-transfer { 从服务器的IP地址; };
[root@server ~]# cd /var/named/
[root@server named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@server named]# cp -a named.localhost openlab.com.zone
[root@server named]# vim openlab.com.zone
$TTL 1D
openlab.com. IN SOA ns.openlab.com. zy.qq.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
openlab.com. IN NS ns.openlab.com.
openlab.com. IN NS slave.openlab.com. # 增减从
ns.openlab.com. IN A 192.168.13.134
slave.openlab.com. IN A 192.168.13.135 # 增加从
www.openlab.com. IN A 192.168.13.134
ftp.openlab.com. IN A 192.168.13.134
bbs.openlab.com. IN A 192.168.13.134
[root@server named]# systemctl start named
[root@node1 ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.13.135; };
……
allow-query { any; };
zone "openlab.com" IN {
type slave; # 服务类型变更为从
masters { 192.168.13.134; }; # 设置主服务器的IP地址
file "slaves/openlab.com.zone"; # 从服务器的数据配置文件存储位置必须为slaves目录下
};
[root@node1 named]# cd slaves/
[root@node1 slaves]# ls # 重启前为空目录
[root@node1 slaves]# systemctl start named
[root@node1 slaves]# ls
openlab.com.zone # 拉取数据
[root@node2 ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection # 设置dns为192.168.48.131
[root@node2 ~]# nmcli connection reload
[root@node2 ~]# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@node2 ~]# nslookup www.openlab.com
Server: 192.168.13.135
Address: 192.168.13.135#53
Name: www.openlab.com
Address: 192.168.13.134
[root@server named]# vim /var/named/openlab.com.zone
$TTL 1D
openlab.com. IN SOA ns.openlab.com. alice.126.com. (
1 ; serial # 修改
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
openlab.com. IN NS ns.openlab.com.
openlab.com. IN NS slave.openlab.com.
openlab.com. IN MX 8 mail.openlab.com. # 增加
ns.openlab.com. IN A 192.168.13.134
slave.openlab.com. IN A 192.168.13.135
mail.openlab.com. IN A 192.168.13.134 # 增加
www.openlab.com. IN A 192.168.13.134
ftp.openlab.com. IN A 192.168.13.134
bbs.openlab.com. IN A 192.168.13.134
www1.openlab.com. IN CNAME www.openlab.com. # 增加
# 注意:1 ; serial中序号修改为1,否则从服务器不会更新数据
[root@server named]# systemctl restart named
[root@node1 slaves]# systemctl restart named
[root@node2 ~]# nslookup mail.openlab.com
Server: 192.168.13.135
Address: 192.168.13.135#53
Name: mail.openlab.com
Address: 192.168.13.134
[root@node2 ~]# nslookup www1.openlab.com
Server: 192.168.13.135
Address: 192.168.13.135#53
www1.openlab.com canonical name = www.openlab.com.
Name: www.openlab.com
Address: 192.168.13.134
服务端IP | 客户端IP | 网址 |
---|---|---|
192.168.13.134 | 192.168.13.135 | www.openlab.com |
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
[root@server ~]# yum install bind -y
[root@server named]# vim /etc/named.conf
[root@server ~]# vim /etc/named.rfc1912.zones
[root@server ~]# cd /var/named
[root@server named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@server named]# cp -a named.localhost openlab.com.zone # 复制模板进行编辑
[root@server named]# vim openlab.com.zone
[root@server named]# systemctl start named
[root@node1 ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection # 打开并编辑网卡配置文件
[root@node1 ~]# nmcli connection reload # 重载配置文件
[root@node1 ~]# nmcli connection up ens160 # 激活
[root@node1 ~]# nslookup
> www.openlab.com
Server: 192.168.13.134
Address: 192.168.13.134#53
Name: www.openlab.com
Address: 192.168.13.134
> ftp.openlab.com
Server: 192.168.13.134
Address: 192.168.13.134#53
Name: ftp.openlab.com
Address: 192.168.13.134
> www1.openlab.com
Server: 192.168.13.134
Address: 192.168.13.134#53
www1.openlab.com canonical name = www.openlab.com.
Name: www.openlab.com
Address: 192.168.13.134
服务端IP | 客户端IP | 网址 |
---|---|---|
192.168.13.134 | 192.168.13.135 | www.openlab.com |
[root@server ~]# vim /etc/named.rfc1912.zones
[root@server ~]# cd /var/named/
[root@server named]# cp -a named.loopback 192.168.13.arpa # 复制模板
[root@server named]# vim 192.168.13.arpa
[root@server named]# systemctl restart named
[root@node1 ~]# nslookup
> www.openlab.com
Server: 192.168.13.134
Address: 192.168.13.134#53
Name: www.openlab.com
Address: 192.168.13.134
> 192.168.13.134
134.13.168.192.in-addr.arpa name = ftp.openlab.com.
134.13.168.192.in-addr.arpa name = ns.openlab.com.
134.13.168.192.in-addr.arpa name = www.openlab.com.
134.13.168.192.in-addr.arpa name = bbs.openlab.com.
> # ctrl+d退出