Linux学习——4_DNS域名解析服务器
DNS域名解析服务器
DNS简介
DNS(Domain Name System)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。
DNS使用的是53端口,
通常DNS是以UDP这个较快速的数据传输协议来查询的,但是没有查询到完整的信息时,就会再次以TCP这个协议来重新查询所以启动DNS时,会同时启动TCP以及UDP的port53。
因特网的域名结构
由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。“域”(domain)是名字空间中一个可被管理的划分
国家顶级域名:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(country code top-level domains,cc表示国家代码contry-code)。
通用顶级域名:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
域名服务器的类型划分
根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。所以根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。需要注意的是,在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
现如今全球一共投放13个根服务器
根服务器主要用来管理互联网的主目录,全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。 这13台根服务器可以指挥Firefox或互联网 Explorer这样的Web浏览器和电子邮件程序控制互联网通信。换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了。
在与现有IPv4根服务器体系架构充分兼容基础上,由我国下一代互联网国家工程中心领衔发起的“雪人计划”于2016年在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6(互联网协议第六版)根服务器架设,事实上形成了13台原有根加25台IPv6根的新格局,为建立多边、民主、透明的国际互联网治理体系打下坚实基础。中国部署了其中的4台,由1台主根服务器和3台辅根服务器组成,打破了中国过去没有根服务器的困境。
顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
权限域名服务器:负责一个“区”的域名服务器。
本地域名服务器:本地域名服务器不属于域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
主从DNS服务器:为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中的一个就是主DNS服务器(Master name server),负责解析至少一个域。其他的是辅助(从)DNS服务器(Slave name server):负责解析至少一个域,是主DNS服务器的辅助。当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
DNS域名解析的过程
[root@localhost ~]# nslookup
> set type=ns
> .
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
. nameserver = i.root-servers.net.
. nameserver = k.root-servers.net.
. nameserver = m.root-servers.net.
. nameserver = a.root-servers.net.
. nameserver = h.root-servers.net.
. nameserver = g.root-servers.net.
. nameserver = d.root-servers.net.
. nameserver = b.root-servers.net.
. nameserver = f.root-servers.net.
. nameserver = e.root-servers.net.
. nameserver = j.root-servers.net.
. nameserver = c.root-servers.net.
. nameserver = l.root-servers.net.
Authoritative answers can be found from:
> set type=a
> b.root-servers.net.
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: b.root-servers.net
Address: 170.247.170.2
> server 170.247.170.2
Default server: 170.247.170.2
Address: 170.247.170.2#53
> set type=ns
> com.
Server: 170.247.170.2
Address: 170.247.170.2#53
Non-authoritative answer:
*** Can't find com.: No answer
Authoritative answers can be found from:
com nameserver = a.gtld-servers.net.
com nameserver = b.gtld-servers.net.
com nameserver = c.gtld-servers.net.
com nameserver = d.gtld-servers.net.
com nameserver = e.gtld-servers.net.
com nameserver = f.gtld-servers.net.
com nameserver = g.gtld-servers.net.
com nameserver = h.gtld-servers.net.
com nameserver = i.gtld-servers.net.
com nameserver = j.gtld-servers.net.
com nameserver = k.gtld-servers.net.
com nameserver = l.gtld-servers.net.
com nameserver = m.gtld-servers.net.
a.gtld-servers.net internet address = 192.5.6.30
a.gtld-servers.net has AAAA address 2001:503:a83e::2:30
b.gtld-servers.net internet address = 192.33.14.30
b.gtld-servers.net has AAAA address 2001:503:231d::2:30
c.gtld-servers.net internet address = 192.26.92.30
c.gtld-servers.net has AAAA address 2001:503:83eb::30
d.gtld-servers.net internet address = 192.31.80.30
d.gtld-servers.net has AAAA address 2001:500:856e::30
e.gtld-servers.net internet address = 192.12.94.30
e.gtld-servers.net has AAAA address 2001:502:1ca1::30
f.gtld-servers.net internet address = 192.35.51.30
f.gtld-servers.net has AAAA address 2001:503:d414::30
> server 192.5.6.30
Default server: 192.5.6.30
Address: 192.5.6.30#53
> set type=ns
> bilibili.com
Server: 192.5.6.30
Address: 192.5.6.30#53
Non-authoritative answer:
*** Can't find bilibili.com: No answer
Authoritative answers can be found from:
bilibili.com nameserver = ns3.dnsv5.com.
bilibili.com nameserver = ns4.dnsv5.com.
ns3.dnsv5.com internet address = 1.12.0.17
ns3.dnsv5.com internet address = 1.12.0.18
ns3.dnsv5.com internet address = 1.12.14.17
ns3.dnsv5.com internet address = 1.12.14.18
ns3.dnsv5.com internet address = 101.227.168.52
ns3.dnsv5.com internet address = 108.136.87.44
ns3.dnsv5.com internet address = 163.177.5.75
ns3.dnsv5.com internet address = 220.196.136.52
ns3.dnsv5.com has AAAA address 2402:4e00:1470:2::f
ns3.dnsv5.com internet address = 35.165.107.227
ns4.dnsv5.com internet address = 1.12.0.16
ns4.dnsv5.com internet address = 1.12.0.19
ns4.dnsv5.com internet address = 1.12.14.16
ns4.dnsv5.com internet address = 1.12.14.19
ns4.dnsv5.com internet address = 112.80.181.106
ns4.dnsv5.com internet address = 117.135.128.152
ns4.dnsv5.com internet address = 124.64.205.152
ns4.dnsv5.com internet address = 13.37.58.163
ns4.dnsv5.com has AAAA address 2402:4e00:111:fff::8
ns4.dnsv5.com internet address = 49.7.107.152
>
DNS服务器配置
关于服务端
软件安装包 | bind |
服务名称 | named |
主配置文件 | /etc/named.conf |
数据目录 | /var/named |
端口 | tcp/53 udp/53 |
DNS服务的安装于启用
安装
[root@localhost ~]# dnf install bind -y
启用
[root@localhost ~]# systemctl start named
开放服务
172.25.254.129
[root@localhost ~]# vim /etc/resolv.conf
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 172.25.254.129
172.25.254.133
[root@localhost ~]# vim /etc/resolv.conf
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 172.25.254.129
DNS企业级高级配置
高速缓存DNS
高速缓存dns是一个非权威的dns,在dns服务器中本身并没有数据
当客户需要解析域名时首先查询缓存中是否有数据,如果没有就会从指定的dns服务器中缓存
高速缓存dns可以大大节省内网在做地址解析上所需要花费的时间
高速缓存配置参数
[root@localhost ~]# vim /etc/named.conf
测试
DNS的正向解析
DNS正向解析作用
当客户设定当前dns服务器为dns解析服务器时,正向解析即为客户提供A记录
客户提供域名,dns服务器负责把域名解析成对应IP
实施方法
编写zones文件设定要维护的域
[root@localhost named]# vim /etc/named.rfc1912.zones
根据zones文件中指定生成A记录文件
[root@localhost named]# vim timinglee.org.zone
[root@localhost named]# cat timinglee.org.zone
$TTL 1D
@ IN SOA dns.timinglee.org. root.timinglee.org. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.timinglee.org.
dns A 172.25.254.129
www A 172.25.254.111
测试实验结果
[root@localhost named]# dig bbs.timinglee.org
[root@localhost named]# dig www.timinglee.org
当更改完毕DNS服务的配置文件后一定要重启服务后更改内容才能生效
重启服务的命令为:
systemctl restart namd
如果重启服务失败基本可以确定为配置文件的内容更改的有问题可以使用的查看命令为:
journalctl -xeu named.service
状态码 状态码含义 NOERROR 查询成功 REFUSED 查询被拒绝 SERVFAIL 查询失败 NXDOMAIN 查询无此结果
规范域名
[root@localhost ~]# vim /var/named/timinglee.org.zone
[root@localhost ~]# cat /var/named/timinglee.org.zone
$TTL 1D
@ IN SOA dns.timinglee.org. root.timinglee.org. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.timinglee.org.
dns A 172.25.254.129
www CNAME node1.a.timinglee.org.
node1.a A 172.25.254.111
node1.a A 172.25.254.222
[root@localhost ~]# systemctl restart named
测试
[root@localhost named]# dig www.timinglee.org
邮件解析记录
[root@localhost ~]# vim /var/named/timinglee.org.zone
[root@localhost ~]# cat /var/named/timinglee.org.zone
$TTL 1D
@ IN SOA dns.timinglee.org. root.timinglee.org. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.timinglee.org.
dns A 172.25.254.129
www CNAME node1.a.timinglee.org.
node1.a A 172.25.254.111
node1.a A 172.25.254.222
timinglee.org MX 1 172.25.254.129.
[root@localhost ~]# systemctl restart named
测试
[root@localhost named]# dig -t mx timinglee.org
DNS的反向解析
DNS反向解析的作用
当客户设定当前dns服务器为dns解析服务器时,正向解析即为客户提供PRT记录
客户提供域名,dns服务器负责把域名解析成对应IP
实施方法
1.编写zones文件设定要维护的域
[root@localhost ~]# vim /etc/named.rfc1912.zones
[root@localhost named]# vim 172.25.254.ptr
[root@localhost named]# pwd
/var/named
测试
[root@localhost named]# dig -x 172.25.254.111
DNS多向解析方案
配置实验环境
第一台虚拟机双网卡,网络适配器2仅主机模式
第二台虚拟机仅主机模式
实施方法
1.注释在主配置文件中默认的zone语句块
2.添加view语句来限制访问数据走向
view net-172 {
match-clients { 172.25.254.0/24; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
};
view net-192 {
match-clients { 192.168.0.0/24; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc192.zones";
};
主从DNS服务器
配置实验环境
新建一台主机作为辅助DNS主机,并配置好网络和软件仓库
在新建主机中安装DNS服务并保证服务可以被访问
对辅助DNS进行配置
[root@localhost ~]# vim /etc/named.conf
[root@localhost ~]# vim /etc/named.rfc1912.zones
启动服务并测试
[root@localhost ~]# systemctl restart named
[root@localhost ~]# dig -t A www.easylee.org @172.25.254.200
解决数据实时同步问题
主从dns经过上述设定后存在数据同步延迟,在主dns中更改数据后要等到下个同步周期的时间到来才能进行同步
1.在主dns中设置数据更改后主动通知对象
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "easylee.org" IN {
type master;
file "easylee.org.zone";
allow-update { none; };
also-notify { 172.25.254.200; };
};
更改A记录文件测试结果
[root@localhost ~]# vim /var/named/easylee.org.zone
$TTL 1D
@ IN SOA dns.easylee.org. root.easylee.org. (
2023032901 ;
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.easylee.org.
dns A 172.25.254.100
www CNAME node.a.easylee.org.
node.a A 172.25.254.200
node.a A 172.25.254.202
easylee.org. MX 5 172.25.254.111.