DNS 西安交通大学 李思 2004年8月23日
主要内容 DNS的原理与基本知识 DNS服务器的安装与配置 DNS客户端工具dig DNS解析过程 DNS基本概念 全局配置文件 管理域数据文件 DNS客户端工具dig
DNS概述 DNS=Domain Name System 提供域名与IP地址之间的相互映射关系 DNS的三要素: 为什么需要分级的域名结构? 名字空间:映射关系 服务器:全球分布的松耦合高可靠动态数据库 客户端:向服务器查询名字空间的程序 为什么需要分级的域名结构? IP地址难以记忆 如果不分级,容易造成重名,导致管理混乱
域名解析过程(1) 让我们来看一个真实的域名解析过程: 202.117.21.100 ping www.google.com
What’s the IP address of www.gogole.com? 域名解析过程(2) 向本机所配置的DNS服务器发出查询请求 202.117.0.20 / dec3000.xjtu.edu.cn What’s the IP address of www.gogole.com? 202.117.21.100 ping www.google.com
What’s the IP address of www.gogole.com? 域名解析过程(3) dec3000向根域名服务器a发出查询请求 a.root-servers.net 202.117.0.20 / dec3000.xjtu.edu.cn What’s the IP address of www.gogole.com? 202.117.21.100 ping www.google.com
Here’s a list of the com name servers. Ask one of them. 域名解析过程(4) 根域名服务器a返回一组服务器提名 a.root-servers.net Here’s a list of the com name servers. Ask one of them. 202.117.0.20 / dec3000.xjtu.edu.cn 202.117.21.100 ping www.google.com
What’s the IP address of www.gogole.com? 域名解析过程(5) dec3000向com域名服务器f发出查询请求 What’s the IP address of www.gogole.com? a.root-servers.net 202.117.0.20 / dec3000.xjtu.edu.cn f.gtld-servers.net 202.117.21.100 ping www.google.com
Here’s a list of the google.com name servers. Ask one of them. 域名解析过程(6) com域名服务器f返回一组服务器提名 Here’s a list of the google.com name servers. Ask one of them. a.root-servers.net 202.117.0.20 / dec3000.xjtu.edu.cn f.gtld-servers.net 202.117.21.100 ping www.google.com
What’s the IP address of www.gogole.com? 域名解析过程(7) dec3000向google域名服务器ns1发出查询请求 What’s the IP address of www.gogole.com? a.root-servers.net 202.117.0.20 / dec3000.xjtu.edu.cn ns1.google.com f.gtld-servers.net 202.117.21.100 ping www.google.com
Here’s the IP address for www.gogole.com 域名解析过程(8) google域名服务器ns1返回所需的IP地址 a.root-servers.net 202.117.0.20 / dec3000.xjtu.edu.cn Here’s the IP address for www.gogole.com ns1.google.com f.gtld-servers.net 202.117.21.100 ping www.google.com
Here’s the IP address for www.gogole.com 域名解析过程(9) dec3000把结果转达给202.117.21.100 Here’s the IP address for www.gogole.com a.root-servers.net 202.117.0.20 / dec3000.xjtu.edu.cn ns1.google.com f.gtld-servers.net 202.117.21.100 ping www.google.com
域名解析过程小结 任何一台DNS服务器上都不会也不可能保存全球所有域名的信息 dec3000充当了一种用户代理的角色 这种角色用一个专门的名词“递归” (recursion)来表示 问题:是不是所有DNS服务器允许递归? 整个过程复杂、不利于提高速度 问题:有没有解决办法?
带缓存的解析过程 (1) 经过了前面的解析过程,dec3000知道了以下内容: .com域名服务器列表的名字和IP .google.com域名服务器列表的名字和IP www.google.com的IP 我们再来看下一个解析过程 202.117.21.100 ping mail.google.com
What’s the IP address of mail.gogole.com? 带缓存的解析过程 (2) 向本机所配置的DNS服务器发出查询请求 a.root-servers.net 202.117.0.20 / dec3000.xjtu.edu.cn What’s the IP address of mail.gogole.com? ns1.gogole.com f.gtld-servers.net 202.117.21.100 ping mail.google.com
What’s the IP address of mail.google.com? 带缓存的解析过程 (3) dec3000已经缓存了google域名服务器ns1的IP,所以它直接向ns1.google.com发出查询请求 What’s the IP address of mail.google.com? a.root-servers.net 202.117.0.20 / dec3000.xjtu.edu.cn ns1.google.com f.gtld-servers.net 202.117.21.100 ping mail.google.com
Here’s the IP address for mail.google.com 带缓存的解析过程 (4) google域名服务器ns1返回所需的IP地址 a.root-servers.net 202.117.0.20 / dec3000.xjtu.edu.cn Here’s the IP address for mail.google.com ns1.google.com f.gtld-servers.net 202.117.21.100 ping mail.google.com
Here’s the IP address for mail.google.com 带缓存的解析过程 (5) dec3000把结果转达给202.117.21.100 Here’s the IP address for mail.google.com a.root-servers.net 202.117.0.20 / dec3000.xjtu.edu.cn ns1.google.com f.gtld-servers.net 202.117.21.100 ping mail.google.com
缓存带来的新问题 什么时候应该更新缓存? DNS服务器不能永远使用其cache中的数据,否则权威服务器的修改对网络上的其他主机就不起作用 如果.google.com域名服务器列表发生了变化,而dec3000依然使用缓存中的数据,必然会发生问题 什么时候应该更新缓存? 设置一个定时器 规定缓存的有效时间
生存时间(Time To Live, TTL) 权威服务器通过在其数据中指定TTL告诉缓存DNS服务器可以使用cache的最长时间 如果在cache中的数据超过其TTL值,DNS服务器必须丢弃此数据,并从权威服务器中取得新的数据 TTL值的选择需要综合考虑性能和数据一致性 小的TTL值会提高数据的一致性,但会加重DNS服务器的负载,降低其他域对所在域的查询速度。 大的TTL值会加快DNS查找,但在更改过DNS数据之后可能会造成其他DNS服务器与权威服务器数据的不一致
域(Domain)与域名 域名空间是一种可无限扩展的树形结构 域:指域名空间的任意一个子树 完全域名(Fully Qualified Domain Name)是从根结点到目标结点路径上所有结点名字的组合 cn域 com域 edu.cn域 cn com edu www net 263 ibm • xjtu ftp mail sun 163 google
授权(delegation) 授权是指某个域的管理员将其子域的域名管理权限授予其它人 DNS中的授权与一个大机构的责任授权相似,每个部分被划分为更小的部门。 被授权组织通过建立自己的DNS服务器(权威服务器),服务器管理员负责维护属于它的网络的主机信息 一旦将管理权授于它的子域,子域所对应的机构就有权建立适合它自己需要的结构。如同用户能够建立它的本地子目录一样 取得授权的子域有权进一步将低级域的管理权授予网络上的成员分区和部门 上级域名服务器必须知道下级服务器的IP地址
Zone:管理域 管理域是指受同一单位/管理员直接管理的一部分名字空间 在多数情况下,每一级域名就是一个zone cn zone edu.cn域 edu.cn zone cn zone xjtu.edu.cn zone cn com edu www net 263 ibm • xjtu ftp mail sun 163 google
Domain的划分:Zone root edu.cn domain edu.cn zone pku.edu.cn zone .net .cn .com pku.edu.cn zone xjtu.edu.cn zone net edu com xjtu www ftp pku www ftp www ftp
DNS服务器的分类(1) 权威服务器:直接管理某个zone内所有域名的服务器(前提:取得授权) 缓存服务器 主服务器(Primary):从本地文件读取数据。管理域名时只需要修改主服务器上的数据。 辅服务器(Secondary):主服务器的镜像,定期从主服务器复制数据,保证本地数据与主服务器一致 秘密服务器(Stealth):未经授权的权威服务器,略 缓存服务器 把从权威服务器取回来的数据在本地临时保存一段时间,用于加快访问速度
DNS服务器的分类(2) 一台DNS服务器可以同时作为主服务器和辅服务器 一台DNS服务器可以同时作为权威服务器与缓存服务器 作为某些zone的主服务器 同时作为其它zone的辅服务器 一台DNS服务器可以同时作为权威服务器与缓存服务器 所管辖zone的权威服务器 其它zone的缓存服务器
根域名服务器 根域名服务器含有所有项级域名的权威服务器信息。当收到查询项级域名服务器的请求时,根域名服务器会给出相应项级域名服务器的名字及IP地址,然后再由这些服务器给出二级的域名服务器及地址。 根域名服务器在地址解析中起着十分重要的作用,为了保证Inernet上的所有DNS查询能够获得及时的响应,目前全球共设13个根域名服务器 我国在2004年2月计划引进一台根域名服务器(辅服务器)
反向解析 反向解析提供IP地址到域名的映射关系 反向解析的作用: in-addr.arpa反向域 示例 便于记忆、便于进行安全检查 in-addr.arpa反向域 In-addr.arpa反向域使用与IP地址相反的表示方法 如www.xjtu.edu.cn的IP地址为202.117.1.13,其反向域表示法为:13.1.117.202.in-addr.arpa 示例 dig @202.117.0.20 13.1.117.202.in-addr.arpa PTR 注意:反向解析并不需要与正向解析严格对应
BIND简介 BIND的是指ISC BIND 是以Named为核心的一套软件的集合,其DNS服务器程序叫做Named Internet Systems Consortium Berkeley Internet Name Domain 是以Named为核心的一套软件的集合,其DNS服务器程序叫做Named 它是目前Unix/Linux平台上使用最广泛的DNS服务器软件 Bind同时具有主服务器、辅服务器、缓存服务器的功能 目前最新版本为9.3.0
bind的安装 RPM安装 源代码编译安装 安装:rpm –ivh bind-xxxxx.rpm 卸载:rpm –e bind-xxxxx 解压:# tar zxvf bind-9.3.0rc2.tar.gz 配置:# ./configure 编译:# make 安装:# make install 启动:# /usr/local/sbin/named
Named的启动与停止 临时启动/停止Named的三种方法 每次开机自动启动Named的三种方法 #service named start/stop/reload #/etc/rc.d/init.d/named start/stop/reload #rndc stop/reload 前两种方法仅适用于RPM安装 每次开机自动启动Named的三种方法 #ntsysv,选中named #setup,系统服务,选中named 在/etc/rc.d/rc.local中添加 /usr/local/sbin/named
named的配置文件 named的配置文件可以分为两类: 正文与注释 全局配置文件 管理域文件 配置文件的正文以;表示一行结束 /etc/named.conf 定义管理域、全局权限、日志等 管理域文件 一般位于/var/named下 可以在全局配置文件中指定 正文与注释 配置文件的正文以;表示一行结束 以//或者#打头的行是注释
全局配置文件 acl logging options zone 定义一个IP地址列表,用于访问控制 指定域名服务器日志文件中记录何种信息,以及把日志文件存放在何处 options 控制服务器的全局设置,并设定其它配置行的默认值 zone 定义某个zone的解析数据
named.conf实例分析(1) acl XJTU {localhost; 202.117.0.0/18;}; options { directory “/var/named”; //管理域数据文件目录 allow-query { XJTU ; }; //允许查询 allow-recursion { XJTU ; }; //允许递归 allow-transfer { none; }; //允许批量传输 }; zone “xjtu.edu.cn" in { type master; //主权威服务器 file “db.xjtu.edu.cn”; //数据文件名 allow-query { any; }; //允许查询 allow-transfer { …; }; //其它secondary name server
named.conf实例分析(2) zone “xjtu.com” in { type slave; //从服务器 file “db.xjtu.com”; //数据文件名 masters { 202.117.0.20; }; //主服务器名 allow-query { any; }; //允许查询 }; //根域名服务器列表是每个常规的DNS服务器都必须有的 zone "." in { type hint; //根域名服务器列表l类型 file "named.cache"; //本地网络解析 zone "0.0.127.in-addr.arpa" in { type master; file "db.127.0.0";
管理域数据文件(1) DNS管理域数据文件用于主权威服务器中,它记录了管理域内IP地址与域名的对应关系 一般而言,每个管理域对应一个正向解析文件 每个网络对应一个反向解析文件 建议文件名使用统一的命名规则,如 db.xjtu.edu.cn db.xjtu.com db.202.117.48 db.202.117.21 管理域数据文件的首行一般指定默认的TTL值 $TTL 86400
管理域数据文件(2) 管理域数据文件中的主要内容为DNS资源记录(DNS Resource Record), DNS不区分大小写,但一般使记录类型使用大写,记录内容为小写 记录类型: SOA记录:授权域的开始 (Start of Authority) NS记录:对应域的权威服务器列表 A记录:主机名到IP地址对应记录 PTR记录:IP地址到主机名对应关系记录 CNAME记录:别名 MX记录:邮件交换记录
SOA记录(1) 管理域文件中的第一条记录 每个管理域文件有且只有一个SOA 例如: xjtu.edu.cn. IN SOA dec3000.xjtu.edu.cn. root.xjtu.edu.cn. ( 2004082000 ; Serial, < 4294967295 3H ; Refresh after 3 hours 3600 ; Retry after 1 hour 1W ; Expire after 1 week 1D ) ; Minimum TTL of 1 day 默认的时间单位为秒,也可以指定M(分), H(时), D(日), W(星期)等单位 在DNS数据中绝对域名必须以“.”结束 用符号“@”可以代替当前管理域的名字 更改主域名服务器后必须增加序列号
SOA记录(2) IN: Internet, 数据类型,还有其他类型,但很少用 SOA: Start of Authority dec3000.xjtu.edu.cn.:数据文件所在主机名 root.xjtu.edu.cn. 管理员Email地址,其中@用.代替 序列号serial:其他DNS服务器根据此值判断主DNS数据文件内容是否已经修改,其值为相对值,最好使用整数或修改日期加相应编号,如2004082001 刷新时间Refresh:辅域名服务器与主域名服务器通信的时间间隔。通信时,先检测序列号是否增加,如果没有增加,则不需要刷新数据
SOA记录(3) Retry:告诉辅服务器如果当前的尝试失败,等待指定时间后再从主域名服务器更新数据 Expire: 告诉辅域名服务器数据无效的失效时间。在数据失效时间到达后,不管主服务器的数据是否已经更新,辅域名服务器都必须丢弃暂存的数据,重新从主服务器上读取数据。Expire的大小的一般规则: Expired > Refresh + Retry * 10 TTL:用于指定缓存的有效时间
A记录 格式:hostname IN A IP hostname可使用FQDN或者相对名称 例如 对于相对主机名,系统会加入SOA记录的域名形成FQDN 例如 www.xjtu.edu.cn. IN A 202.117.1.13 www IN A 202.117.1.13 当SOA记录的域名为xjtu.edu.cn时,以上两条记录是完全等价的
NS记录 格式: name IN NS hostname. 用于授权,把某个子域的管理权限授予给其它服务器 权威服务器本身也需要在管理域数据文件里指定本管理域的权威服务器 在用NS记录加入下级管理域的权威服务器名的同时,必须加入下级管理域权威服务器的IP 例如,xjtu.edu.cn需要在edu.cn域名服务器中加入: xjtu.edu.cn. IN NS DEC3000.xjtu.edu.cn. xjtu.edu.cn. IN NS NS2.xjtu.edu.cn. xjtu.edu.cn. IN NS DNS.XANET.edu.cn. DEC3000.xjtu.edu.cn. IN A 202.117.0.20 NS2.xjtu.edu.cn. IN A 202.117.0.21 DNS.XANET.edu.cn. IN A 202.112.11.130
CNAME与PTR记录 CNAME记录:用于指定别名 PTR记录:用于实现反向解析 格式: alias_name [ttl] IN CNAME canonical_name 同时应该添加对canonical_name的IP的解析 示例: www.lib.xjtu.edu.cn. 86400 IN CNAME dns.lib.xjtu.edu.cn. dns.lib.xjtu.edu.cn. 86400 IN A 202.117.24.24 PTR记录:用于实现反向解析 格式: rev.in-addr.arpa. IN PTR hostname 示例: 13.1.117.202.in-addr.arpa. IN PTR www.xjtu.edu.cn. 13 IN PTR www.xjtu.edu.cn.
MX记录 例如: 专用于Email地址的解析 格式:name [TTL] IN MX priority hostname. 同时应该添加对hostname的IP的解析 MX记录中包括域名和优先数priority 优先数小者优先级别较高,若多项MX记录的优先数相同,则随机选择 对于同一个名字,不应同时出现CNAME和MX记录 例如: aiar.xjtu.edu.cn. 86400 IN MX 50 sun.aiar.xjtu.edu.cn. xjtu.edu.cn. 86129 IN MX 20 mailst.xjtu.edu.cn. example.com. IN MX 10 mail.example.com. IN MX 10 mail2.example.com. IN MX 20 mail.backup.org.
根域名服务器Cache文件 根域名服务器cache获得根域名服务器的IP 首次使用named需要手工指定至少一个根域名服务器,以便name能够取回完整的根服务器列表 目前全球共有13个根域名服务器 配置bind时可以用dig @202.117.0.20取回一份根域名服务器列表,如下所示: . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 . 3600000 NS C.ROOT-SERVERS.NET ……. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
辅助管理工具 named-checkconf filename 用于检查named.conf是否正确 例如:named-checkconf named.conf named-checkzone zone filename 用于检查主权威服务器文件的正确性 例如: named-checkzone se.xjtu.edu.cn db.se.xjtu.edu.cn rndc stop / reload 停止named或者让named重新读入配置文件
DNS客户端工具dig 一般用法:dig @server name type 命令执行结果 server:指定向哪个DNS服务器发出查询请求,如果不指定,则使用/etc/resolv.conf中指定的服务器 name: 指定要解析的名字,默认为根 type: 指定要解析的类型,如A、MX、PTR等 命令执行结果 QUESTION SECTION: 用户查询的请求 ANSWER SECTION: DNS服务器的应答 AUTHORITY SECTION: 所查域名的权威服务器列表 ADDITIONAL SECTION: 有关服务器的附加信息,如IP等 跟踪解析过程: dig www.xjtu.edu.cn +trace
Bind应用注意事项 机房的IP都是国内IP,没有国际权限,而目前所有的根域名服务器都在国外 我校的DNS服务器dec3000配置有问题 使用dig +trace跟踪域名解析过程时会无法访问到位于国外的根域名服务器 按照常规方法配置域名服务器也会因为无法访问到位于国外的根域名服务器而出现问题 临时解决办法:只配置权威服务器,不配置缓存服务器,不允许递归查询;或者设置请求转发 我校的DNS服务器dec3000配置有问题 对202.117.0.0/18进行了反相解析,但是没有配置相应的正向解析 这样会导致部分系统服务(如NFS)出现问题
named配置技巧 DNS请求转发 批量解析 把本机收到的DNS请求交给其它服务器解析 在named.conf里面添加如下两行: forward first; forwarders {202.117.0.20;}; 其含义是:把本服务器收到的DNS解析请求先交给202.117.0.20解析,如果202.117.0.20解析不了,则由本服务器解析 批量解析 $GENERATE 1-254 pc$ A 192.168.0.$ 相当于设置了一个1~254的循环,把pcX解析成192.168.0.X
遇到问题怎么办? 用netstat –an|grep 53查看53端口是否已经打开? 主配置文件、管理域数据文件的权限是否正确?能否被named访问到? 用named-checkconf和named-checkzone 检查配置文件是否正确? 配置文件里面的完全域名(FQDN)是否以.结束? ACL与访问权限是否正确? 检查/var/log/messages日志文件
练习题 配置一个DNS服务器,管理域为subXXX.se.xjtu.edu.cn. 完成对以下域名的正、反向解析,并用辅助工具测试 www.subXXX.se.xjtu.edu.cn ftp. subXXX.se.xjtu.edu.cn mail. subXXX.se.xjtu.edu.cn(Email服务器) 执行以下dig命令,观察并解释其结果: dig @202.117.0.20 dig @202.117.0.20 aiar.xjtu.edu.cn MX dig @202.117.24.24 www.lib.xjtu.edu.cn CNAME dig @202.112.0.35 xjtu.edu.cn NS dig @202.117.0.20 1.21.117.202.in-addr.arpa PTR