DNS服务
一、DNS简介
1.1DNS是什么?
DNS域名系统
(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网
,而不用去记住能够被机器直接读取的IP数串。
实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区 域(包含 IP 地址到域名的解析记录)。
1.2DNS系统的作用
- 正向解析:根据域名查找对应的IP地址
- 反向解析:根据IP地址查找对应的域名(域名的反向解析不是很常用,只在一些特殊场合才会用到,比如可用于反垃圾邮件的验证。)
- DNS系统的分布式数据结构:
- IPv4的根名称服务器: 全球共13个负责解析根域的DNS服务器,美国10个,英国1个,瑞典1个,日本1个
IPv6的根名称服务器: 全球共25个,中国1主3从,美国1主2从
1.2.1正向解析查询过程:
①先查本机的缓存记录
②查询hosts文件
③查询dns域名服务器,交给dns域名服务器处理
以上过程成为
递归
查询:我要一个答案你直接会给我结果
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
4到8是
迭代
查询
1.3 DNS使用的协议及端口号
DNS的默认端口为53。 DNS端口分为TCP和UDP
一、TCP是用来做区域传送,多用于主从同步
在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。
二、UDP是用来做DNS解析的
域名:通常由一个完全合格域名(FQDN)标识
。FQDN 全称 Fully Qualified Domain Name ,它能准确表示出其相对于 DNS 域树根的位置, 也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,
对于DNS 域google来说,其完全正式域名(FQDN)为google.com。
例如,google 为 com 域的子域,其表示方法为 google.com,而 www 为 google 域中的子域, 可以使用www.google.com. 表示。
注意: 通常,FQDN 有严格的命名限制,长度不能超过 256 字节,只允许使用字符 a-z,0-9,A-Z 和减号(-)。点号(.)只允许在域名标志之间(例如“google.com”)或者 FQDN 的结尾使用。
域名不区分大小,由最顶层到下层,可以分成:根域、顶级域、二级域、子域
即全域名:同时带有主机名和域名的名称
FQDN = Hostname + DomainName
如:www.baidu.com.
注意:最前面的一定是主机,最后一个点表示根域,通常是省略不写的,但实际上www.abc.com=www.abc.com.
域名结构:
http://www.sina.com.cn./
http://主机名.子域.二级域.顶级域 根域/
1.4 DNS查询类型及原理
- 一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区):
一级域名 | 含义 |
---|---|
.com | 工商企业 |
.net | 网络供应商 |
.edu | 教育机构 |
.cn | 中国国家域名 |
.org | 团体组织 |
.gov | 政府部门 |
- 二级DNS服务器:专门负责二级域名的解析
二级域名 |
---|
.net.cn |
.edu.cn |
.com.cn |
- 子域名DNS服务器:专门负责子域名的解析也称为三级域名
三级域名 |
---|
ina.com.cn |
.pku.edu.cn |
- 主机站点
主机名 |
---|
tts9 |
tts6 |
www |
- 域名代理/注册/购买服务商
-新网 | http://www.xinnet.com |
---|---|
-万网 | http://www.net.cn |
-中国互联 | http://hulian.top |
中国数据 | |
阿里云 | |
腾讯云 | |
西部数码 | |
亚马逊 |
1.5 域名体系结构
所有的域名必须以点
结尾
www.qq.com. www.baidu.com.
根域名(.)
一级域名:.cn(中国) .us() .tw(台湾) .kr(韩国) .jp(日本) .hk(香港)uk(英国) ........
二级域名:.com.cn(中国商业组织) edu.cn(教育机构) .org.cn(非盈利) .net.cn(中国运营商)
三级域名:sina.com.cn nb.com.cn haixi.com.cn .........
组织域:.com .org .net .CC
国家域:.cn(中国) .tw(台湾) .hk(香港) .iq .ir .jp(日本)
反向域
http://www.sina.com.cn.
主机名 子域 二级域 顶级域 根域
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用。
8.8.8.8是GOOGLE公司提供的DNS,该地址全球通用,相对来说,更适合国外以及访问国外网站的用户使用
223.5.5.5 和 223.6.6.6:阿里云DNS
IPV6 2400:3200::1 和 2400:3200:baba::1
江苏省南京市(中国电信)
首选DNS为:218.2.135.1 备用DNS为:61.147.37.1
二.DNS服务器系统类型
DNS服务器类型:
(1)主域名服务器: 负责维护一个区域的所有域名信息
,是特定的所有信息的权威信息源,数据可以修改。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
(2)从域名服务器: 当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库
。【相当于一个备胎,备份主域名服务器的内容】
(3)缓存域名服务器: 只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库
。它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
(4)转发域名服务器: 负责所有非本地域名的本地查询
。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。
2.1 DNS查询方式
-
递归查询: 一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结 果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(
不需要自己动手
) -
迭代查询: 一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对 方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起 进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需 要发起多次查询。(
需要自己动手
)
递归:就相当于我是一个领导,我把事儿交给你去做,我不用操心过程,你最后只要给我结果就行。
迭代:就相当于员工,需要你去自己处理的,比如a不会,他去问b,然后b说他也不会,然后b去问c,c会他交了b,b在告诉a,a最后完成了任务。
三、DNS域名解析服务器步骤
3.1 资源记录
3.1.1SOA记录
name: 当前区域的名字,例如"wlw.com."
value: 有多部分组成
注意:
当前区域的主DNS服务器的正向解析,也可以使用当前区域的名字
当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换
例如:admin.zzh.com
主从服务区域传输相关定义以及否定的答案的统一的TTL
范例:
3.1.2NS记录
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如: ns.kgc.org.
注意:
相邻的两个资源记录的name相同时,后续的可省略
对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
一个区域可以有多个NS记录
范例:
master IN NS kgc.com.
master IN NS kgc.com.
3.1.3 MX记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
注意:
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;
数字越小优先级越高
对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
范例:
mail IN MX 10 mail1.kgc.com
IN MX 20 mail2.kgc.com
mx1 A 192.168.10.10
mx2 A 192.168.10.10
3.1.4 A记录
name: 某主机的域名解析,例如:www.wlw.com
value:主机名对应主机的IP地址
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
范例:
www.kgc.com. IN A 1.1.1.1
www.kgc.com. IN A 2.2.2.2
www.kgc.com. IN A 3.3.3.3
www.kgc.com. IN A 4.4.4.4
* IN A 5.5.5.5
#代表泛域名
@ IN A 6.6.6.6
#代表不需要名字
3.1.5 PTR记录
name:IP,有特定格式,把IP地址反过来写,192.168.59.100,要写作100.59.168.192;而有特定后缀:in-addr.arpa.,所以完整写法为:100.59.168.192.in-addr.arpa. value: FQDN
3.1.6 CNAME别名记录
name: 别名的FQDN value: 真正名字的FQDN
ftp.wlw.com. IN CNAME www.kgc.com
3.1.7扩展
- TTL可从全局继承
- 使用 “@” 符号可用于引用当前区域的域名
- 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
- 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
3.2 正向解析步骤
1. 正向解析
#systemctl stop firewalld.service //关闭防火墙
#setenforce 0 //关闭selinux
#yum install -y bind bind-utils //安装bind包
#rpm -qc bind //查看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
[root@ky19 named]# systemctl start named
2. 修改主配置文件——/etc/named.conf
修改主配置文件
vim /etc/named.conf
options {
listen-on port 53 { 192.168.80.10; }; ●监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
#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"; # 内存统计文件的位置
allow-query { 192.168.10.0/24; 172.16.100.0/24; };● 允许使用本DNS解析服务的网段,也可用any代表所有:
zone "." IN { #正向解析“."根区域
type hint; #类型为根区域
file "named.ca"; #区域数据文件为named.ca,#记录了13台根域服务器的域名和IP地址等信息
};
include "/etc/named. rfc1912. zones"; #包含区域配置文件里的所有配置修改
[root@ky19 named]# rndc reload //刷新服务
3. 修改区域配置文件——/etc/named.rfc1912.zones
vim /etc/named. rfc1912. zones
#文件里有模版,可复制粘贴后修改
zone "kgc.com" IN {●正向解析"kgc.com"区域
type master;#类型为主区域
file "kgc.com.zone"; ●指定区域数据文件为kgc.com.zone
allow-update { none; } ;
};
[root@localhost named]# rndc reload //刷新服务
4. 修改区域配置文件,添加正向区域配置——/var/named
[root@kgc etc]# cd /var/named/
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves ##都可以拿来做模板
[root@kgc named]# cp -a named.localhost kgc.com.zone ##-a才有root权限
[root@kgc named]# ls
data named.ca named.localhost kgc.com.zone
dynamic named.empty named.loopback slaves
[root@kgc named]# vim kgc.com.zone
$TTL 1D ##1 day 的生命周期
@ IN SOA kgc.com. admin.kgc.com. ( ##管理员kgc的邮箱
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS kgc.com.
A 192.168.10.10 ##本机ip
AAAA ::1
MX 10 mail.kgc.com.
mail A 192.168.10.10
web A 192.168.10.100
ftp A 192.168.10.200
[root@localhost named]# rndc reload //刷新服务
配置正向区域数据文件
cd /var/ named/
Cp -p /etc/named.conf /etc/named.conf.bak //修改配置文件第一步,备份
cp -p named.localhost kgc.com.zone #保留源文件的权限和属主的属性复制
vim /var/named/kgc.com.zone
$TTL 1D #有效解析记录的生存周期
@ in SOA kgc.com. admin.kgc.com. ( #“@"符号表示当前的DNS区域名
0 ; serial #更新序列号,可以是10位以内的整数
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍无法下载则放弃#
3H) ; minimum #无效解析x记录的生存周期,
NS kgc.com. #记录当前区域的DNS服务器的名称
A 192.168.80.10 #记录主机IP地址
IN MX 10 mail.kgc.com. #MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.10.10 #记录正向解析www.kgc.com对应的IP
mail IN A 192.168.10.11 #MX为邮件交换记录,数字越大优先级低
ftp IN CNAME www #CNAME使用别名,ftp 是www的别名
* IN A 192.168.10.100 #泛域名解析,“*"代表任意主机名
#“@”这里是一个变量,当前DNS区域名
#SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与
本地区域数据中的序列号相同,则不会进行下载。
#"kgc.com. "此为完全合格域名(FQDN) ,后面有个“."不能漏掉
#“admin.kgc.com.”表示管理员邮箱,这里的“@”符号已有其他含义,所以用“.”代替
#IN 表示internet
启动服务,关闭防火墙
systemctl start named
systemctl stop firewalld
setenforce 0
#如果服务启动失败,可以查看日志文件来排查错误
tail -f /var/log/messages
#如果服务启动卡住,可以执行下面命令解决
rndc-confgen -r /dev/urandom -a
#对域名语法进行检查(named.conf)
named-checkconf -z /etc/named.conf
在客户端的域名解析配置文件中添加DNS服务器地址
vi /etc/resolv .conf
#修改完后立即生效
nameserver 192.168.10.10
或
vi /etc/sysconfig/network-scripts/ifcfg-ens33 DNS1=192.168.10.10
#修改完后需要重启网卡
systemctl restart network
测试DNS解析
host
www.kgc.com
nslookup www.kgc.com
3.3 反向解析法配置
1. 修改区域配置文件——/etc/named.rfc1912.zones
vim /etc/named.rfc1912.zones
// 192.168.10.0 反向则是 10.168.192 反向解析是他的一个网段倒过来的
zone "10.168.192.in-addr.arpa" IN {
type master;
file "kgc.com.zone.local"; //指定反向解析的数据文件,也可以跟正向解析的数据文件相同
allow-update { none; };
};
2. 修改区域配置文件,添加反向区域配置——/var/named
cd /var/named/
cp -p kgc.com.zone kgc.com.zone.local
$TTL 1D #有效解析记录的生存周期,默认单位为秒
@ IN SOA kgc.com. admin.kgc.com. ( #SOA标记、域名和管理员邮箱,@变量表示域名
0 ; serial #更新序列号,10位以内数字,用于主从同步,主服务器这个数值要大于从服务器否则无法同步
1D ; refresh #刷新时间
1H ; retry #重试刷新时间间隔
1W ; expire #失效时间,超过该时间则放弃
3H ) ; minimum #无效解析记录的生存周期
NS kgc.com.
A 192.168.10.10
100 IN PTR www.kgc.com.
200 IN PTR mail.kgc.com.
#20是192.168.10.20的意思
#PTR反向指针 功能:反向解析
systemctl restart named //rndc reload也可以重载配置文件
host 192.168.10.10
// 将会反向解析出域名www.kgc.com
反向文件配置的验证
[root@localhost named]# host 192.168.10.10
10.10.168.192.in-addr.arpa domain name pointer www.oyyy1.com.
[root@localhost named]# host 192.168.68.99
99.68.168.192.in-addr.arpa domain name pointer ftp.oyyy1.com.
3.4 主从复制配置
实验环境: 主服务器:192.168.10.10 从服务器:192.168.10.12
配置主服务器192.168.10.10
vim /etc/named.conf
listen-on port 53{} 中值为any
allow-query{}中值改为any
vim /etc/named.rfc1912.zone
zone "kgc.com" IN {
type master; //类型为主区域
file "kgc.com.zone";
allow-transfer { 192.168.10.12; }; //设置从服务器地址
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "kgc.com.zone.local";
allow-transfer{ 192.168.10.12; };
};
配置从服务器192.168.10.12
yum install -y bind
vim /etc/named.conf
options {
listen-on port 53 { 192.168.10.12; }; ●监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
#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"; # 内存统计文件的位置
allow-query { any; }; ● 允许使用本DNS解析服务的网段,也可用any代表所有
}
修改从域名服务器区域配置文件,添加正、反区域配置
vim /etc/named.rfc1912.zone
zone "kgc.com" IN {
type slave; //类型为从区域
file "slaves/kgc.com.zone"; //下载的区域数据文件保存到slaves/目录下
masters { 192.168.10.10; }; //设置主服务器地址
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
file "kgc.com.zone.local";
masters { 192.168.10.10; };
###主、从都重启动服务,并查看区域数据文件是否已下载成功
systemctl restart named
ls -1 /var/named/slaves/
#####在客户端的域名解析配置文件中添加从DNs服务器地址
echo “nameserver 192.168.10.12” >> /etc/ resolv.conf
####测试
host 192.168.10.10
nslookup 192.168.10.12
3.5分离解析配置示例
3.5.1实验环境
将linux服务器配置两块网卡,都仅主机模式
ens33:192.168.100.1
ens37:12.0.0.1
win7做为外网: 12.0.0.12 255.0.0.0
win10 作为内网:192.168.100.100
1.开启一台Linux服务器,关闭防火墙并下载软件
2.添加一块网卡,并将两块网卡都设置仅主机模式
3.配置双网卡
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33
IPADDR=192.168.100.1
NETMASK=255.255.255.0
[root@localhost network-scripts]# ip a
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens38
[root@localhost network-scripts]# vim ifcfg-ens38
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ip a
4.开两台windows
1)开一台win7
2)开一台win10
5.修改Linux中的配置文件
1.修改主配置文件
vim /etc/named.conf
options {
listen-on port 53 { any; }; ●监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
#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"; # 内存统计文件的位置
allow-query { any; };● 允许使用本DNS解析服务的网段,也可用any代表所有
}
include "/etc/named.rfc1912. zones";
2.修改区域配置文件
vim /etc/named.rfc1912.zones
view "lan" { #定义内网view,view代表容器分割
match-clients { 192.168.100.0/24; }; #匹配内网网段
zone "wlw.com" IN { #设置要解析的区域
type master;
file "wlw.com.zone.lan"; #数据配置文件
};
zone "." IN { #可将根域配置从主配置文件剪切过来,dd+p
type hint; #hint是根区域类型
file "named.ca";
};
};
view "wan" { #定义外网view .
match-clients {12.0.0.0/24; }; #匹配除了内网网段以外的任意地址
zone "wlw.com" IN {
type master;
file "wlw.com.zone.wan";
};
zone "." IN {
type hint;
file "named.ca";
;
};
#注意:一旦启用view,所有的zone必须都在view下,所以要把系统默认的自检用的zone也放在view下或者删55
3.创建wlw.com.lan和wlw.com.wan
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost wlw.com.lan
[root@localhost named]# vim wlw.com.lan
[root@localhost named]# cp -p wlw.com.lan wlw.com.wan
[root@localhost named]# vim wlw.com.wan
4.开启服务
[root@localhost named]# systemctl start named
5.在window中验证
nslookup www.wlw.com
-
1.修改/etc/named.conf
-
2.修改/etc/named.rfc1912.zones
-
3.创建wlw.com.lan和wlw.com.wan
-
4.开启服务
-
5.在window中验证
喜欢小编的友友们,给小编点个赞赞吧!