5-ipv6基础知识之-域名解析dns
DNS域名解析过程比较简单,先看下IPV4下面的DNS,然后再看IPV6下面的DNS
1. IPv4 DNS
1.1 IPv4 DNS请求过程
在电脑上面ping www.taobao.com(如果已经访问过需要换一个网址,dns地址会被缓存,有可能不产生dns请求,直接请求ICMP包)
ping域名的过来,会先发送dns请求得到域名的IP,然后再发送ICMP包,测试数据可达性。
1.2 DNS数据包解析
- DNS数据包封装在UDP报文中
- 目的端口为53
- 源IP为本地IPV4地址,目的IP为路由器192.168.18.1(自动),手动的话就是直接发送到手动设置的地址
DNS有两种报文:查询报文、回答报文,两者有着相同格式,下面就取报文中几个比较重要的字段进行说明
查询报文:
image回答报文:
image
1.3 DNS查询报文-类型tpye字段
在发送DNS查询数据包的时候,会指定要查的类型,如IPV4地址就是A(使用ping命令),IPV6地址就是AAAA(使用ping6命令)。
类型 | 助记符 | 说明 |
---|---|---|
1 | A | IPv4地址 |
2 | NS | 名字服务器 |
5 | CNAME | 规范名称定义主机的正式名字的别名 |
6 | SOA | 开始授权标记一个区的开始 |
11 | WKS | 熟知服务定义主机提供的网络服务 |
12 | PTR | 指针把IP地址转化为域名 |
13 | HINFO | 主机信息给出主机使用的硬件和操作系统的表述 |
15 | MX | 邮件交换把邮件改变路由送到邮件服务器 |
28 | AAAA | IPv6地址 |
252 | AXFR | 传送整个区的请求 |
255 | ANY | 对所有记录的请求 |
1.4 DNS回答报文-Answers字段
Flags中Answer RRs 为3 说明对应的Answers字段中将会出现3项解析结果.
Answers字段可以看成一个List,集合中每项为一个资源记录。
1.5 本地查看dns地址
在本地可以使用nslookup查看dns解析后的IPv4地址
linye@linye-ubuntu:~$ nslookup www.tianmm.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.tianmm.com
Address: 10.0.0.1
2. IPv6 DNS
IPv6对于DNS的支持是很简单的,只是将IPv4的域名解析和反向域名解析技术直接转换到IPv6环境中而已。
协议 | 记录 | DNS映射 |
---|---|---|
IPv4 | A | www.example.org A 206.123.31.200 |
IPv6 | AAAA | www.example.org AAAA 2001:410:1:1:250:3eff:fee4:1 |
例如IPv6地址为2001:410:1:1:250:3eff:fee4:1,反向查询域名为1.0.0.0.4.e.e.f.f.f.e.3.0.5.2.0.1.0.0.0.1.0.0.0.0.1.4.0.1.0.0.2.IP6.ARPA
2.1 DNS数据包解析
- DNS数据包封装在UDP报文中
- 目的端口为53
- 源IP为本地IPV6地址,自动dns的话目的IP为路由器下发的dns-server(dibbler里面设置),手动的话就是直接发送到手动设置的地址如2000::ff或者2000::fe(路由器的/etc/config/network里面设置)
2.2 本地查看dns地址
在本地可以使用nslookup查看dns解析后的IPv6地址
linye@linye-ubuntu:~$ nslookup
> set type=AAAA
> gw.zihome.com
Server: 127.0.0.1
Address: 127.0.0.1#53
gw.zihome.com has AAAA address 2001:2345::1
> www.tianmm.com
Server: 127.0.0.1
Address: 127.0.0.1#53
www.tianmm.com has AAAA address 2001::1
3. 使用地址选择的示例
主机A是一台IPv6IPv4主机,它具有多个接口,每个接口有多个地址。主机A构建并发送了一条或多条“DNS域名查询请求”消息,请求所有与域名web.example.com对应的地址记录。而主机A接收到的“DNS域名查询响应”消息中包含一个IPv4地址记录和多个IPv6地址记录。
根据DNS域名査询响应消息的内容,主机A的IPv6会执行如下操作。
1、使用源地址选择算法来判断出每个目的IPv6地址的最佳源地址
2、使用目的地址选择算法来判断出目的IPv4和IPv6地址的优先顺序。
目的地址的有序组以及它们对应的源地址会被提供给应用程序。然后,应用就会接着尝试每个目的和源地址组合,直至通信建立。
例如,主机A配置了如下地址
LAN接口:
- 2001:db8:21a5:a4543ce:bf6:505:eae6(全局地址,非弃用状态,公有)
- 2001:db8:21a5:a454:20da:3198:2c50:1a57(全局地址,非弃用状态,临时使用)
- 2001:db8:21a5:a454:1d15:9c:8e4c:902b(全局地址,弃用状态,临时使用)
- fec0:3a4f:78ea:a454:3cebf16:505:eae6(站点本地地址,非弃用状态)
- fe80:3 cec: bfl6:505:eae6(链路本地地址,非弃用状态)
- 157.60.17.211(公有IPv4地址[全局范围],非弃用状态
口站点内自动隧道寻址协议( ISATAP)隧道接口:
- 2001:db8:21a5:a499:efe:157.60.17.211(全局 ISATAP地址,非弃用状态)
- fe80:5efe:157.60.17.211(链路本地地址,非弃用状态)
对于域名web.example.com的DNS域名查询请求消息返回如下地址。
- 207.73.11898(公有IPv4地址[全局范围])
- 2001:db8:21a5:a4ca:2a:ffe35:2cla(全局地址)
- 2001:db8:21a5:a499:efe:207.73.118.98( ISATAP全局地址)
- ecO0:3a4f2a34:1a7:2a:ffe35:2ca(站点本地地址)
源地址选择算法的结果如下。
- 对于目的地址2001:db8:21a5:a4ca:2a:ffl635:2ca,选择的源地址是2001:db8:21a5:a454ccbr6:505:eae6(全局地址,非弃用状态,公有),因为它的范围匹配,它是公有地址,并且它与目的地址匹配的前缀长度最长。
- 对于目的地址2001:db8:21a5:a499:5efe:207.73.118.98,选择的源地址是2001:db8:21a5:a499:5efe:157.60.17.,211(全局 ISATAP地址,非弃用状态),因为它的范围匹配,而且它与目的地址匹配的前缀长度最长
- 对于目的地址fec0:3a4f2a34:1a27:2a:f:fe35:2cla,选择的源地址是fec0:3a4f:78ea:a454:ccbr6:505:eae6(站点本地地址,非弃用状态),因为它的范围匹配,而且它与目的地址匹配的前缀长度最长
目的地址选择算法的结果是按优先级顺序排列的目的地址,如下所示
- fec0:3a4f:2a34:1aa7:2aa:f:fe35:2cla(范围最小)。
- 2001:db8:21a5:a4ca:2a:ffe35:2cla(本地地址优于 ISATAP地址)
- 2001:db8:21a5:a499:5efe:207.73.118.98( ISATAP地址优于IPv4映射过来的地址)
- 207.73.118.98。
于是,主机A尝试通过以下几组源和目的地址与web.example.com服务器建立通信。
- 1.源地址feco3a4f:78ea:a4543cc:bf6:505:eae6,目的地址fe.3a4f:2a34:1a7:2a:ffe3acla
- 2.源地址2001:db8:2la5:a454:3ce:bf16:505:eae6,目的地址2001:db8:21a5:a4ca:2a:ffe35
- 3.源地址2001:db8:21a6:a499:5efe:157.60.17.211,目的地址2001:db8:21a5:a49:5efe:207.73
- 4.源地址157.60.17.211,目的地址207.73.118.98
选用IPv6地址而弃用IPv4地址是因为,IPv4地址(地址前缀:ff0096)默认前缀策略表的条目的优先权值较低。