域名系统(Domain Name System,简称为DNS)是互联网的一项服务。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
我们在访问网站的过程中,大部分时候用的都是网站的域名对网站进行访问,如"www.baidu.com、mail.163.com"等等,显然域名的形式比IP地址的形式来的更加直观,也更容易被人记住。
DNS系统在网络中的应用就是维护一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户提供正向或者反向的地址查询服务,也就是正向解析与反向解析。
在实际应用中常常使用递归和迭代相结合的方式,如下图客户机访问网站的过程。
BIND不是唯一能提供域名服务的DNS服务程序,但是他的应用最广泛。BIND可以运行在大多数Linux/UNIX主机中,官方站点为"https://www.isc.org/"。
我们使用yum命令安装BIND软件,会默认帮我们装一些依赖关系包。
其中:
共有三个配置文件,分别是主配置文件、区域配置文件、区域数据配置文件
主配置文件通常放在/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命令检测解析是否正确。
这时候我们可以用一台win10系统的虚拟机来检测域名解析,首先对win10系统进行简单配置。
将win10的DNS服务器地址改为20.0.0.27,绑定vm8网卡。
用nslookup命令测试域名解析是否成功。注意:win10主机的DNS服务器一定要配成做了named服务的IP地址,否则会出现报错。
我们重开一台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服务器进行本地检测