文章目录
一、DNS域名服务器
1.1 DNS系统的作用
域名系统(Domain Name System,简称为DNS)是互联网的一项服务。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
我们在访问网站的过程中,大部分时候用的都是网站的域名对网站进行访问,如"www.baidu.com、mail.163.com"等等,显然域名的形式比IP地址的形式来的更加直观,也更容易被人记住。
DNS系统在网络中的应用就是维护一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户提供正向或者反向的地址查询服务,也就是正向解析与反向解析。
- 正向解析:根据域名查IP
- 反向解析:根据IP查域名
1.2 DNS域名的类型
按域名级别分:
- 根域名服务器:根域名服务器是架构因特网所必须的基础设施,主要用来管理互联网的主目录
- 顶级域名服务器:管理该顶级域名服务器注册的所有二级域名
- 权限域名服务器:负责一个区的域名服务器
- 本地域名服务器(缓存服务器):当一个主机发出DNS请求时,这个查询请求报文就发给本地域名服务器
按管理区域地址数据来源分:
- 主域名服务器:负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。
- 辅助域名服务器:当主域名服务器出现故障、关闭或负载过重时,辅助域名服务器作为主域名服务器的备份提供域名解析服务。通常用于DNS主域名服务器的热备份。辅助域名服务器中的区域文件中的数据是从另外的一台主域名服务器中复制过来的,是不可以修改的。
- 缓存域名服务器(本地域名服务器):从某个远程服务器取得每次域名服务器的查询回答,一旦取得一个答案就将它放在高速缓存中,以后查询相同的信息就用高速缓存中的数据回答,缓存域名服务器不是权威的域名服务器,因为它提供的信息都是间接信息。
- 转发域名服务器:负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。
1.3 DNS查询
- 递归查询:当我们的主机从本地域名服务器(缓存服务器)中查不到需要的IP地址时,就会向根域名服务器发出请求报文,从高到低一级一级的向下查询,直到查询到所需的域名地址。
- 迭代查询:当我们的主机从本地域名服务器(缓存域名服务器)中查不到需要的IP地址时,由本地服务器先向根域名服务器询问,然后根域名服务器向本地服务器返还一个信息,如果没有,再由本地服务器向顶级域名服务器发出查询报文,逐次查询。
在实际应用中常常使用递归和迭代相结合的方式,如下图客户机访问网站的过程。
二、 BIND软件
BIND不是唯一能提供域名服务的DNS服务程序,但是他的应用最广泛。BIND可以运行在大多数Linux/UNIX主机中,官方站点为"https://www.isc.org/"。
2.1 安装BIND软件
我们使用yum命令安装BIND软件,会默认帮我们装一些依赖关系包。
其中:
- bind提供了域名服务的主要程序及相关文件
- bind-utils提供了对DNS的测试工具,如nslookup、host等
- bind-libs提供了bind、bind-utils所需的函数库
- bind-chroot为BIND服务提供了一个伪装的根目录(将/var/named/chroot文件夹作为BIND的根目录),提高了安全性。
2.2 BIND服务的配置文件
共有三个配置文件,分别是主配置文件、区域配置文件、区域数据配置文件
2.2.1 主配置文件
主配置文件通常放在/etc/named.conf文件中,在主配置文件中主要包含全局配置和区域配置,每一条配置记录以";“结尾,”#“号和”//"表示注释。
1. 全局配置部分
全局配置文件中需要注意的参数
options {
listen-on port 53 { any; }; //监听地址和端口,any代表所有
listen-on-v6 port 53 { ::1; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //允许使用本DNS服务的网段,any表示所有
......
......
......
zone "." IN {
type hint;
file "named.ca"; //指出根域的目录,如果解析不到可以往根域查找
};
include "/etc/named.rfc1912.zones"; //包含区域配置文件的目录,指向区域配置文件
include "/etc/named.root.key";
2. 区域配置文件
区域配置文件中需要注意的参数
zone "localhost" IN { //localhost代表着我们需要被解析的域名
type master; //代表这台服务器是主域名服务器
file "named.localhost"; //“”里面写入区域数据配置文件名,一般是我们根据需要被解析的域名加上.zone的后缀
allow-update { none; }; //允许更新,一般是关闭
};
3. 区域数据配置文件
当我们安装好BIND服务后,会默认创建一个区域数据配置文件在
/var/named/named.localhost中。一般我们会根据需要被解析的域名新建一个文件,以"njit.com.zone"为例。
区域数据配置文件需要注意的点
cp -p /var/named/named.localhost /var/named/njit.com.zone //复制一定要带源属性复制,否则权限不够会无法打开这个文件
vi njit.com.zone //进入配置文件
$TTL 1D //有效解析记录的生存周期
@ IN SOA @ admin.njit.com. ( //这里的@表示一个变量,就是在区域配置文件中zone后面“”中的内容。admin.njit.com.是管理员邮箱
0 ; serial //更新序列号
1D ; refresh //刷新时间
1H ; retry //重试延时
1W ; expire //失效时间
3H ) ; minimum //无效解析记录生存周期
NS @ //NS表示当前域名服务器的IP地址
IN MX5 mail.njit.com //记录当前邮件交换服务器的主机地址,优先级为5,数值越打越优先
A 127.0.0.1 //A代表记录正向解析条目
www IN A 20.0.0.37 //表示www.njit.com对应的IP地址是20.0.0.37
mail IN A 192.168.100.10 //表示mail.njit.com对应的IP地址是192.168.100.10
ftp IN CNAME www //表示ftp.njit.com是www.njit.com的别名
三、 构建缓存域名服务器实验(正向解析)
实验过程
使用命令" yum -y install bind"安装bind软件
用"rpm -qc bind"查看配置文件
在修改配置文件之前,我们要先关闭核心防护、清空防火墙规则。
我们使用命令"vi /etc/named.conf "进入主配置文件,改部分参数,改为any的意思是所有的用户都可以进行域名解析。
我们进入区域数据配置文件,可以看到13个根域名服务器及其所对应的IP地址。
我们再进入区域配置文件更改配置信息
我们将原来的区域数据配置文件带源属性复制并改名为我们刚刚写在区域配置文件中的njit.com.zone.
注意:这里一定要带源属性复制,因为原来的文件属主为root,属组为named,如果不带源属性复制,会导致权限不够,无法打开。
进入区域数据配置文件,写入部分配置
我们使用命令"echo “nameserver 20.0.0.27” > /etc/resolv.conf"将20.0.0.27作为域名服务器写进DNS的配置文件中。并用host命令检测解析是否正确。
验证过程
1 .win10系统验证
这时候我们可以用一台win10系统的虚拟机来检测域名解析,首先对win10系统进行简单配置。
将win10的DNS服务器地址改为20.0.0.27,绑定vm8网卡。
用nslookup命令测试域名解析是否成功。注意:win10主机的DNS服务器一定要配成做了named服务的IP地址,否则会出现报错。
2.用apache验证
我们重开一台centos虚拟机,绑定vm8网卡。并用"yum install httpd -y"命令安装apache服务,关闭核心防护、清空防火墙规则并开启httpd服务。
我们手动写一个html文件,文件内容是“奥力给”,新建完成后重启http服务。
然后我们进入新的centos虚拟机修改网卡配置文件,将IP地址改为之前的解析的IP地址20.0.0.37,并重启网络服务。
我们进入到win10,打开浏览器访问"www.njit.com",就可以看到我们之前创建的html文件了。
四、 邮件交换记录、别名解析、泛域名解析配置
首先我们先使用命令"yum install bind -y"安装BIND软件,然后我们从三个配置文件入手,分别更改三个配置文件,最后进行验证。
主配置文件
vi /etc/named.conf //进入编辑主配置文件
options {
listen-on port 53 { any; }; //改为监听所有网段
listen-on-v6 port 53 { ::1; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //改为任何网段都可以使用此DNS服务
区域配置文件
vi /etc/named.rfc1912.zones //进入区域配置文件,将以下的内容写进去,配置文件中又模板,可以复制粘贴后修改
zone "njit.com" IN { //将我们需要被解析的域名写进去
type master;x
file "njit.com.zone"; //设置我们需要被解析域名的区域数据配置文件
allow-update { none; };
};
区域数据配置文件
cp -p /var/named/named.localhost /var/named/njit.com.zone //带源属性复制,并命令为njit.com.zone
cd /var/named/ //进入到这个目录下
vi njit.com.zone //进入修改区域数据配置文件
$TTL 1D
@ IN SOA njit.com admin.njit.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS njit.com.
A 127.0.0.1
IN MX 10 mail.njit.com. //邮件交换记录
mail IN A 192.168.100.55
www IN A 192.168.100.66 //A地址
ftp IN A 192.168.100.77 //A地址
smtp IN CNAME www //别名解析
* IN A 7.7.7.7 //泛域名解析
这时候配置文件更好完毕,我们进入测试
首先关闭核心防护、清空防火墙规则并开启named服务。
将自己的主机作为DNS服务器进行本地检测