DNS域名解析
介绍:
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区
域名级别:https://baike.baidu.com/item/%E5%9F%9F%E5%90%8D%E7%BA%A7%E5%88%AB/15536218#2
DNS的作用及类型
DNS系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户出现提供正向或反向的地址查询服务,及正向解析与反向解析
正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址。
反向解析:根据IP地址查域名,即将指定的IP地址解析为相对应的域名。
DNS服务器分类:
(1)缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据
(2)主域名服务器:维护某一个特定DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器
(3)从域名服务器:与主域名服务器提供完全相同的DNS解析服务,通常用与DNS服务器的热备份。
Linux里提供DNS服务的软件BIND
环境描述:
CentOS 7 服务软件BIND
主域名解析服务器IP:192.168.234.20
从域名解析服务器IP:192.168.234.10
以上两台服务器均关闭selinux和防火墙
安装BIND
配置yum源
1 [Server] 2 name=okok 3 baseurl=file:///mnt/cdrom //本地安装指定光盘的本地位置 4 enable=1 5 gpgcheck=0
安装并使用rpm工具查看是否安装成功
[root@localhost ~]# yum -y install bind rpm查看 [root@localhost ~]# rpm -qa bind* bind-libs-lite-9.11.4-9.P2.el7.x86_64 bind-utils-9.11.4-9.P2.el7.x86_64 bind-libs-9.11.4-9.P2.el7.x86_64 bind-9.11.4-9.P2.el7.x86_64 bind-export-libs-9.11.4-9.P2.el7.x86_64 bind-license-9.11.4-9.P2.el7.noarch
bind安装完毕之后会自动添加一个名为named的服务,通过配置它来实现DNS解析
主配置文件/etc/named.conf
区域配置文件默认在/var/named下自行创建
编辑主配置文件vim /etc/named.conf
1.全局配置部分:
listen-on port 53 { 192.168.234.10; }; //本地监听地址和端口 #listen-on-v6 port 53 { ::1; }; //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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; //都允许谁通过我解析域名
区域配置部分:
zone "benet.com" IN { //正向“benet.com”区域 type master; //类型为主区域 file "benet.com.zone"; //区域数据文件为benet.com.zone allow-transfer { 192.168.234.20 }; //允许下载的从服务器地址(也可以写在全局配置里) }; zone "234.168.192.in-addr.arpa" IN { //反向192.168.234.0/24 区域(ip的网络位) type master; file "234.168.192.arpa"; //区域数据文件为234.168.192.arpa allow-transfer { 192.168.234.20 }; //允许下载的从服务器地址(也可以写在全局配置里) };
在修改完主配置文件后,可以使用下面的命令进行语法检查(没有语法错误,没有任何提示)
[root@localhost ~]# named-checkconf /etc/named.conf
2.区域数据配置文件
在/var/named下创建file后的同名文件
正向区域:
vim /var/named/benet.com.zone
$TTL 86400 //有效解析记录的生存周期 @ IN SOA benet.com. rooot.benet.com.( //SOA标记、域名、管理邮箱 9 ; //更新序列号,可以是10以内的整数 3H ; //刷新时间,重新下载地址数据的间隔 15M ; //重试时间,下载失败后的重试间隔 1W ; //失效时间,超过改时间仍无法下载则放弃 1D) ; //无效解析记录的生存周期 @ IN NS ns1.benet.com. //(Name Server,域名服务器);记录当前区域的DNS服务器的主机地址 IN NS ns2.benet.com. //(Name Server,域名服务器);记录从区域的DNS服务器的主机地址 IN MX 10 mail.benet.com. //MX(Mail Exchange,邮件交换);记录当前区域的邮件服务器的主机地址 ns1 IN A 192.168.234.20 //A(Address,地址)记录正向解析条目 ns2 IN A 192.168.234.10 www IN A 192.168.234.50 mail IN A 192.168.234.20 werfgkljfjg IN A 123.123.123.123 ftp IN CNAME werfgkljfjg //CNAME(Canonical Name,别名);记录一个正向解析条目的其他名称
使用下面的命令对区域数据文件进行语法检查,没有错误将给出OK的提示(正向区域里的IP如果和本机的IP没有在同一个网络位,那么就不能正确提供反向解析)
[root@localhost ~]# named-checkzone benet.com /var/named/benet.com.zone zone benet.com/IN: loaded serial 9 OK
反向区域:
vim /var/named/234.168.192.arpa
$TTL 86400 @ IN SOA benet.com. rooot.benet.com.( 11 ; 3H ; 15M ; 1W ; 1D) ; IN NS ns1.benet.com. IN NS ns2.benet.com. 20 IN PTR ns1.benet.com. 10 IN PTR ns2.benet.com. 50 IN PTR www.benet.com. 20 IN PTR mail.benet.com. 123 IN PTR werfgkljfjg.benet.com.
在反向区域数据文件中,不会用到A记录,而是使用PTR指针(Point)记录。
使用PTR记录时,第一列只需要指明对应IP的“主机地址”部分即可,如50或20等。系统在查找地址记录时会自动将当前反向区域的网络地址作为前缀。
例如:50 IN PTR www.benet.com. 表示IP地址为192.168.234.50的主机的域名是www.benet.com
验证:使用nslookup验证(使用Windows或Linux都行,不管用谁dns都得指向dns主机的IP(Linux /etc/resolv.conf 里添加 nameserver dnsIP))
[root@localhost ~]# nslookup www.benet.com Server: 192.168.234.20 Address: 192.168.234.20#53 Name: www.benet.com Address: 192.168.234.50 [root@localhost ~]# nslookup ftp.benet.com Server: 192.168.234.20 Address: 192.168.234.20#53 ftp.benet.com canonical name = werfgkljfjg.benet.com. Name: werfgkljfjg.benet.com Address: 123.123.123.123 [root@localhost ~]# nslookup 192.168.234.50 50.234.168.192.in-addr.arpa name = www.benet.com.
构建从域名服务器(192.168.234.10)
依托于上面的主域名服务器
新起一台机器安装上BIND软件
vim /etc/named.conf
全局配置: listen-on port 53 { 192.168.234.10; }; 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; }; 区域配置: zone "benet.com" IN { type slave; //类型为从区域 masters { 192.168.234.20; }; //指向主DNS服务器IP file "slaves/bdqn.com.zone"; //下载的区域文件保存到slaves/目录 }; zone "234.168.192.in-addr.arpa" IN { type slave; masters { 192.168.234.20; }; file "slaves/234.168.192.zone"; };
由于从服务器的区域数据文件是从服务器中下载而来,但要注意的是,named服务默认以名为“named”的用户身份运行,因此要确认named用户对存放目录有写入权限
[root@linux ~]# ls -lh /var/named/slaves/ 总用量 8.0K -rw-r--r-- 1 named named 491 4月 7 05:17 234.168.192.zone -rw-r--r-- 1 named named 498 4月 7 05:51 bdqn.com.zone
验证:把首选DNS指向从域名服务器,看效果
C:UsersBENET>nslookup 默认服务器: ns1.benet.com Address: 192.168.234.20 > quit C:UsersBENET>nslookup 默认服务器: ns2.benet.com Address: 192.168.234.10 > www.benet.com 服务器: ns2.benet.com Address: 192.168.234.10 名称: www.benet.com Address: 192.168.234.50 > 192.168.234.50 服务器: ns2.benet.com Address: 192.168.234.10 名称: www.benet.com Address: 192.168.234.50 >