标签:dns
我们都知道,在"记忆"的角色上,人脑总是不如计算机,而人们对文字的印象又比数字高。因此,想要使用纯粹的TCP/IP来上网,实在不好记忆又很麻烦,为了适应人类的使用习惯,一个名为DNS的服务帮我们将主机名解析为IP好让大家只要记得主机名就能使用Internet,由于目前的IPv4已经接近分配完毕的阶段,因此128bits的IPv6会逐渐热门起来,如果背128位的IP上网想必是不可能的,可以想象它会越来越重要。
FQDN:Fully Qualified Domaim Name 完全限定的全球唯一的主机名
FQDN是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置。
.com 公司、行号、企业
.org 不以盈利为目的的组织、机构
.edu 教育单位
.gov 政府单位
.net 网络通信
.mil 军事单位
.iq伊拉克
.tw台湾
.hk香港
.jp日本
.cn中国
客户机主机发送请求-->运营商
-->存在,返回目标地址
-->不存在--->(进行分布式DNS系统根节点,分布式运作向下迭代级别查询)-->根域-->顶级域-->二级域-->目标主机
客户机:递归查询,只请求查询一次
运营商:迭代查询,求爷爷告奶奶式请求
正向解析:名称-->IP 域名转换为IP地址的操作
反向解析:IP-->名称 IP地址转换为域名的操作
以ip地址为线索查询,最顶端位置名字:in-addr.arpa
例:1.2.3.4 -->写成4.3.2.1.in-addr.arpa,网段3.2.1.in-addr.arpa(加上4就是地址)
注意:二者的名称空间,非为同一个空间,即非为同一棵树,也不是同一个解析库。
负责解析至少一个域
主名称服务器 (主胡同长)
辅助名称服务器 (副胡同长)
不负责解析域的(只告诉你去哪里找)
本地缓存名称服务器 ,运营商就是缓存服务器
首先查找本机HOSTS表,有就直接使用表中定义,无查找网络连接中设置的DNS 服务器由他来解析。
Client --> hosts文件 --> DNS LocalCache (本地DNS缓存)--> DNS Server (recursion,递归请求) -->
--->自己负责解析的域:直接查询数据库并返回答案;
--->不是自己负责解析域:Server Cache --> iteration(迭代方式查找分布式DNS系统根)
解析答案分类:
1) 肯定答案:返回肯定答案
否定答案:不存在查询的键,因此,不存在与其查询键对应的值;
2) 权威答案:由直接负责的DNS服务器返回的答案;
非权威答案:从缓存中读取的答案
区域是物理概念,域是逻辑概念
一个域由两个区域组成,magedu.com这个域,有正向解析区域和反向解析区域,但是域未必比区域大。(区域就是一个解析库zone)(域是一个概念模型domain)
FQDN --> IP 正向解析库区域
IP --> FQDN 反向解析库区域
资源记录:Resource Record, 简称rr;
记录有类型:A, AAAA, PTR, SOA, NS, CNAME, MX
语法: name [TTL] IN SOA value
name:当前域的名字:例如"magedu.com."或"2.3.4.in-addr.arpa"
value:由多部分组成
(1)当前域的区域名称(也可以使用DNS服务器名称)
(2)当前区域管理员的邮箱地址,但地址中不能使用@符号,一般使用点号代替
(3)主从服务协调属性的定义以及否定答案的TTL
(4)一个区域解析库只能有一个SOA,而且必须放在第一条
magedu.com. 86400 IN SOA magedu.com. admin.magedu.com. ( 2017010801 ; serial 序列号 2H ; refresh 刷新时间 10M ; retry 重试时间 1W ; expire 终止时间 1D ; negative answer ttl 否定答案存活时间 )
用来记录域名解析服务器
name:当前区域的区域名称(回想区域概念,正向解析区域..说明它就是个域名解析服务器)
value:当前区域的某DNS服务器的名称,例如ns.magedu.com.一个区域可以有多个ns记录
语法: name [TTL] IN NS value
magedu.com. 86400 IN NS ns1.magedu.com. ns1和ns2就是用来解析magedu.com这个域的magedu.com. 86400 IN NS ns2.magedu.com.
就是地址的缩写,后面记录着的IP地址与前面的域名相对应;同一域名可有多个IP地址,同一IP地址可有多个域名。
name:某FQDN,例如www.magedu.com.
value:某IPv4地址
www.magedu.com. IN A 1.1.1.1www.magedu.com. IN A 1.1.1.2bbs.magedu.com. IN A 1.1.1.1
主机名与IPv6的对应关系
name:FQDN
value: IPv6
name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;
value:FQND
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.
name:FQDN格式的别名;
value:FQDN格式的正式名字;
web.magedu.com. IN CNAME www.magedu.com.
name: 当前区域的区域名称
value:当前区域某邮件交换器的主机名;
注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;
magedu.com. IN MX 10 mx1.magedu.com.magedu.com. IN MX 20 mx2.magedu.com.
注意:
(1) TTL可以从全局继承;
(2) @表示当前区域的名称;
(3) 相邻的两条记录其name相同时,后面的可省略;
(4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;
BIND:美国加州伯克利大学研制,后交给ISC组织运营
bind是nds协议的一种实现
named:bind程序运行的进程名
程序包:
bind-libs:被bind和bind-utils包中的程序共同用到的库文件
bind-utils:bind客户端程序集,例如dig host nslookup
bind:提供dns server程序,以及几个常用的测试程序
bind-chroot:选装,为了安全起见,让named进程运行在沙箱模式下,测试建议不装
概念:将某个目录指定为BIND程序的根目录,由于已经是根目录,所以BIND便不能离开该目录,CentOS6.X默认将BIND锁在/var/named/chroot
rpm -ql bind 查看安装各个文件的路径
搭建BIND有两个数据要处理:
BIND本身的配置文件,主要规范主机的设置、zone file的所在、权限的设置等
正反解数据库文件(zone file)记录主机名与IP对应关系
BIND的配置文件为/etc/named.conf在这个文件里面可以规范zone file的完整文件名;也就是说zone file是由/etc/named.conf所指定的。所以zone file的文件名可以随意取。CentOS6.x默认目录:
rpm -ql bind 查看程序的配置文件、程序、库文件的路径/etc/named.conf 服务主配置文件 主配置文件组成: /etc/named.iscdlv.key /etc/named.rfc1912.zones -->最重要 /etc/named.root.key
/var/named 区域解析库文件存放位置(即正反向解析库)
一般名称为:zone_name.zone
注意:一台DNS服务器可同时为多个区域提供解析;
必须要有根区域解析库文件:/var/named/named.ca
应该有两个区域解析库文件:localhost和127.0.0.1的正反相解析
分别是/var/named/named.localhost 正向解析库文件
/var/named/named.loopback 反向解析库文件
以上三个文件不是默认提供的,可手动自己添加进去
~]#cat /etc/sysconfig/named 是否启动chroot及额外的参数 ROOTDIR=/var/named/chroot/var/run/named 程序执行时默认放置pid-file在此目录内
注意:为了系统安全性考虑,一般发行商都已经自动的将BIND相关程序给chroot了,并记录在/etc/sysconfig/named里面
全局配置段:
option{...}
日志配置段
logging{...}
区域配置段
zone{...}定义由本机解析或转发的区域
注意:每一个配置语句必须以分号结尾,否则即为语法错误
编辑配置文件/etc/named.conf
设置监听的端口和IP地址
listen-on port 53; CentOS-7默认不支持
listen-on port 53 { 172.18.164.2; }; 地址写要做为缓存服务器的IP地址
学习时建议关闭dnssec
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;
//allow-query {localhost} <--关闭仅允许本地查询 //可以注释
配置文件语法检查
named-checkconf /etc/named.conf
启动服务
systemctl restart named.service
查询哪个进程监听在TCP的53号端口
netstat -tunlp -->(named程序同时监听在UDP的53号端口)
通过测试工具测试没有问题,本地缓存NDS服务器就可以使用了
注册域名后,在后台修改ns记录,指向你的这台缓存服务器的IP地址
rndc默认监听在953端口
rndc原理 named控服务器制命令 名称解析服务器的远程名称解析工具,例如更新缓存、清除缓存。安装在tcp/953端口,但默认监听于127.0.0.1地址,因此仅允许本地使用bind程序安装完成后,默认即可做缓存名称服务器使用;如果没有专门负责解析的区域,直接可启动服务 CentOS-6:system named start CentOS-7:systemctl start named.servicerndc使用方法一:[root@localhost ~]# rndc status [root@localhost ~]# systemctl start named <--使用rndc命令之前必须启动服务[root@localhost ~]# rndc statusversion: 9.9.4-RedHat-9.9.4-29.el7 <id:8f9657aa> <--服务器的版本号CPUs found: 1 <--CPU一个有1颗worker threads: 1 <--工作线程有4个UDP listeners per interface: 1number of zones: 101debug level: 0xfers running: 0 <--有没有进行过xfersxfers deferred: 0soa queries in progress: 0 <--正在进行的SOA查询一个有多少个query logging is OFF <--查询日志功能是关闭的recursive clients: 0/0/1000 <--递归查询客户端一共有多少个tcp clients: 0/100 <--TCP客户端一共有多少个最多有100个server is up and running <--说明服务器处于启动状态rndc使用方法二:[root@localhost ~]# rndc stop <--可以远程关闭named服务 等同于systemctl stop named.servicerndc使用方法三:[root@localhost ~]# rndc flush <--清空服务器缓存,适用于服务器内容变更,着急更新 类似于你注册域名,在后台修改信息后,两个小时之内才能生效,因为缓存是有时长的 [root@localhost ~]# rndc reload <-- 重新装载配置文件和区域数据库文件[root@localhost ~]# rndc reload zone <--重启某一个区域
~]# host -a FQDN [server]
-a:代表列出该主机所有的相关信息,包括IP、TTL、与排错信息。
~]# host -l domain [server]
-l:若后面接的domain域 设置允许allow-transfer时,则列出该domain所管理的所有主机名对应数据
server:如果想要利用非/etc/resolve.conf内的DNS主机来查询主机名与IP对应关系时,就可以利用这个参数,可不写
[object Object][object Object][object Object][object Object][object Object][object Object]
~]nslookup [FQDN] [server]~]nslookup选项与参数:直接在nslookup后面加上 主机名或IP如果什么都不加则将进入nslookup的查询功能,可输入参数进行特殊查询 set type=any :列出所有的信息,变更查询,不是仅有A,全部信息都列出来 set type=mx :列出 mx 相关信息
举例说明:[root@localhost ~]# nslookup www.baidu.comServer: 172.18.0.1Address: 172.18.0.1#53 <--特别要注意DNS的IP是否正确 Non-authoritative answer:www.baidu.com canonical name = www.a.shifen.com.Name: www.a.shifen.comAddress: 61.135.169.121Name: www.a.shifen.comAddress: 61.135.169.125 <--返回给你的IP地址[root@localhost ~]# nslookup>120.114.100.20 <--执行反解的查询...>www.baidu.com <--执行正解的查询...>set type=any <--变更查询,不仅有A,全部信息都列出来>www.baidu.com Server: 172.18.0.1
Address: 172.18.0.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Authoritative answers can be found from: <--这是相关授权 DNS 说明baidu.com nameserver = ns2.baidu.com.
baidu.com nameserver = ns4.baidu.com.
baidu.com nameserver = ns3.baidu.com.
baidu.com nameserver = dns.baidu.com.
baidu.com nameserver = ns7.baidu.com.
dns.baidu.com internet address = 202.108.22.220
ns2.baidu.com internet address = 61.135.165.235
ns3.baidu.com internet address = 220.181.37.10
ns4.baidu.com internet address = 220.181.38.10
ns7.baidu.com internet address = 119.75.219.82
~]# dig [options] FQDN [@server]选项与参数:@server:如果不以/etc/resolv.conf 的设置来做为DNS查询,可以此填入其他的IPoptions: +trace:就是从根开始追踪解析过程 +notrace:不从根开始追踪 +[no]recurse:进行递归解析 -t type:查询的数据主要有MX、NX、SOA等类型 -x:查询反解信息,非常重要 -t axfr 域名 [@server] 模拟完全区域传送,主从复制使用
[object Object][object Object][object Object][object Object]
以magedu.com域为例
步骤一:定义区域
在主配置文件中或主配置文件辅助配置文件中实现
zone "ZONE_NAME" IN {
type {master|slave|hint|forward}; <--分别代表主服务器、从服务器、根服务器、转发服务器
file "ZONE_NAME.zone"; <--指明区域数据文件在什么地方;在/var/named目录下
};
重要:在/etc/named.conf 中只定义了一个域hint;指向的named.ca在/var/named/named.ca;里面存储着13台根DNS服务器;如果想定义其他的域可以在配置文件下方的/etc/named1912.zones ,如果有说明遵循rfc1912规范。rfc:请求驻进文档。所以我们编辑/etc/named.rfc1912.zones
zone "magedu.com" IN {
type master; <--这就新增了一个正向区域
file "magedu.com.zone"; <--此文件在/var/named目录下
};
步骤二:建立正向区域数据文件
在/var/named目录下建立区域数据文件
/var/named创建一个区域数据库文件即步骤一的file" ",权限640、属主root属组named
~]#vim /var/named/magedu.com.zone
$TTL 3600 <--宏定义缓存时间为1个小时
@ IN SOA ns1.magedu.com. dnsadmin.magedu.com. ( <--@表示引用步骤一所定义的区域名称"magedu.com"建立区域数据文件第一条必须是SOA;格式规范详见目录SOA
2017010808 序列号
1H 刷新时间1个小时
10M 重试时间10分钟
3D 过期时间3天
1D 否定回答的TTL值1天 ) <--此时SOA就已经编辑完成了
IN
NS ns1.magedu.com. <-- 第一位@不写表示同上;ns1.magedu.com.可以简写为ns1,它会自动补充步骤一所定义的magedu.com这个域,也可以在行首宏定义:$ORIGIN magedu.com.而后简写它会自动补充。
IN NS ns2
IN MX 10 mx1 <--如果有邮件服务器可以定义;
ns1 IN A 172.18.164.2 <--定义ns1解析库服务器的A记录
mx1 IN A 172.18.164.3 <--定义邮件服务器A记录
www IN A 172.18.164.4<--为公司在互联网上被访问的服务器提供解析,IP地址就是被访问服务器的地址
web IN CNAME WWW <-- web是www的别名
bbs IN A 172.18.164.5
bbs IN A 172.18.164.6 <--两个IP地址对应同一个名字,在被解析的时候,两个IP轮流被访问
步骤三:让服务器重载配置文件和区域数据文件
~]#chown :named /var/named/magedu.com.zone <--修改区域数据文件的属组为named
~]#chmod o= /var/named/magedu.com.zone <--将其他用户的读权限删除
~]#named-checkconf <--为步骤二做语法检测
~]#named-checkzone magedu.com /var/named/magedu.com.zone<--检查magedu.com.zone这个区域的语法,前面是区域名 后面是文件
~]#rndc status <--查看number of zones,此时没有reload所以应为101
~]#rndc reload <--重载整个区域的内容,此时number of zones为102;此处也可以通过重启named服务达到重载效果
~]#cat /etc/resolv.conf <-- 查看DNS指向是否已经改为本机
~]#dig -t A www.magedu.com @172.18.164.2 <--通过刚刚新建的DNS服务器来解析刚刚创建的www.magedu.com
~]#host -t A magedu.com <--测试查看magedu.com的A记录
注册域名后,在后台修改ns记录,指向你的这台缓存服务器的IP地址,就可以负责某区域解析了
步骤一:定义区域
在主配置文件中或主配置文件辅助配置文件中实现
zone "ZONE_NAME" IN {
type {master|slave|hint|forward}; <--分别代表主服务器、从服务器、根服务器、转发服务器
file "ZONE_NAME.zone"; <--指明区域数据文件在什么地方
};
注意:反向区域的名字,反写的网段地址 .in-addr.arpa 即:164.18.172.in-addr.arpa
步骤一:定义区域解析库文件 主要记录为PTRvim /etc/named.rfc1912.zones <--编辑位置同正向解析库文件zone "164.18.172.in-addr.arpa" IN { type master; <--定义一个反向区域解析库文件 file "172.18.164.zone";};
步骤二:建立反向区域数据文件
重要:在/var/named创建一个区域数据库文件即步骤一的file" ",权限640、属主root属组named
区域名称为164.18.172.in-addr.arpa. <--注意区域数据库文件和区域名称是相反的
vim 172.18.164.zone
$TTL 3600 <--定义缓存时间为1个小时
$ORIGIN 164.18.172.in-addr.arpa. <--在这里可以简写IP,而不能简写ns1.magedu.com
@ IN SOA ns1.magedu.com. nsadmin.magedu.com. ( <--格式和正向区域数据文件一样
2017010801
1H 刷新时间1小时
10M 重试时间10分钟
3D 过期时间3天
12H 否定回答的TTL值12小时 )
IN NS ns1.magedu.com. <--此处ns1后面不可以省略
注意:反向区域数据文件中不需要标记MX记录,你的每一个A记录只需要有PTR记录就可以
2 IN PTR ns1.magedu.com. <--此处2后面会自动补充$ORIGIN定义的值
3 IN PTR mx1.magedu.com.
4 IN PTR www.magedu.com.
5 IN PTR bbs.magedu.com.
6 IN PTR bbs.magedu.com. <--此5行内容与正向区域库文件步骤二相呼应
步骤三:让服务器重载配置文件和区域数据文件~]#chgrp named 172.18.164.zone~}#chmod o= 172.18.164.zone~]#named-checkconf 为步骤二做语法检测~]#named-checkzone 164.18.172.in-addr.arpa /var/named/172.18.164.zone <--前面的164.18.172.in-addr.arpa是区域名,要与步骤二$ORIGIN定义的宏定义保持一致~]#rndc reload ~]#rndc status <--发现number of zones 变为103~]#dig -x 172.18.172.2 <--测试反向解析示例
从服务器有一个同主服务器一模一样的区域解析库
注意:从服务器是区域级别的概念,如果一台服务器上有三个区域("正反解析区域")都是主的,当我们配置一台服务器做为从服务器时,它是针对服务器上的某个区域的从服务器,从服务器上只有某一个区域的副本。
如果一台主机即配置了正向区域解析又配置了反向区域解析,想通过从服务器备份时,都需要在从服务器上做配置。
也可以两台服务器,A服务器做正向区域的主、B服务器做反向区域的从;A左反向区域的从、B做正向区域的主,因为他们是区域级别的概念,所以非常灵活
在公司当中我们让一台服务器正向反向都是主,一台服务器正向反向都是从,我们如何让他们都提供服务呢
步骤一定义一个从区域 ~]#ssh root@172.18.164.3 <--连接CentOS-6服务器 ~]#yum install bind -y ~]#vim /etc/named.conf后续配置和缓存服务器配置方式一样 <--目录查询缓存服务器配置vim /etc/named.rfc1912.zoneszone "magedu.com" IN { type slave; <--类型为从服务器 file "slaves/magedu.com.zone"; masters { 172.18.164.2; }; <--告诉它主服务器是谁}; ~]#named-checkconf <--检查主配置文件语法
步骤二返回172.18.164.2主服务器~]#vim /var/named/magedu.com.zone <--编辑区域数据文件ns2 IN A 172.18.164.3 <--添加一个A记录指向从服务器172.18.164.3~]#named-checkzone magedu.com /var/named/magedu.zone<--检查magedu.com.zone这个区域数据库文件的语法注意:如果从服务器启动了,在修改主服务器数据库文件后要将序列号版本号+1~]#rndc reload <--重载数据库文件~]#rndc status <--确认server is up and running
步骤三
返回172.18.164.3从服务器
~]#rndc reload
~]#systemctl status named.service <--可以查看到从服务器在执行重载命令之后,所做的动作
~]#cd /var/named/slaves <--可以发现magedu.com.zone区域数据库文件已经传递到从服务器的此目录中
~]#dig -t A www.magedu.com @172.18.164.3 <--使用从服务器解析发现解析成功
步骤四
返回172.18.164.2主服务器,添加区域数据文件从而可以对从服务器进行测试
~]#vim /var/named/magedu.com.zone
序列号+1
pop3 IN A 172.18.164.7
~]#rndc reload pop3.magedu.com <--将来区域特别多的时候,就要学会重启某一个区域
~]#systemctl status named.service <--此时查看状态 ,此处缺一张图
此时返回172.18.164.3从服务器
~]#systemctl status named.service <-- 来这里确认从服务器有没有接收到通知
~]#dig -t A pop3.magedu.com @172.18.164.3 <--使用从服务器对pop3进行解析,如果解析成功说明更新成功;成功的标志在于pop3的IP是不是在与前面定义的一致
配置方式与正向从服务器配置方式一致,此处注释略简
步骤一:连接172.18.164.3从服务器vim /etc/named.rfc1912.zones <--编辑从服务器的主配置文件zone "164.18.172.in-addr.arpa" IN { type slave <--说明是从服务器 file "slaves/172.18.164.zone"; <--指明区域数据文件在什么地方 masters { 172.18.164.2; }; <--告诉它主服务器的IP地址};~]#named-checkconf <--检查语法
步骤二:
连接172.18.164.2主服务器,编辑反向解析区域数据文件,为从服务器添加新条目
vim /var/named/172.18.164.zone
序列号+1
IN NS ns2.magedu.com. <--ns记录必须得有
3 IN PTR ns2.magedu.com. <--为ns2填加一个反解记录,不是必须的
~]#named-checkzone 164.18.172.in-addr.arpa /var/named/172.18.164.zone <--检查语法
~]#rndc reload
步骤三:连接172.18.164.3从服务器~]#rndc reload <--重载区域数据文件~]#dig -x 172.18.164.2 @172.18.164.3 <--使用从服务器解析主服务器
步骤四:
在主服务器反向区域库文件中添加pop3对从服务器进行测试
vim /var/named/172.18.164.zone <--编辑反向区域数据库文件
序列号+1
7 IN PTR pop3.magedu.com. <--添加pop3的反解记录
~]#rndc reload
~]#systemctl status named.service <--详细参数的含义,可以查看上题步骤四
~]#ssh root@172.18.164.3 <--返回从服务器172.18.164.3
~]#dig -x 172.18.164.7 @172.18.164.3 <--使用从服务器来反向解析pop3
---------------------至此反向解析的从区域已经制作成功----------------------------------
区域传送:
全量传送:axfr,传送整个数据库,一般在第一次传送
增量传送:lxfr,仅传送变化的数据
dig -t axfr magedu.com @172.18.164.2 <--手动去传送主服务器的正向区域库文件,如果不成功可能防火墙dig -t axfr 164.18.172.in-addr.arpa @172.18.164.2 <--手动去传送主服务器的反向区域库文件 这种传送方式是特别不安全的,通过这两条记录就可以查看出公司的拓扑结构,所以我们的主服务器只能给从服务器做传送,其他服务器想要传送都要拒绝。方法:制作访问控制!!!在尾部有相关说明
重要:主从两台服务器时间要同步
ntpdate命令:连接到互联网上的一个时间服务器
二级域是我们的三级域就可以随意定义,联系公司各个部门,都应该有自己的服务器,因为公司上万人让一台DNS服务器去解析压力会很大,分成部门每个部门一台子域DNS解析服务器,就轻松很多,过程就是在父DNS服务器中定义区域解析条目
例:www.magedu.com <--二级域
www.fin.magedu.com <--三级域<--子域
正向解析区域授权子域的方法:
步骤一:
连接172.18.164.2 父服务器
vim /var/named/magedu.com.zone <--编辑正向区域库文件,且只能编辑正向,新加一个资源记录
序列号+1
fin IN NS ns1.fin <--为子域名加一台ns服务器,这句话意思是fin.magedu.com 这台服务器对应着ns1.fin.magedu.com
ns1.fin IN A 172.18.164.8 <--该A记录就是新加的子域服务器的IP地址
注意:如果子域服务器还有从服务器,这里也可以把从服务器定义进来
~]#rndc reload
步骤二:
新开辟一台服务器,做为一个子域服务器,它本身必须是主服务器(此处关系较为复杂,多想想)
首先配置一个缓存DNS服务器
yum install bind -y <--安装bind
vim /etc/named.conf
...{ 127.0.0.1; 172.18.164.8; } <--此处写明允许listen一个外部的主机
... <--此处和缓存服务器过程一样略...
~]#systemctl start named.service
~]#ss tunlp <--查看53号端口是不是被named进程所占用
vim /etc/named.rfc1912.zones <--新增一个区域主配置文件
zone "fin.magedu.com" IN {
type master;
file "fin.magedu.com.zone"; <--此文件在/var/named/下
};
vim /var/named/fin.magedu.com.zone
$TTL 3600 $ORIGIN fin.magedu.com. @ IN SOA ns1.fin.magedu.com. nsadmin.fin.magedu.com. ( 2016011010 1H 10M 3D 1D ) IN NS ns1 ns1 IN A 172.18.164.8 www IN A 172.18.164.8
<---至此子域服务器就定义好了
步骤三:连接到父域服务器172.18.164.2vim /var/named/fin.magedu.con.zone <--在父域服务器上为子域添加正向解析数据库文件$TTL 3600$ORIGIN fin.magedu.com.@ IN SOA ns1.fin.magedu.com. nsadmin.fin.magedu.com ( 2018010801 1H 10M 1D 2H ) IN NS ns1ns1 IN A 172.18.164.8 <--此处指向子域DNS服务器www IN A 172.18.164.8 ~]#chmod o= fin.magedu.com.zone ~]#chgrp named fin.magedu.com.zone~]#named-checkzone fin.magedu.com /var/named/fin.magedu.com~]#rndc reload ~]#dig -t A www.fin.magedu.com @172.18.164.8 <--使用子域服务器测试解析~]#dig -t A www.fin.magedu.com @172.18.164.2 <--使用父域解析子域服务器
因为子域无法解析父域的服务器,因为子域只是负责父域中的某一块儿,所以他要通过根去解析,此时我们不想让他通过根去解析父域中的内容,因为本来就是自家的事儿;
区域转发:仅准发特定区域的解析请求
zone "ZONE_NAME" IN {
type forward; <--转发
forward {first|only}; <--转发方式
forwarders { SERVER_IP; } <--转发给谁
},
first:首先转发,转发器不响应时自行迭代查询
only:只转发,转发器不响应就一直等着
区域转发步骤一:
连接子域服务器:172.18.164.8
vim /etc/named.rfc1912.zones <--编辑子域服务器的主配置文件
zone "magedu.com" IN {
type forward; <--类型为转发
forward only; <--只转发,转发器不响应就等着
forwarders { 172.18.164.2; 172.18.164.3; }; <--即可以转发主域又可以转发从域
};
~]#named-checkconf
~]#rndc reload
~]#dig -t A www.magedu.com @172.18.164.8 <--使用子域服务器解析父域
www.magedu.com 3600 IN A 172.18.164.2 <--子域成功解析父域
注意:此时只能解析父域服务器上的数据文件,并不去、也不能解析百度,因为父域服务器中没哟定义百度,如果想解析百度需要定义全局转发,只要子域中没有的就让父域去解析
全局转发步骤一:连接子域服务器172.18.164.8vim /etc/named.conf <--编辑子域服务器的主配置文件,的options选项forward only;forworders { 172.18.164.2; }; <--此两项添加到options中,含义只要子域服务器不负责,统统转发给父域服务器,计算机会先找zone中有没有定义区域转发,如果没有就找options
acl:访问控制列表;把一个或多个地址归并为一个命名集合,随后通过此名称即可对此集合内的所有主机实现统一调用。
示例:
递归就只应该对本地客户端递归,不能为互联网上的其他主机递归
acl mynet {
172.16.0.0/16;
127.0.0.0/8;
};
bind有四个内置的acl
none:没有一个主机
any:任意主机
local:本机
localnet:本机所在的IP所属的网络
访问控制指令一:
allow-query {}; 允许查询的主机;白名单
allow-transfer {}; 允许向哪些主机做区域传送,默认为向所有主机;但应该配置为仅允许从服务器;
dig -t A www.magedu.com @172.18.164.2 <--此时默认任意一台主机执行此命令都会被164.2所解析,但是这样及其不安全我们应该如何做呢?
步骤一
~]#vim /etc/named.rfc.1912.zone <--编辑父域主DNS服务器的辅助配置文件即172.18.164.2
allow-transfer { slaves; }; <--在正向解析配置文件zone "magedu.com" IN 中添加slaves访问控制列表;有从服务器就指向slaves没有就为none
~]#vim /etc/namd.conf <--编辑主配置文件
acl slaves {
172.18.164.3;
127.0.0.1; <--注意如果父域主DNS服务器想要解析自己出了在这里定义还要在options中监听127.0.0.1
172.18.164.4; <--添加所有可以通过父域主DNS服务器解析地址 的子域服务器的IP或从服务器的IP
};
对于从DNS服务器172.18.164.3来说就要将/etc/named.rfc.1912.zones 中各个区域配置文件添加上allow-transfer { none; }; <-- 从服务器不需要为任何主机解析地址
访问控制指令二:
allow-recursion {};允许哪些主机向当前DNS服务器发起递归查询请求;默认为全部允许,定义在了/etc/named.conf中的options下的recursion yes <--表示谁都允许,如果只想给本地主机递归可以自己定义
步骤一:
vim /etc/named.conf
acl mynet {
172.16.0.0/16; <--这表明只给这个网络中的所有主机递归
127.0.0.0/8;
};
将resursion yes 替换为 allow-recursion { mynet; };
-------至此即可实现只给这两个网络中的主机递归的效果了-------
访问控制指令三:
allow-update {}; DDNS,是否允许动态更新区域数据库文件中的内容
如果不是专门做DDNS,默认都是allow-update { none; };
vim /etc/named.rfc.1912.zone <--编辑从区域服务器
将allow-update { none; };放置在区域配置文件下方
此时再使用:
dig -t axfr magedu.com @172.18.164.3 就无法将数据库传送过来了,服务器才能保证安全
内网主机访问线上的web服务器,需要解析到外网,然后又回到内网,这样是没必要的。
同一个主机名解析不同用户的请求,可以让他得到不同的地址。如果是来自于内网的我们就解析成172.18.164.2 ,如果是来自互联网的我们就解析成1.1.1.1
在天朝DNS服务器中,一般都有两个IP地址,一个是电信的一个是联通的;我们想要实现电信用户就自动解析为电信的IP地址,联通用户就解析成联通的IP地址,这样速度会很快
在配置文件中定义 view 视图
格式: view internal { <--面向于内网访问 match-clients { 172.16.0.0/8; }; <--这个网络中的所有主机只能通过内网访问 zone "magedu.com" IN { type master; file "magedu.com/internal"; };};
view enternal { <--面向于外网的访问
match-clients { any; }; <--这个网络中的所有主机只能通过外网访问
zone "magedu.com" IN {
type master;
file magedu.com/external
};
};
重启服务
也可以:定义一个acl把联通地址全写进去
定义一个acl把电信地址全写进去
whois有什么用
对named做压力测试
标签:dns
原文地址:http://wscto.blog.51cto.com/11249394/1783071