DNS基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS基础相关的知识,希望对你有一定的参考价值。
DNS:地址解析服务(应用层协议)
udp 53 : 主从同步和查询;(现在大部分使用53/udp)
tcp 53: 主从同步
953 端口为rndc的管理端口
本地解析文件
本地名称解析配置文件:hosts
Linux : /etc/hosts
windows : C:\Windows\System32\drivers\etc\hosts
关于缓存
LINUX客户端无缓存
服务端清空缓存 :rndc flush
WINDOWS客户端
ipconfig/displaydns 查看缓存
ipconfig/flushdns 清空缓存
-------------------------------------------------
DNS查询类型:
递归查询:发出一次请求就能得到最终结果的查询
迭代查询:服务器在发出请求后,有可能得到参考答案,也有可能得到最终答案,通常得到一个最终答案需要发送多次请求,任何主机都不支持迭代查询,所以需要通过dns,帮助主机去查询。
名称服务器:城内负责解析城内的名称的主机;
根服务器:13组服务器
解析类型:
Name ----> IP (正向)
IP ----> Name (反向)注意:正反向解析是两个不同的名称空间,是两棵不同的解析树;
/etc/resolv.conf #DNS客户机配置文件
用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。
[[email protected] ~]# cat /etc/resolv.conf //查看该文件中的内容 # Generated by NetworkManager nameserver 8.8.8.8 //google服务器 nameserver 8.8.4.4 //google备用服务器
resolv.conf关键字
nameserver //定义DNS服务器的IP地址 domain //定义本地域名 search //定义域名的搜索列表 sortlist //对返回的域名进行排序
示例:
domain qq.com //定义本地域名 search www.qq.com qq.c器的IP地址 nameserver 172.18.22.111 //定义DNS服务器的IP地址
DNS查询类型:
递归查询:发出一次请求就能得到最终结果的查询
迭代查询:服务器在发出请求后,有可能得到参考答案,也有可能得到最终答案,通常得到一个最终答案需要发送多次请求,任何主机都不支持迭代查询,所以需要通过dns,帮助主机去查询。
名称服务器:城内负责解析城内的名称的主机;
根服务器:13组服务器
解析类型:
Name ----> IP (正向)
IP ----> Name (反向)注意:正反向解析是两个不同的名称空间,是两棵不同的解析树;
DNS服务器类型
DNS查询类型:递归查询和迭代查询
主DNS服务器:管理和维护所负责解析的域内解析库的服务器,主要用于管理
从DNS服务器:从主服务器或从服务器上复制,他是以主DNS的SOA记录中的序列号来判断是否更新记录
缓存DNS服务器(转发器,不做任何解析,只是帮助客户端去根服务器上问地址,并且缓存)
转发DNS服务器
主DNS服务器:管理和维护所负责解析的域内解析库的服务器 ;解析库由管理维护;从DNS服务器:从主服务器或其他的从服务器哪里“复制”(区域传输)解析 库副本;
序列号:解析库版本号,前提: 主服务器解析库变化时,其序列递增;
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔;
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔;
过期时长:从服务器联系不到主服务器时,多久后停止服务;
“通知”机制:主服务器解析库发生变化时,会主动通知从服务器;
区域传输:
完全传输:传送整个解析库
增量传输:传递解析库变化的那部分内容
DNS:
Domain:
正向:FQDN --> IP(域名--->IP地址)
反向: IP --> FQDN
各需要一个解析库来分别负责本地域名的正向和反向解析
正向区域
反向区域
FQDN: Fully Qualified Domain Name(完全合格域名或完全限制域名)
一次完整的查询请求经过的流程:
Client -->hosts文件 -->DNS Service (递归)
Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名...---vvvv
解析答案:
肯定答案:{ 权威答案:区域负责人的答案
{ 非权威答案
否定答案:请求的条目不存在等原因导致无法返回结果;
区域解析库:由众多RR组成:
资源记录:Resource Record, RR
记录类型:A(IPv4 -->域名,正向解析), AAAA(IPv6), PTR(反向解析), SOA(定义域是由谁负责的), NS(定义解析域的DNS服务器), CNAME(别名), MX(邮件服务)
SOA:Start Of Authority,起始授权记录;一个区域解析库有 且仅能有一个SOA记录,必须位于解析库的第一条记录
A:internet Address,作用,FQDN(域名) --> IP (正向解析)
AAAA: FQDN --> IPv6
PTR: PoinTeR(指针),IP --> FQDN (反向解析)
NS: Name Server,专用于标明当前区域的DNS服务器
CNAME:Canonical Name,别名记录
MX: Mail eXchanger,邮件交换器
资源记录定义的格式:
语法:name [TTL] IN rr_type value
注意:
(1) TTL可从全局继承
(2) @可用于引用当前区域的名字
(3) 同一个名字可以通过多条记录定义多个不同的值;此时 DNS服务器会以轮询方式响应
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的 名字指向同一个值进行定义;此仅表示通过多个不同的名字 可以找到同一个主机
SOA记录
name: 当前区域的名字,例如“magedu.com.”
value: 有多部分组成
(1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com
(3) 主从服务区域传输相关定义以及否定的答案的统一的TTL
例如:
magedu.com. 86400 IN SOA ns.qq.com. nsadmin.qq.com. ( 2018042201 ;序列号 2H ;新时间 10M ;重试时间 1W ;过期时间 1D ;否定答案的TTL值 )
NS记录
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如 ns.qq.com.
注意:一个区域可以有多个NS记录
例如:
#S记录 qq.com. IN NS ns1.qq.com. qq.com. IN NS ns2.qq.com. #记录 (mx1.qq.com. IN A 3.3.3.3 ) (mx2.qq.com. IN A 4.4.4.4 )
注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字 ,都应该在后续有一个A记录
MX记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
一个区域内,MX记录可有多个;但每个记录的value之前应 该有一个数字(0-99),表示此服务器的优先级;数字越小优 先级越高
例如:
#MX记录 qq.com. IN MX 10 mx1.qq.com. qq.com. IN MX 20 mx2.qq.com. #A记录 (mx1.qq.com. IN A 3.3.3.3 ) (mx2.qq.com. IN A 4.4.4.4 )
注意:
(1) 对MX记录而言,任何一个MX记录后面的服务器名字 ,都应该在后续有一个A记录
A记录
name: 某主机的FQDN,例如www.qq.com.
value: 主机名对应主机的IP地址
例如:
#记录 ---"名字可以通过多条记录定义多个不同的值;此时 DNS服务器会以轮询方式响应 "www.qq.com. IN A 1.1.1.1 #一个域名有多个dns主机,两个dns服务器轮询解析。www.magedu.com. IN A 2.2.2.2#录 ---"一个值也可能有多个不同的定义名字;通过多个不同的 名字指向同一个值进行定义;此仅表示通过多个不同的名字 可以找到同一个主机"mx1.magedu.com. IN A 3.3.3.3mx2.magedu.com. IN A 4.4.4.4注意:#A记录 --- "免用户写错名称时给错误答案,可通过泛域名解析进行解 析至某特定地址"$GENERATE 1-254 HOST$ A 1.2.3.$ #定义“$”为变量,变量值为1-254,代表 HOST1对应4.5.6.1 - HOST100对应的 4.5.6.100$GENERATE 1-100 server$ A 4.5.6.$ #定义“$”为变量,变量值为1-100,代表server1对应 4.5.6.1-server100对应的 4.5.6.100*.magedu.com. IN A 5.5.5.5 #加“*”为泛域名解析magedu.com. IN A 6.6.6.6
其它记录
AAAA:(用法与A相同)
name: FQDN
value: IPv6
PTR:
name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN
例如:
#PTR记录(反向解析) 4.3.2.1.in-addr.arpa. IN PTR www.qq.com. "如1.2.3为网络地址,可简写成:" 4 IN PTR www.magedu.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写
CNAME:--- 别名记录
name: 别名的FQDN
value: 真正名字的FQDN
例如:(别名----->真名)
#CNAME记录 www.baidu.com. IN CNAME www.a.shifen.com. "别名" IN CNAME "真名" #A记录 (www.shifen.com. IN A 6.6.6.6)
子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进 行授权
类似根域授权tld:" # NS记录 .com. IN NS ns1.com. .com. IN NS ns2.com. # A记录 ns1.com. IN A 2.2.2.1 ns2.com. IN A 2.2.2.2 "magedu.com. 在.com的名称服务器上,解析库中添加资源记录" # NS记录 qq.com. IN NS ns1.qq.com. #指明名称服务器 qq.com. IN NS ns2.qq.com. qq.com. IN NS ns3.qq.com. # A记录 ns1.qq.com. IN A 3.3.3.1 #给名称服务器地址 ns2.qq.com. IN A 3.3.3.2 ns3.qq.com. IN A 3.3.3.3 "glue record:粘合记录,父域授权子域的记录 (用于将上级服务器和下级服务器建立起来关联关系,由上级服务器把对某个子域的解析能力,授予给域内的某个服务器即名称服务器,并指明服务器IP地址)
BIND的安装配置:
dns服务程序包:bind,unbound(两个软件)
程序名:named,unbound
程序包:yum list all bind*
bind:服务器
bind-libs:相关库
bind-utils:客户端(测试工具)
bind-chroot: /var/named/chroot/ 伪跟、监狱(早期不建议安装)
bind服务器
服务脚本和名称:/etc/rc.d/init.d/named
/usr/lib/systemd/system/named.service
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones,(rfc:请求注解文档) /etc/rndc.key (辅助配置文档,前提使用rpm包安装)
解析库文件:/var/named/ZONE_NAME.ZONE
区域配置文件:/etc/named.rfc1912.zones,
脚本配置文件:/etc/sysconfig/name
日志文件:var/log/name.log
根目录:cd /var/named/
存储13跟服务器地址: /var/named/named.ca
提供本地回环地址解析文件 /var/named/named.localhost 和 /var/named/named.loopback
注意:
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根区域文件;/etc/named.ca
(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost(本地主机) 和本地回环地址的解析库
rndc : (remote name domain controller,)远程管理工具,默认与bind安装在同一主机,且只能通过127.0.0.1连接 named进程 : 提供辅助性的管理功能;rndc也是一个服务、也需要监听在套接字上,默认使用 953/tcp 端口,“/etc/rndc.key ”就是rndc 连接ndmed 时的共享密钥(域共享密钥)。
配置文件
主配置文件: "/etc/named.conf" 和 "/etc/named.rfc1912.zones"
全局配置:options {};
日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪 些zone
zone "ZONE_NAME" IN {};
注意:任何服务程序如果期望其能够通过网络被其它主机访 问,至少应该监听在一个能与外部主机通信的IP地址上 。
"区域类型"
"主master"
"从slave"
"跟hint"
"转发 forward"
"监听端口类型:"
# localhost(本机所有地址)
# any(所有)
# none (什么也没有)
# localnet 相同子网
主配置文件语法检查:(检查/named.conf和named.rfc1912.zones文件的语法错误)
~]# named-checkcof
解析库文件语法检查: ("域名" 文件)
~]# named-checkzone "magedu.com" /var/named/magedu.com.zone
更改完配置文件,从读配置文件
~]# rndc status | reload ;
~]# service named reload ;从新载读配置文件,不需要重启,(能使用此命令,就不要从起服务)
~]# rndc reload #重新读取配置文件,有时候会无效,需要重新启动服务
~]# rndc flush #清除DNS缓存
主配置文件 :/etc/named.conf 文件,设置一些全局变量
" 使用"//" 或"/* */" 表示注释" 1、先对要操作的配置文件进行备份 7 ~]# cp /etc/named.conf{,.bak} 2、编辑配置文件 /etc/named.conf [[email protected] ~]# vim /etc/named.conf options { listen-on port 53 { 172.18.6.77 ; 127.0.0.1; }; "---> 监听端口类型" /* 1)、使用"//" 或"/* */"注释掉,或删除 2)、添加监听的外部地址, "外部地址 ; 回环口地址 " 3)、更改监听端口类型:"localhost(本机所有地址)、 any(所有)、none (什么也没有)、 localnet 相同子网" 示例: listen-on port 53 { localhost; }; */ // listen-on-v6 port 53 { ::1; }; #“//”表示注视掉ipv6回环扣地址,删除也可以,默认模式为: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"; allow-query { any; }; "---> 允许谁来查询,访问 " 1)、使用"//" 或"/* */"注释掉,或删除 2)、监听端口类型:"localhost(本机所有地址)、 any(所有)、none (什么也没有)、 localnet 相同子网" allow-transfer {地址;}; //安全加固,允许谁从我这复制区域数据, (辅助DNS) recursion yes; //是否开启转发功能,允许递归查询 yes (若DNS服务器上没有查询记录,则去根服务器上查询‘迭代’) //#dnssec: 建议测试时关闭dnssec;设为no // dnssec-enable no ; 是否开启安全认证 ,建议no 或注释掉 // dnssec-validation no ; 是否开启安全认证 ,建议no 或注释掉 bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; #全局配置:options {}; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; #日志子系统配置:logging {}; zone "." IN { #域名 "." type hint; file "named.ca"; #域名解析zone文件 }; #区域定义 :zone {}; 示例:创建qq.com域 zone "qq.com" IN { #创建新的域,域名 "magedu.com" type hint; file "qq.com.zone"; #域名qq.com 的解析zone拓展配置文件 }; #区域定义 :zone {} include "/etc/named.rfc1912.zones"; #指定拓展的区域数据库文件,zones主配置文件 include "/etc/named.root.key";
zone域扩展配置文件,“/var/named/” 目录下
#在该文件中所有空格和@都表示该域的域名,所以若是写全称则需要在后面加上.表示结束,若不加,则自动补齐域名,该文件的格式是 name [TTL] IN 类型 value其中TTL和IN可以省略 $TTL 1D(全局的TTL时间,表示该DNS会在windows电脑和linux服务器等接受端保存多久) $ORIGIN magedu.com. # 加个宏(默认补齐) (引用当前域名) (固定关键字) (SOA类型)(表示主DNS的FQDN,配合A记录能解析即可,)(管理员邮箱,其中不可以使用@,所以只能使用.) @ IN SOA ds1 rname.invalid. ( 2018042021 ; serial (序列号,主要作用是标识主服务器的数据库文件发生变化,数字递增,若不变,辅助DNS不会更新数据库文件) 1D ; refresh #每隔多久推送数据库文件 1H ; retry #发生错误多少时间重试 1W ; expire #多长时间后过期 0 ) ; minimum #错误记录缓存多少时间
配置主DNS服务器(正向)
主DNSserver负责的域,解析不到就会发起迭代查询,
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = "主从结构图" master(主) push(主,更新推送) slave(从) l- - - - l - - - - > - - - - - > l- - - - l l l l l DNS解析请求 l- -l l- - - - l <- - - - - - <- - - - l- - - - l < - - - <- - l- -l ns1.server pull(从,周期性下载) ns2.server 客户端(pc) = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = "DNS解析结构图" www.magedu.com(wed) DNS.server(主) l- - - - l l- - - - l DNS解析请求 l l l l < - - - <- - l- -l l- - - - l l- - - - l - - > - - -> l- -l ns1.server ns1.server DNS解析结果 客户端(pc) ^^^ vvv - - - - - - - - - - - - - - - - 收到DNS解析结果,有了地址再去访问wed服务 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
1) 在主配置文件中定义区域
~]# vim /etc/named.conf #修改以下部分即可 options { listen-on port 53 { localhost; } #监听端口类型 ... allow-query { any; }; #允许所有人访问 recursion yes; #默认开启转发功能,如果仅提供内网服务,关闭即可“no”,我们这里开启否则不能实现迭代查询。 allow-transfer {172.16.100.12;}; #安全加固,允许谁从我这复制区域数据,允许辅助DNS }; ~]# vim /etc/named.conf 文件 或 "/etc/named.rfc1912.zones" 文件 (操作文档前做好备份,建议在后者操作) 格式: zone "ZONE_NAME" IN { type { master; }; file "ZONE_NAME.zone"; }; 区域类型: 主master 从slave 跟hint 转发 forward ~]# cp /etc/named.rfc1912.zones{,.bak} #操作文档前做好备份 ----------------------------- ~]# vim /etc/named.rfc1912.zones zone "qq.com" IN { #域名 type master; #类型,主人 file "qq.com.zone"; # 区域拓展数据库名字 }; ---------------------------------- 主配置文件语法检查:(检查/named.conf和named.rfc1912.zones文件的语法错误) ~]# named-checkco
(2) 定义区域解析库文件
出现的内容
宏定义
资源记录
~]# cp -p /var/named/named.loopback /var/named/qq.com.zone #复制模板文件进行操作,-p 保留原文件权限,和所属组。 如果没有加 -p 执行下面两条命令 ~]# chmod 640 qq.com.zone ~]# chown :named qq.com.zone -rw-r----- 1 root named 152 Jun 21 2007 magedu.com ------------------------------------------ ~]# vim /var/named/qq.com.zone $TTL 86400 $ORIGIN qq.com. @ IN SOA ns1.qq.com. admin.qq.com ( (magedu.com.zone) 1 ; serial (序列号,主要作用是标识主服务器的数据库文件发生变化,数字递增,若不变,辅助DNS不会更新数据库文件) 1D ; refresh #每隔多久推送数据库文件 1H ; retry #发生错误多少时间重试 1W ; expire #多长时间后过期 0 ) ; minimum #错误记录缓存多少时间 IN NS ns1 IN NS ns2 IN MX 10 mx1 IN MX 20 mx2 ns1 IN A 172.16.100.11 ns2 IN A 172.16.100.12 mx1 IN A 172.16.100.13 mx2 IN A 172.16.100.14 www IN CNAME websr websrv IN A 172.16.100.11 websrv IN A 172.16.100.12 --------------------------------------------------- 解析库文件语法检查: ("域名" 文件) ~]# named-checkzone "qq.com" /var/named/qq.com.zone 从新加载配置文件“systemctl reload named ”命令也可以,建议使用“rndc reload ” ~]# rndc reload 本机测试 IP地址 “127.0.0.1 ” ~]# dig www.qq.com @172.16.100.11 #默认查询A记录 ~]# dig -t NS www.qq.com @172.16.100.11 #指定查询NS记录 ~]# dig -t NS . @172.16.100.11 #查询跟的NS记录 ~]# dig +teace www.qq.com #跟踪解析过程 ~]# dig -t mx qq.com #查询谁是qq.com 域的邮件服务器 ========================== 反向查询,通过IP查域名 ~]# dig -t prt 11.100.16.172.in-addr.arpa @172.16.100.11 #反向解析域名的 ~]# dig -x 172.16.100.11 @172.16.100.11 #反向解析域名的 ========================== 客户端,更改DNSserv指向,网卡配置文件更改 ~]# dig +bufsize=1200 +norce @a.root-servers.net 命令执行的结果就是/var/named/named/ca
反向区域
区域名称:网络地址反写.in-addr.arpa.
172.16.100. --> 100.16.172.in-addr.arpa.
(1) 在主配置文件中定义区域
~]# vim /etc/named.conf 文件配置与正向解析相同, ----------------------------- ~]# vim /etc/named.rfc1912.zones zone "100.16.172.in-addr.arpa." IN { #域名 type master; #类型,主 file "100.16.172.in-addr.arpa.zone"; # 区域拓展数据库名字 }; ---------------------------------- 主配置文件语法检查:(检查/named.conf和named.rfc1912.zones文件的语法错误) ~]# named-checkco
(2) 定义区域解析库文件
注意:不需要MX,以PTR记录为主
~]# cp -p /var/named/named.loopback /var/named/100.16.172.in-addr.arpa.zone #复制模板文件进行操作,-p 保留原文件权限,和所属组。 如果没有加 -p 执行下面两条命令 ~]# chmod 640 qq.com.zone ~]# chown :named qq.com.zone -rw-r----- 1 root named 152 Jun 21 2007 qq.com ------------------------------------------ ~]# vim /var/named/100.16.172.in-addr.arpa.zone $TTL 86400 $ORIGIN 100.16.172.in-addr.arpa. @ IN SOA ns1.qq.com. admin.qq.com. ( 2018042201 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS ns1.qq.com. #注意域名结尾加“.”否则会加上区域后缀, IN NS ns2.qq.com. #就会变成:ns1.magedu.com.100.16.172.in-addr.arpa. 11 IN PTR ns1.qq.com. 11 IN PTR www.qq.com. 12 IN PTR mx1.qq.com. 12 IN PTR www.qq.com. 13 IN PTR mx2.qq.com. --------------------------------------------------- 解析库文件语法检查: ("域名" 文件) ~]# named-checkzone "100.16.172.in-addr.arpa." /var/named/100.16.172.in-addr.arpa.zone 反向查询,通过IP查域名 ~]# dig -t prt 11.100.16.172.in-addr.arpa @172.16.100.11 #反向解析域名的 ~]# dig -x 172.16.100.11 @172.16.100.11 #反向解析域名的
从服务器(辅助DNS)
辅助DNS还可以在配置子辅助DNS,但是一般不这么用,
1、应该为一台独立的名称服务器
2、主服务器的区域解析库文件中必须有一条NS记录指向从服务器
3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于" /var/named/slaves/ "目录中
4、主服务器得允许从服务器作区域传送
5、主从服务器时间应该同步,可通过ntp进行;
6、bind程序的版本应该保持一致;否则,应该从高,主低 (centos6.9从和7.4主,可以兼容)
定义从区域的方法:
zone "ZONE_NAME" IN {
type slave;
masters { MASTER_IP; };
file "slaves/ZONE_NAME.zone";
};
主DNS配置: ~]# vim /etc/named.conf # options { allow-transfer {172.16.100.12;}; #安全加固,允许谁从我这复制区域数据, };#如果不配置,则可以使用,“dig -f axfr qq.com @172.16.100.11 ”将主DNS上对应的解析域的解析库文件信息挡下来, ~]# vim /var/named/qq.com.zone (区域解析库文件中必须有一条NS记录指向从服务器 ) @ IN NS ns2 ns2 IN A 172.16.100.12 辅助上的配置: ~]# vim /etc/named.conf #修改以下部分即可 options { listen-on port 53 { localhost; } #监听端口类型 ... allow-query { any; }; #允许任何人访问 allow-transfer {none ;}; #安全加固,允许谁从我这复制区域数据,已经是辅助DNS了所以关闭此功能,谁都不允许。 }; ~]# vim /etc/named.rfc1912.zones zone "qq.com" IN { #创建区域 type slave; #类型奴隶 masters { 172.16.100.11; }; #主的IP地址 file "slaves/qq.com.slave.zone"; #zone拓展配置文件 }; ~]# rmdc reload #从读配置文件
子域
子域授权:分布式数据库
正向解析区域子域方法
定义一个子区域:
情况一,在在总部主DNS上进行授权,分部(天津)不搭建DNS服务器,
方式一:当做记录来写(容错性不高 )
~]# vim /var/named/qq.com.zone #主DNS只需要在“qq.com.zone”父域中添加一条记录即可, www.tj IN A 172.16.100.125 #分部天津的wed服务器地址,当做记录来写 mail.tj IN A 172.16.100.126 #分部天津的邮件服务器地址
方式二:在创建一个新的域,(容错性提高,分离出来的一个域,不受父域影响)
/etc/named.conf #主配置文件同上主DNS配置, ~]# vim /etc/named.rfc1912.zones zone "tj.qq.com" IN { #子域名 type master; #类型,主人 file "tj.qq.com.zone"; # 子区域拓展数据库名字 }; ~]# vim /var/named/tj.qq.com.zone" $TTL 86400 $ORIGIN tj.qq.com.zone. @ IN SOA ns1. admin.qq.com. ( 2018042201 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS ns1 ns1. IN A 172.16.100.14 www IN A websrv websrv IN A 172.16.100.123
情况二:总部业务量大,分部(天津)业务量也大,对应的父域,和子域访问量都很大,一台服务器压力太大,建议吧子域剥离出去,
注意:父域和子域不再同一DNS服务器上时,父域把子域的DNS管理权委派给另外 一台DNS服务器(子域服务器),委派概念。分部建一台单独的DNS服务器,把子域,迁移过去。
父域和子域再同一DNS服务器上时,就不需要委派了。总部DNSserver配置 :
~]# vim /var/named/qq.com.zone #主DNS只需要在“qq.com.zone”父域中添加一条委派记录 tj IN NS ns4.qq.com #父域把子域的DNS管理权委派给ns4.qq.com,DNS服务器(子域服务器) #“ns4.qq.com”这个名无所谓,只是通过这个名字找到子域服务器IP地址的。 ns4 IN A 172.16.100.14 #子域的DNSserver IP地址
分部DNSserver配置:
/etc/named.conf #主配置文件同上主DNS配置, ~]# vim /etc/named.rfc1912.zones #创建子域 zone "tj.magedu.com" IN { #子域名 type master; #类型,主人 file "tj.qq.com.zone"; # 子区域拓展数据库名字 }; ~]# vim /var/named/tj.qq.com.zone" $TTL 86400 $ORIGIN tj.qq.com.zone. @ IN SOA ns1. admin.qq.com. ( 2018042201 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS ns1 ns1. IN A 172.16.100.14 www IN A websrv websrv IN A 172.16.100.123
注意:关闭dnssec功能:
~]# vim /etc/named.conf dnssec-enable no; dnssec-validation no;
实例1.模拟实现根环境,其中最后一级与配置主从DNS
统一配置部分:
centos7最小化安装,需要的命令补齐包 yum search bash yum install bash-completion -y 更改主机名 hostnamectl set-hostname dns1 设置网卡 [[email protected] ~]# nmcli connection modify System\ ens33 ipv4.method manual ipv4.addresses 192.168.117.141/24 [[email protected] ~]# systemctl restart network 安装包 ~]# yum install -y bind #安装bind服务包 ~]# yum install bind-utils.x86_64 -y #安装bind客户端包(工具包) 删除包 ~]# yum remove bind 服务 ~]# systemctl restart named.service ~]# systemctl status named.service 主配置文件 ~]# vim /etc/named.conf 配置文件 ~]# vim /etc/named.rfc1912.zones 拓展zone配置文件 ~]# /var/named/zone_name.zone ~]# vim/var/named/named.ca #将该文件中的真正的根服务器IP地址更改为自己设定的"."(根)的地址,删除多余的项 ~]# for n in {0..4} ;do scp -rp /var/named/named.ca [email protected]$n:/var/named/named.ca; done #将修改好的配置文件发送给其他主机 ~]# vim /etc/named.conf #除了客户端都需要此操作 options { // listen-on port 53 { 127.0.0.1; }; #注释 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"; // allow-query { localhost; }; #注释 dnssec-enable no; #改为no dnssec-validation no; #改为no };
根服务器配置
~]# vim /etc/named.conf options { listen-on port 53 { localhost; }; #监听端口类型 或注释 // 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"; allow-query { localhost; }; #允许本地所有地址访问 或注释 dnssec-enable yes; dnssec-validation yes; ~]# vim /etc/named.rfc1912.zones zone "." IN { type master; file "root.zone"; }; #创建新的"."域 /* 将原有的"."域注释掉 zone "." IN { type master; file "root.zone"; }; */ ~]# ~]# cp -p /var/named/named.localhost /var/named/root.zone #复制模版文件 ~]# vim /var/named/root.zone #编辑zone文件 $TTL 1D @ IN SOA dns1 rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 0 ) ; minimum @ NS dns1 com NS dns2 #委派com 域至ns2 DNSserver dns1 A 192.168.117.11 dns2 A 192.168.117.12 # ns2 IP地址 [[email protected] named]# systemctl restart named [[email protected] named]# systemctl enable named
com服务器
options { listen-on port 53 { localhost; }; #监听端口类型 或注释 // listen-on-v6 port 53 { ::1; }; allow-query { localhost; }; #允许本地所有地址访问 或注释 dnssec-enable no; #改为no dnssec-validation no; #改为no }; [[email protected] named]# vim /etc/named.rfc1912.zones zone "com" IN { type master; file "com.zone"; }; #创建"com"域 ~]# cp -p /var/named/named.localhost /var/named/com.zone #复制模版文件 [[email protected] named]# vim /var/named/com.zone $TTL 1D @ IN SOA dns1 rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1 qq NS dns2 #委派qq.com 域至ns2 DNSserver主 qq NS dns3 #委派qq.com 域至ns3 DNSserver从 dns1 A 192.168.117.12 dns2 A 192.168.117.13 # ns2 IP地址主 dns3 A 192.168.117.14 # ns3 IP地址从 www A 20.20.20.20 [[email protected] named]# systemctl restart named [[email protected] named]# systemctl enable named
qq.com主服务器
~]# vim /etc/named.conf options { listen-on port 53 { localhost; }; #监听端口类型 或注释 // listen-on-v6 port 53 { ::1; }; allow-query { localhost; }; #允许本地所有地址访问 或注释 allow-transfer {192.168.117.14;}; #安全加固,允许谁从我这复制区域数据,允许辅助DNS dnssec-enable no; #改为no dnssec-validation no; #改为no }; [[email protected] named]# vim /etc/named.rfc1912.zones zone "qq.com" IN { type master; file "qq.com.zone"; }; [[email protected] named]# cp -p /var/named/named.localhost /var/named/qq.com.zone [[email protected] named]# vim /var/named/qq.com.zone $TTL 1D @ IN SOA ds1 rname.invalid. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 0 ) ; minimum @ NS ds1 @ NS ds2 ds1 A 192.168.117.13 ds2 A 192.168.117.14 www A 3.3.3.3 ftp A 1.1.1.1 [[email protected] named]# systemctl restart named [[email protected] named]# systemctl enable named
qq.com从(辅助)服务器
~]# vim /etc/named.conf options { listen-on port 53 { localhost; }; #监听端口类型 或注释 // listen-on-v6 port 53 { ::1; }; allow-query { localhost; }; #允许本地所有地址访问 或注释 allow-transfer {none;}; #安全加固,允许谁从我这复制区域数据,已是辅助DNS,所以关闭。 dnssec-enable no; #改为no dnssec-validation no; #改为no }; ~]# ~]# cp -p /var/named/named.localhost /var/named/root.zone #复制模版文件 ~]# vim /var/named/root.zone #编辑zone文件 [[email protected] named]# vim /etc/named.rfc1912.zones zone "qq.com" IN { type slave; # masters {192.168.117.13;}; file "slaves/qq.com.slave.zone"; }; [[email protected] named]# systemctl restart named [[email protected] named]# systemctl enable named
本地缓存DNS配置
~]# vim /etc/named.conf options { listen-on port 53 { localhost; }; #监听端口类型 // listen-on-v6 port 53 { ::1; }; allow-query { localhost; }; #允许本地所有地址访问 dnssec-enable no; #改为no dnssec-validation no; #改为no };
客户端测试
dig www.qq.com @192.168.117.10
简单实验:DNS视图--view (CDN)
1、创建ACL权限,并在view引用acl ~]# vim /etc/named.conf acl beijingnet { 192.168.117.0/24; }; acl tianjinnet { 172.18.0.0/16; }; options { listen-on port 53 { any; }; 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"; allow-query { any;localhost;}; view bjview { #创建视图bjview: match-clients {beijingnet;}; 引用acl,beijingnet include "/etc/named.rfc1912.zones.bj"; }; view tjview { match-clients {tianjinnet;}; include "/etc/named.rfc1912.zones.tj"; }; 2、备份原文件,并复制zone配置文件,为每一个view 创建自己的含zone配置文件,注意权限和所属组 [[email protected] ~]# ll /etc/ |grep named.rf -rw-r----- 1 root named 1047 Apr 21 08:11 named.rfc1912.zones.bak #备份原文件 -rw-r----- 1 root named 1064 Apr 21 08:22 named.rfc1912.zones.bj -rw-r----- 1 root named 1064 Apr 21 08:22 named.rfc1912.zones.tj 3、在view 的zone配置文件中 中创建根域,并创建测试域 ~]# vim /etc/named.rfc1912.zones.bj zone "." IN { type hint; file "named.ca"; }; zone "magedu.com" IN { type master; file "magedu.com.zone.bj"; }; 4、同上,在view 的zone配置文件中 中创建根域,并创建测试域 ~]# vim /etc/named.rfc1912.zones.tj zone "." IN { type hint; file "named.ca"; }; zone "magedu.com" IN { type master; file "magedu.com.zone.tj"; }; 5、创建域的zone文件,注意权限和所属组 ~]# ll /var/named/ -rw-r----- 1 root named 178 Apr 21 08:38 magedu.com.zone.bj -rw-r----- 1 root named 170 Apr 21 08:26 magedu.com.zone.tj 6、配置zone文件 ~]# vim /var/named/magedu.com.zone.bj $TTL 1D @ IN SOA ns2 rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS ns1 ns1 A 192.168.117.142 www A 192.168.117.188 7、配置zone文件 ~]# vim /var/named/magedu.com.zone.tj $TTL 1D @ IN SOA ns2 rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS ns2 ns2 A 172.18.6.6 www A 172.18.6.123 ~ 8、客户端测试: dig www.magedu.com @172.18.252.102 dig www.magedu.com @192.168.117.142
以上是关于DNS基础的主要内容,如果未能解决你的问题,请参考以下文章
C#基础系列07 --你值得拥有-- 自动化批量DNS名称解析测试