make config ----------> kernel config ------------>networking support ----------------->networking options--------------->IPv6 protocol
-------->busybox setting ---------> network utilities----------------------> enable ipv6 support
ping6
主机接收路由器广播的RA包来决定如何获取和配置地址。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cur Hop Limit |M|O| Reserved | Router Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reachable Time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Retrans Timer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options ...
+-+-+-+-+-+-+-+-+-+-+-+-
路由通告包是type = 134的ICMPv6包。
M bit : 置为1 表示主机的IPv6地址需要通过网路中的DHCPv6 server获取,不进行地址自动配置。 置为0 表示使用SLAAC. options中会有全局前缀信息选项。
O bit: 置为1 表示其他配置信息主要是DNS, 需要通过DHCPv6 获得。 置为0 表示从RA报文的options中获得DNS等其他配置信息。
所以根据IPv6路由器的不同配置,主机有三种IPv6地址获取方式。
当配置支持IPv6时, 无状态地址自动配置会默认开启。系统启动后(以eth0为例)
cat /proc/sys/net/ipv6/conf/eth0/autoconf 输出为 1, 表示使用RA包中的前缀信息自动配置地址。
在此目录下还有accept_ra, accept_ra_pinfo等相关配置开关,具体请参考IPv6 HOWTO。
为满足所有的地址获取方式,需要ndisc和wide-dhcpv6两个工具。
在配置为2,3方式时,使用wide-dhcpv6 中的dhcp6c作为dhcpv6 client, 在方式2中可以获取并设置DNS, 在方式3中可以完成配置地址和DNS的所有工作。
在配置为方式1时, 地址自动配置, 需要使用ndisc工具中的rdnssd获得系统得到的DNS, 然后手动进行设置。