【Linux】-学习笔记08
第五章、DNS域名解析服务器
目录
1.简介
1.1DNS简介
DNS(Domain Name System)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分
布式数据库,能够使人更方便的访问互联网。
DNS使用的是53端口,
通常DNS是以UDP这个较快速的数据传输协议来查询的,但是没有查询到完整的信息时,就会再次以TCP这个协议来重新查询所以启动DNS时,会同时启动TCP以及UDP的port53。
1.2因特网的域名结构
- 由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(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,用于反向域名解析,因此称为反向域名。
1.3域名服务器的类型划分
根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和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的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
1.4DNS域名解析的过程
递归查询(左侧)
- 浏览器发起解析请求:用户在浏览器中输入网址(如www.bilibili.com),浏览器向本地 DNS 服务器发送解析请求。
- 本地 DNS 服务器发送解析请求:本地 DNS 服务器收到请求后,将请求转发给解析器 DNS 客户端。
- 解析器 DNS 客户端返回结果:解析器 DNS 客户端查询自己的缓存,如果有结果则直接返回 IP 地址给本地 DNS 服务器;如果没有,则进行下一步。
- 本地 DNS 服务器返回结果:本地 DNS 服务器将 IP 地址返回给浏览器,完成解析。
迭代查询(右侧)
- 浏览器发起解析请求:用户在浏览器中输入网址(如www.bilibili.com),浏览器向本地 DNS 服务器发送解析请求。
- 本地 DNS 服务器查询根域名服务器:本地 DNS 服务器向根域名服务器发送请求,询问.com 域名服务器的地址。
- 根域名服务器返回.com 域名服务器地址:根域名服务器返回.com 域名服务器的地址给本地 DNS 服务器。
- 本地 DNS 服务器查询.com 域名服务器:本地 DNS 服务器向.com 域名服务器发送请求,询问bilibili.com域名服务器的地址。
- .com 域名服务器返回bilibili.com域名服务器地址:.com 域名服务器返回bilibili.com域名服务器的地址给本地 DNS 服务器。
- 本地 DNS 服务器查询bilibili.com域名服务器:本地 DNS 服务器向bilibili.com域名服务器发送请求,询问www.bilibili.com的 IP 地址。
- bilibili.com域名服务器返回 IP 地址:bilibili.com域名服务器返回www.bilibili.com的 IP 地址给本地 DNS 服务器。
- 本地 DNS 服务器返回 IP 地址:本地 DNS 服务器将 IP 地址返回给浏览器,完成解析。
2.DNS服务器配置
2.1关于服务端
软件安装包 | bind |
服务名称 | named |
主配置文件 | /etc/named.conf |
数据目录 | /var/named |
端口 | tcp/53 udp/53 |
2.2DNS的安装与启用
下载并启动软件包
dnf install bind -y
systemctl enable --now named
修改配置文件
vim /etc/resolv.conf
这个文件用于配置 DNS(域名系统)客户端的设置。它主要指定了系统将用于域名解析的 DNS 服务器的 IP 地址。
此时dig www.baidu.com
设置vim /etc/named.conf
该文件用于配置 BIND DNS 服务器的全局参数、区域(zone)定义和访问控制等。它决定了 DNS 服务器如何运行和响应域名解析请求。
在本地所有网络接口上开启53端口
listen-on port 53 { any; };
允许查询A记录的客户端列表
allow-query { any; };
禁用dns检测使dns能够缓存外部信息到本机
dnssec-validation no;
高速缓存配置参数
forwarders {144.144.144.144;};
重启服务
systemctl restart named
dig百度
dig www.baidu.com
其他主机
3.DNS的正向解析
DNS正向解析的作用
当客户设定当前dns服务器为dns解析服务器时,正向解析即为客户提供A记录客户提供域名,dns服务器负责把域名解析成对应IP.
修改配置文件
vim /etc/named.rfc1912.zones
zone "timinglee.org" IN {
type master;
file "timinglee.org.zone";
allow-update { none; };
};
该文件主要用于配置 DNS 服务器所管理的域名区域。它定义了正向查找区域(将域名转换为 IP 地址)和反向查找区域(将 IP 地址转换为域名)。
zone "timinglee.org" IN
:定义了一个名为timinglee.org
的域名区域。type master
:表示该区域是主区域,即该 DNS 服务器是这个区域数据的权威来源。file "timinglee.org.zone"
:指定了该区域数据存储的文件路径。这个文件通常包含域名和对应的 IP 地址记录等信息。allow - update { none; }
:设置不允许动态更新这个区域的数据。
根据zones文件中的指定生成A记录文件
[root@localhost named]# cp -p named.localhost timinglee.org.zone
[root@localhost named]# vim timinglee.org.zone
在timinglee.org.zone
中修改如下内容
改为该内容(注意加点)
dig www.timinglee.org
在查询结果时会有几种反馈值
状态码 | 状态码含义 |
---|---|
NOERROR | 查询成功 |
REFUSED | 查询被拒绝 |
SERVFAIL | 查询失败 |
NXDOMAIN | 查询无此结果 |
邮件解析
在在timinglee.org.zone
中修改如下内容
测试
4.DNS的反向解析
DNS反向解析的作用
当客户设定当前dns服务器为dns解析服务器时,正向解析即为客户提供PRT记录
客户提供域名,dns服务器负责把域名解析成对应IP
修改配置文件
vim /etc/named.rfc1912.zones
zone "254.25.172.in-addr.arpa" IN {
type master;
file "172.25.254.ptr";
allow-update { none; };
};
zone "254.25.172.in - adr.arpa"
:定义了一个反向查找区域,对应 IP 地址段172.25.254.x
。type master
:同样表示这是主区域。file "
172.25.254.ptr
"
:指定了存储反向查找区域数据的文件。allow - update { none; }
:不允许动态更新。
进入/var/named
,进行如下操作
cd /var/named
[root@localhost named]# cp -p named.loopback 172.25.254.ptr
[root@localhost named]# vim 172.25.254.ptr
修改172.25.254.ptr
文件
重启服务,测试
5.DNS多向解析方案
我们可以在DNS中通过访问设置,让不同网段的服务器都解析到自己网段的相应地址
5.1配置实验环境
192.168.0.200
主机配置的网络
172.25.254.135
主机配置的网络
5.2实验内容
设置172.25.254.135的/etc/resolv.conf
dig www.timinglee.org
设置192.168.0.200的/etc/resolv.conf
dig www.timinglee.org
在172.25.254.135中
[root@localhost named]# cp -p timinglee.org.zone timinglee.org.192
vim timinglee.org.192
复制新的文件/etc/named.rfc1912.zones.192
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.192 -p
vim /etc/named.rfc1912.zones.192
修改该文件内容如下:
接着对vim /etc/named.conf
进行配置
注释在主配置文件中默认的zone语句块
/*
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
*/
添加view语句块来限制访问数据走向
view 192 {
match-clients {192.168.0.0/24;};
zone "." IN {
type hint;
file "named.ca";
};
#在这里表示只有源 IP 地址属于 192.168.0.0/24 这个网段的客户端请求才会应用这个视图下配置的域名 解析规则等相关设置。通过这样的配置,可以针对特定网段的客户端提供差异化的域名服务策略。
include "/etc/named.rfc1912.zones.192";
#通常这个文件会包含针对 192.168.0.0/24 网段客户端的特定域名区域(如正向解析区、反向解析区等) 配置信息,使得对于该网段客户端的域名解析行为可以按照这个包含文件里设定的规则来进行,实现了基于特 定网段的定制化域名服务配置。
};
view any {
match-clients {any;};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
};
如下图所示
实验内容配置完成
5.3测试
我们在172.25.254.135主机上测试
dig www.timinglee.org
在主机192.168.0.200中测试
dig www.timinglee.org
6.主从DNS服务器
为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中的一个就是主DNS服务器(Master name server),负责解析至少一个域。其他的是辅助(从)DNS服务器(Slave name server):负责解析至少一个域,是主DNS服务器的辅助。当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
6.1配置实验环境
在辅助DNS中操作:
首先安装dnf install bind -y
接着修改/etc/named.conf
listen-on port 53 { any; };
#外部网络中的客户端能够向该域名服务器发起域名解析请求
allow-query { any; };
#允许来自任何网络位置(IP 地址)的客户端向这个域名服务器进行 DNS 查询,也就是没有对查询请求的来源进行限制,只要能够与服务器建立网络连接并向端口 53 发送符合 DNS 协议的请求,服务器都会进行处理并尝试给出相应的域名解析结果。
dnssec-validation no;
#关闭域名系统安全扩展
接着修改vim /etc/named.rfc1912.zones
添加如下内容
zone "timinglee.org" IN {
type slave;
masters{ 192.168.0.100; };
file "slaves/timinglee.org.192";
};
修改/etc/resolv.conf
为如下内容
在主DNS中:
修改/etc/resolv.conf
为如下内容
6.2测试
两台测试主机
192.168.0.100
和192.168.0.200
在192.168.0.100
中
在192.168.0.200
中
但是此时数据不能同时同步
在主DNS中的vim /etc/named.rfc1912.zones.192
配置
添加语句
also-notify {192.168.0.200;};
#表示当主服务器上对应的 DNS 区域数据有更新时,除了按照正常流程通知相关从服务器外,还会主动向 IP 地址为 192.168.0.200 的服务器发送通知消息,告知其区域数据已经更新,
同时修改timinglee.org.192中的内容为
设置serial的值为1
1 ; serial
0 ; serial #serial(序列号)用于标识 DNS 区域数据的版本情况,每次对该区域的 DNS 记录有修改更新时,都应该递增这个序列号(常见的做法是以时间戳或者简单的递增数字来表示),以便辅助其他从服务器(Slave DNS Server)判断是否需要进行区域数据的更新同步,这里初始设置为 0,后续更新时要记得修改该值。 1D ; refresh #refresh(刷新时间)规定了从服务器向主服务器查询区域数据是否有更新的时间间隔,这里设置为 1 天,表示从服务器每隔 1 天会主动向主服务器询问该区域的数据是否有更新,若有更新就进行同步。 1H ; retry #retry(重试时间)指的是当从服务器向主服务器发起更新查询但没有得到响应时,再次尝试查询的时间间隔,这里设置为 1 小时,意味着从服务器在初次查询未成功后,会每隔 1 小时再次尝试向主服务器询问区域更新情况。 1W ; expire #expire(过期时间)确定了从服务器在多长时间内没有成功获取到主服务器的区域更新信息后,就认为该区域数据已经过期不可用,此处设置为 1 周(1 星期),也就是如果从服务器连续 1 周都没能从主服务器那里更新到数据,就会认为当前的区域数据失效,不再使用并等待后续能成功更新后再恢复使用。 3H ) ; minimum #minimum(最小 TTL)用于指定该区域内所有 DNS 记录在没有单独设置 $TTL 时的默认生存时间下限,这里设置为 3 小时,意味着即便某个 DNS 记录没有明确自己的 $TTL 值,它在缓存中的最短存活时间也会是 3 小时。
此时修改后的内容也同步到了另一台主机
原文地址:https://blog.csdn.net/sgdhshshhs/article/details/144298859
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!