如下图,是windows下网卡的配置界面,相信大家都有见过,除了基本的IP地址、子网掩码、网关以外,还有主DNS服务器、备DNS服务器需要配置。
如果我们不涉及到域名相关的请求,通常是不需要配置DNS服务器的。有时候我们上网很慢,可能改下DNS服务器到另外一台就解决问题。而这些都涉及到互联网中很基础的一个协议,DNS协议。
(1)DNS协议是用来干嘛的
相信大家都听说过DNS,大概都知道DNS就是用来告知每个域名对应的IP地址是多少。但这只是DNS的功能之一,很小的一个功能。
这点用专业术语来说应该是叫作DNS的A记录,A记录即记录了一台主机的域名和IPv4地址的映射关系。记录主机的域名和IPv6地址的映射关系,那就是AAAA记录。
除了以上的A和AAAA记录以外,DNS还有好多其他类型的记录,功能不一,例如SOA、NS、CNAME、DNAME、MX、SRV、TEXT等等。
(2)任何域名的解析都需要DNS处理吗
如果只是简单的域名和IP地址的映射关系,我们完全可以用一个文件来记录,当客户端需要查找指定域名对应的IP地址(无论IPv4还是IPv6地址),优先查找此文件,在此文件没找到,再去向DNS服务器查找。
而这个文件,我们称之为hosts文件,无论是Windows、还是Linux都存在这个文件,如下图所示。我们可以按照文件中的格式新增域名和IPv4/IPv6地址的映射关系。
Windows下Linux下(3)DNS协议与OSI模型
DNS协议属于应用层协议,位于OSI七层模型的最高层,底层是传输层UDP协议(也可以是TCP协议),占用的端口是53/udp(和53/tcp),如下图所示。
DNS协议包的种类主要是两种,Query和Response,每个包里面的字段大同小异,如下图所示。
DNS包DNS包举例(wireshark解析)各个字段解释DNS QueryTransaction ID:事务ID,用于区分一个完整的DNS会话Flags:标志,指定该包是查询包还是响应包Questions:Answer RRs:Authority RRs:Additional RRs:Queries:查询的内容DNS ResponseAnswers:查询的响应值Additional records:查询的附加值,非必需,看服务器DNS的常用记录
常用记录格式说明SOA$ORIGIN crdc.cisco.com. @ IN SOA @ admin.crdc.cisco.com ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum对应zone的相关信息,每个zone只能有1个SOA记录。
@: 表示zone的名字,如本例中的@表示【crdc.cisco.com.】。
在服务端的域名最后一定要加上点号(.)。
NS@ IN NS ns.crdc.cisco.com.zone下的DNS服务器的FQDNMX@ IN NS mail.crdc.cisco.com.zone下的邮件服务器的FQDNSRV_http._tcp.crdc.cisco.com. IN SRV 0 5 80 www.crdc.cisco.com. _sip._tcp.crdc.cisco.com. IN SRV 0 5 5060 cucm.crdc.cisco.com. _sip._udp.crdc.cisco.com. IN SRV 0 5 5060 cucm.crdc.cisco.com. _ldap._tcp.crdc.cisco.com. IN SRV 0 5 389 dc.crdc.cisco.com _imap._tcp.crdc.cisco.com. IN SRV 0 5 143 mail.crdc.cisco.com.zone下的应用服务器的FQDN,例如SIP服务器、HTTP服务器 Ans.crdc.cisco.com. IN A 10.74.97.122zone下某台主机FQDN对应的IPv4地址AAAAns.crdc.cisco.com. IN AAAA 2001:10:74:97::122zone下某台主机FQDN对应的IPv6地址CNAMEns.crdc.cisco.com IN CNAME dns.crdc.cisco.com.
ns.crdc.cisco.com IN CNAME dns.test.com.
zone下某台主机FQDN的别名(另一个FQDN) PTR125.97.74.10.in-addr.arpa IN PTR dc.crdc.cisco.com.反向zone下某台主机IPv4/IPv6地址对应的FQDNNAPTER TEXT DNAME(1)nslookup
nslookup是一个用来测试服务器各种记录是否配置正确的工具,在Windows和Linux下默认都已经安装好了,常用参数如下所示。
nslookup -type=A caowen-cucm-pub.crdc.cisco.com 10.74.97.125 10.74.97.125 代表要查询的服务器,不写的话,会调用网卡配置文件上的DNS服务器 -type=A caowen-cucm-pub.crdc.cisco.com 代表要查询该域名对应的IPv4地址,该域名是一台主机 还可以是 ------------------------------------------------------ -type=AAAA caowen-cucm-pub.crdc.cisco.com 代表要查询对象对应的IPv6地址,该对象是一台主机 -type=NS crdc.cisco.com 代表要查询对象对应的NS记录(DNS服务器的域名),该对象是一个域的名称,不是域内的主机 -type=MX crdc.cisco.com 代表要查询对象对应的MX记录(邮件服务器的域名),该对象是一个域的名称,不是域内的主机 -type=SRV crdc.cisco.com 代表要查询对象对应的SRV记录(应用协议对应服务器的域名),该对象是一个域的名称,不是域内的主机 caowen-cucm-pub.crdc.cisco.com 不带参数-type=“ ”,代表查询该对象的A/AAAA记录,该对象被当作一台主机 -type=X 10.74.97.123 查询该IP地址对应的域名,即PTR记录查询(反向记录查询)(2)ipconfig /displaydns
Windows下查看DNS缓存的命令
(3)ipconfig /flushdns
Windows下清除DNS缓存的命令
(4)dig
该命令参数比较多,功能比较强大,在后面的高级课程会重点讲解。一般Linux下都默认安装,Windows没有安装,需要另外下载。