文章目录
- 一、DNS
- 1.1 DNS概述
- 1.2 DNS的通俗解释
- 1.3 域名的体系结构
- 1.4 DNS解析的参数
- 1.5 DNS域名解析的过程
- 二、如何实现DNS(内网)
- 2.1 DNS正向解析
- 2.2 DNS反向解析
- 2.3 主从DNS
一、DNS
1.1 DNS概述
DNS :Domain Name System,是域名系统的简称,是域名和IP地址之间的映射关系。
互联网中,IP地址是通信的唯一标识,逻辑地址。
访问网站、域名,IP地址不好记,域名通常朗朗上口,好记。域名解析应运而生,实现访问域名就能访问对应的IP地址。
访问域名的时候,通过DNS解析,把域名映射的IP地址解析出来,然后实际访问的还是域名映射的IP地址。
1.2 DNS的通俗解释
以访问www.baidu.com
为例
访问baidu,就是计算机向DNS服务器发起查询请求,DNS搜索自己的数据库,找到域名和IP的映射关系,然后把IP地址返回给计算机,计算机访问的还是域名对应的IP地址。
国内的DNS服务器都是三大运营商的DNS服务器。
1.3 域名的体系结构
- 以
www.baidu.com.cn.
为例:从右向左 .
:根域,根域名DNS服务器,专门负责解析根域cn.
:一级域,一般是国家或者地区的名称com.
:二级域,组织名称:com商业组织,edu教育机构,org非盈利组织,net运营商,gov政府机构baidu.
:三级域,域名,要花钱买www.
:主机名,也称子域名,就是一台具体的计算机
1.4 DNS解析的参数
- 协议:TCP和UDP协议
- 端口:53
- TCP的53端口用于连接DNS服务
- UDP的53端口用于解析DNS
DNS域名的长度限制
每一级的域名长度限制是63个字符,域名的总长度不能超过253个字符
1.5 DNS域名解析的过程
迭代:从根域到一级域到二级域的过程叫迭代
递归:结果返回给用户的过程是递归
DNS解析的优先级
- hosts :本地文件,优先级最高。只对当前主机有效,可以提高访问速度。Linux系统的hosts文件在
/etc/hosts
。 - DNS服务器(运营商),优先级第二。
二、如何实现DNS(内网)
bind
:用来做局域网内部的域名解析。
Linux系统中,bind
对应的服务名是named
。
内网的DNS不需要注册。
2.1 DNS正向解析
要求:主机test1
,IP地址 20.0.0.10
作为DNS域名服务器,实现正向解析。
实现:
- 首先安装bind服务,关闭防火墙、安全机制
yum -y install bind
systemctl stop firewalld
setenforce 0
- 修改
bind
服务的主配置文件/etc/named.conf
对图中内容的解释:
listen-on port 53 { 20.0.0.10; };
#对外提供解析服务的IP地址:自己的IP地址,也可以改成any,即任意地址
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; };
#谁能访问解析服务器,any表示所有
保存文件并退出。
- 修改区域配置文件
/etc/named.rfc1912.zones
编辑是可以套用文件中现成的模板:
保存文件并退出。
-
配置区域数据文件,
/var/named/named.localhost
,进行地址解析保留权限复制配置文件,重命名为步骤3中自定义的区域数据文件的文件名
cd /var/named
cp -p named.localhost ykw102.com.zone
#保留权限复制(要保留所在组.named,不然服务会报错)
vim ykw102.com.zone
编辑内容:
对内容的解释:
$TTL 1D #DNS的检索记录,保存在缓存中的时间是一天,在一天之内,#如果有缓存就不需要再向DNS服务器发起请求。
@ IN SOA ykw102.com.
#@ :当前DNS的区域名,@全局变量
IN :Internet,协议
SOA :解析类型,第一条解析记录,从起始位置开始记录0 ;serial #更新序列号,0不更新1D ;refresh #刷新时间,地址数据如果有变动,一天刷新一次1H ;retry #解析失败,重置的间隔时间1W ;expiere #失效时间,解析地址下载失败后,多长时间放弃3H) ;minimum #无效解析记录的生存时间
保存文件并退出。
- 修改域名服务器地址
vim /etc/resolve.conf
在第一行添加
nameserver 20.0.0.10 #域名服务器IP地址
重启bind
对应的服务named
systemctl restart named
使用nslookup
验证DNS解析服务。
2.2 DNS反向解析
要求:主机test1
,IP地址 20.0.0.10
作为DNS域名服务器,实现反向解析。
实现:步骤和2.1基本一致。
- 安装bind服务,关闭防火墙、安全机制
- 修改
bind
服务的主配置文件/etc/named.conf
,和2.1
一致 - 修改区域配置文件
/etc/named.rfc1912.zones
-
配置区域数据文件,
/var/named/named.localhost
,进行地址解析保留权限复制配置文件,重命名为步骤3中自定义的区域数据文件的文件名
cd /var/named
cp -p ykw102.com.zone ykw102.com.zone.reverse
#保留权限复制(要保留所在组.named,不然服务会报错)
vim ykw102.com.zone.reverse
编辑内容:
保存文件并退出。
- 修改域名服务器地址
vim /etc/resolve.conf
在第一行添加
nameserver 20.0.0.10 #域名服务器IP地址
重启bind
对应的服务named
systemctl restart named
使用nslookup
验证DNS反向解析服务。
[root@test1 named]# nslookup 20.0.0.103
103.0.0.20.in-addr.arpa name = mail.ykw102.com.
#反向解析成功
2.3 主从DNS
主从DNS实际上就是实现DNS服务的高可用(冗余),主服务器down
了,从服务器可以接替工作。
要求:在实验2.1
, 2.2
的基础上,进行以下配置
test1
@20.0.0.10
作为主DNS服务器
test2
@20.0.0.20
作为从DNS服务器
实现:
首先对test1
,test2
安装bind
服务,关闭防火墙、安全机制。
test1
配置:- 修改区域配置文件
/etc/named.rfc1912.zones
保存退出。 - 修改域名服务器地址
vim /etc/resolve.conf
- 修改区域配置文件
nameserver 20.0.0.10 #主域名服务器IP地址
nameserver 20.0.0.20 #从域名服务器IP地址
-
test2配置
-
修改
bind
服务的主配置文件/etc/named.conf
-
修改区域配置文件
/etc/named.rfc1912.zones
保存退出。
修改域名服务器地址
vim /etc/resolve.conf
nameserver 20.0.0.10 #主域名服务器IP地址 nameserver 20.0.0.20 #从域名服务器IP地址
-
-
对
test1
和test2
都重启bind
对应的服务named
systemctl restart named
检查区域数据文件有没有传输到从服务器的
/var/named/slaves
区域数据文件传输成功,配置完成。
在主服务器test1
上systemctl stop named
停止DNS服务,在从服务器test2
上使用nslookup
验证,速度变慢,但任然可以完成解析。
[root@test2 slaves]# vim /etc/resolv.conf
[root@test2 slaves]# nslookup www.ykw102.com
Server: 20.0.0.20
Address: 20.0.0.20#53Name: www.ykw102.com
Address: 20.0.0.102[root@test2 slaves]# nslookup 20.0.0.103
103.0.0.20.in-addr.arpa name = mail.ykw102.com.