1.介绍(是什么)
DNS(Domain Name System),即域名系统,是一个将域名和 IP 地址相互映射的分布式数据库,它可以将用户输入的域名转换成对应的 IP 地址。DNS 由多个服务器组成,分为多个层级,每一层级负责管理一部分域名和对应的 IP 地址。
当用户在浏览器中输入一个域名时,浏览器会首先查询本地的 DNS 缓存,如果缓存中有对应的 IP 地址,则直接使用缓存中的地址。如果缓存中没有,则向本地 DNS 服务器发送查询请求,本地 DNS 服务器会向根域名服务器发起查询请求,根域名服务器返回对应的顶级域名服务器地址,本地 DNS 服务器再向顶级域名服务器发送查询请求,顶级域名服务器再返回下一级域名服务器地址,直到找到对应的 IP 地址。
DNS 的作用非常重要,它不仅可以提高用户体验,还可以防止域名劫持和网络攻击等问题。
2.为什么要搭载dns服务器(意义)
1:局域网的内部解析,可以使在同一个局域网的设备,通过自定义的域名之间访问,减少了IP裸露,不仅提高了网络的安全性,更加提高了易用性;
2:域名的注册和管理,如果你是一个上市企业,你希望自己提高线上的知名度,有一个属于自己的域名也是比较重要的,所以你需要一台dns服务器帮助你进行域名解析,因为你总不能让他们都去输入32位2进制的iPv4地址吧
3.隐藏内部拓扑结构,在企业内部,往往很惧怕黑客的攻击,这时候可以通过内部的dns服务器来管理内部域名安全和拓扑结构安全
分布式数据库
分布式数据库是指将数据分散的存储在多台计算机上的数据库系统,dns服务器同样可以采用分布式的逻辑进行存储
DNS 通常由多个服务器组成,分为多个层级,每一层级负责管理一部分域名和对应的 IP 地址。
每一个上层的dns服务器都记载了下一级域名的所有信息,三层服务器通常情况如下(这里我们用www.baidu.com举例)
1.根域名:根域名服务器是整个 DNS 层级结构的最高层,它存储了整个 DNS 系统中所有顶级域名服务器的信息,它们的作用是将请求转发到下一级的顶级域名服务器。在这台服务器上,将会对com进行解析:
2.顶级域名:顶级域名位于根服务器的下一级,它同样存储了该顶级域名下的所有二级域名的 DNS 信息,包括该顶级域名下的权威域名服务器列表 一般来讲,顶级域名代表着国家级 例如 cn之类的 在这里 将会对Baidu进行解析:
3.权威域名:权威域名位于根域名下一级,它存储了每个域名的 IP 地址和其他 DNS 记录信息。当用户向 DNS 服务器查询某个域名的 IP 地址时,DNS 服务器会向该域名对应的权威域名服务器发出查询请求,并返回该域名的 IP 地址给用户。这里会对www进行解析
3:dns服务器
yum install bind* //下载相关服务
systemctl enble named // 启动bind服务
rpm -qc bind 查看bind相关的运行文件
在bind相关文件中,必须要对上述标红的文件进行编辑
(1):打开编辑主文件vim /etc/named.conf
这个文件是bind服务中最主要的部分之一 ,包括但不限于定义域名解析区域、设置DNS转发、限制DNS服务器访问等等,这里我们将允许监听 允许访问都改为any
options {
listen-on port 53 { any; };
// 允许监听23端口的主机
listen-on-v6 port 53 { ::1; };
// 允许监听53端口的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";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { any; };
// 允许发送dns请求的主机
include "/etc/named.zones";
//定义了 DNS 区域和相关的 DNS 记录,以及对应的 DNS 服务器 IP 地址的配置文件指向
(2)对区域配置文件进行编辑/etc/named.rfc1912.zones
/etc/named.rfc1912.zones 这个文件是bind给的一份格式,在我们创建自己的域名时,可以将他复制过来
cd /etc
cp -p /etc/named.rfc1912.zones named.zones
// 这里加p命令是为了将文件的所属组以及权限的相关内容完整的复制过来
正向解析文件
zone "baidu.com" IN {
type master;
file "/var/named/named.baidu.com"; //文件地址
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.1.zone"; //文件地址
allow-update { none; };
};
我们可以先复制一份样例,我们只负责修改就好
3:针对于file的正向解析文件,以及反向解析文件进行编辑
cd /var/named/
cp -p named.localhost named.baidu.com 复制样例文件
vim name.baidu.com 添加以下内容
chmod 777 named.baidu.com
$TTL 1D
@ IN SOA @ root.baidu.com. (
1997022700 ; serial
28800 ; refresh 刷新时间
14400 ; retry 重试时间
3600000 ; expire 过期时间
86400 ) ; minimum 最小的生存时间ttl
@ IN NS dns.baidu.com.
@ IN MX 10 mail.baidu.com.
dns IN A 192.168.10.1
mail IN A 192.168.10.254
www IN A 192.168.10.253
cp -p named.loopback named.192.168.1.zone //复制样例文件
vi named.192.168.1.zone 添加添加以下内容
chmod 777 named.192.168.1.zone
$TTL 1D
@ IN SOA @ root.baidu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.baidu.com.
@ IN NS mail.baidu.com.
1 IN PTR dns.baidu.com.
254 IN PTR mail.baidu.com.
253 IN PTR www.baidu.com.
防火墙放行
sudo firewall-cmd --zone=public --add-port=53/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list 放行53端口
or
systemctl stop firewalled //关闭防火墙
systemctl restart named ; systemctl enable named //重启/启动 bind服务,如果没报错的话,基本是没什么大问题的
最后 /etc/resolv.conf
这个文件给我的感觉有点类似于是win中的dns本地缓存,在你申请解析的时候。一定会优先向这个文件访问
# Generated by NetworkManager
nameserver 192.168.10.2 //域名地址
nameserver 192.168.10.1
search www.baidu.com //域名
nameserver 192.168.10.31
bind查询工具
测试BIND最常用的命令是nslookup。nslookup命令可以用来查询DNS域名解析是否正常,以及查询特定主机名对应的IP地址。在使用nslookup命令时,需要指定要查询的主机名或IP地址,如“nslookup www.baidu.com”或“nslookup 8.8.8.8”等。此外,nslookup还可以用来查询MX记录、CNAME记录、PTR记录等。
命令nsloop
nslookup
> www.baidu.com
Server: 192.168.10.1
Address: 192.168.10.1#53
Name: www.baidu.com
Address: 192.168.10.253