前言
- 域名系统(服务)协议(DNS)是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送。
- 域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
- 域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成,记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。
DNS系统的作用
DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或者反向的地址查询服务,及正向解析和反向解析
- 正向解析:根据主机名称(域名,如www.baidu.com)查找对应的IP地址
- 反向解析:(一般维护的时候使用)根据IP地址查找对应的主机域名
DNS系统的分布式数据结构
例:www.sina.com.cn
www 主机位
sina 二级域名
com.cn 顶级域名
. 根域名
DNS系统的类型
实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为“zone”(区域)。根据地址解析的方向不同,DNS区域相应地分为正向区域(包含域名到IP地址的解析记录,)和反向区域(包含IP地址到域名的解析记录)。
根据所管理的区域数据的来源不同,DNS系统可以分为不同的类型。在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。
- 常见的几种类型
-
缓存域名服务器
只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或者指定其他DNS服务器作为解析来源。 -
主域名服务器
维护某一个特定DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器,官方服务器。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。 -
从域名服务器
与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
-
BIND的安装文件
BIND不是唯一能够提供域名服务的DNS服务程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux/UNIX主机中
- 官方站点:https://www/isc/org/
- 可以直接使用yum install bind -y
[root@localhost ~]# rpm -qc bind '查看配置文件位置'
/etc/logrotate.d/named
/etc/named.conf '主配置文件‘
/etc/named.iscdlv.key
/etc/named.rfc1912.zones '区域配置文件‘
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost '区域数据配置文件'
/var/named/named.loopback
- 主配置文件
负责dns全局功能 例如:日志文件位置,访问权限等 - 区域配置文件
负责构建解析区域 例如:多域名解析
设置本服务器提供域名解析的特定DNS区域
包括域名、服务器角色、数据文件名等
使用zone “区域名” IN { … };的配置段 - 区域数据配置文件
负责管理主机解析记录 例如:解析映射
NS域名服务器(Name Server)记录
MX邮件交换(Mail Exchange)记录
A地址(Address) 记录,只用在正向解析区域中
CNAME别名(Canonical Name)记录
实验正向解析 邮件交换记录、别名解析、泛域名解析
[root@localhost ~]# setenforce 0 关闭防火墙
[root@localhost ~]# iptables -F 清除规则链中现有条目
[root@localhost ~]# yum install bind -y
[root@pan ~]# vim /etc/named.conf 改主配置文件
[root@pan ~]# vim /etc/named.rfc1912.zones 改区域配置文件
[root@pan ~]# cd /var/named/
[root@pan named]# cp -p named.localhost abc.com.zone 复制已有的区域数据文件模板 复制过来的名字要跟刚刚填的名字一样
[root@pan named]# vim abc.com.zone 进去修改
[root@pan named]# echo "nameserver 192.168.110.110" > /etc/resolv.conf 配置dns (自己本机IP)
[root@pan named]# host www.abc.com 解析网址
www.abc.com has address 192.168.110.10
开台win7测试(都是Vmnet1仅主机模式)
反向解析实验
[root@pan named]# vim /etc/named.rfc1912.zones
[root@pan named]# cp -p abc.com.zone abc.com.local
[root@pan named]# vim abc.com.local
[root@pan named]# systemctl restart named
[root@pan named]# host 192.168.110.10
10.110.168.192.in-addr.arpa domain name pointer www.abc.com.110.168.192.in-addr.arpa.
主从复制实验
重新开一台下载bind后绑在一虚拟网卡上
[root@localhost ~]# yum -y install bind
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# vin /etc/named.conf
[root@localhost ~]# vim /etc/named.rfc1912.zones
从服务器配置
主服务器配置
zone "abc.com" IN {
type master;
file "abc.com.zone";
allow-transfer { 这里是从服务器的IP地址; };
};
分离解析实验
- 外网跟内网访问同一个网址 解析的IP不一样
添加一块网卡
[root@pan ~]# cd /etc/sysconfig/network-scripts/
[root@pan network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@pan network-scripts]# vim ifcfg-ens33
[root@pan network-scripts]# vim ifcfg-ens36
[root@pan network-scripts]# systemctl restart network
[root@pan network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.110.1 netmask 255.255.255.0 broadcast 192.168.110.255
inet6 fe80::649:df95:3c83:ded1 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:33:30:14 txqueuelen 1000 (Ethernet)
RX packets 6120 bytes 3148491 (3.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3415 bytes 337102 (329.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 12.0.0.1 netmask 255.255.255.0 broadcast 12.0.0.255
inet6 fe80::2a28:77d1:8c9c:a39e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:33:30:1e txqueuelen 1000 (Ethernet)
RX packets 22 bytes 3313 (3.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 91 bytes 15546 (15.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
开一台win10 做内部访问
开一台win7做外部访问
主配置文件最下面剪切这五行
[root@pan ~]# vim /etc/named.conf
[root@pan ~]# vim /etc/named.rfc1912.zones
剩下的全部删除
[root@pan named]# cp -p named.localhost abc.com.nei
[root@pan named]# vim abc.com.nei
[root@pan named]# cp -p named.localhost abc.com.wai
[root@pan named]# vim abc.com.wai
[root@pan named]# systemctl restart named
win7
win10
实验总结
每次修改完后都要重启服务
如果出现以下提示就是配置文件错误检查清楚 比如各种标点符号网址后面的根‘.’ 括号{}
[root@pan named]# systemctl restart named
Job for named.service failed because the control process exited with error code. See "systemctl status named.service" and "journalctl -xe" for details.
[root@pan named]# systemctl reloadnamed 不中断服务重启某个服务