一、需要知道的前提
1、要添加老版本内核和处理器的IPV6支持,先要确认linux内核版本,一般2.6以上的版本都已经支持IPV6。
2、IPV6的支持修改,涉及到linux内核的IPV6支持,文件系统的IPV6支持(相关指令支持和文件系统本身的支持)。
二、 开发过程遇到的问题
1、因为平台比较老,内核版本、busybox版本都比较老,开发中出现一些兼容性问题,这种问题,一般裁剪掉部分编译项即可解决。
2、编译过程中一些编译报错问题,修改Makefile可解决大部分问题,实在不行就换busybox版本。
3、编译全部通过,烧录到开发板也能正常运行,但是就是不能正常配置IPV6的相关IP地址,查看IPV6相关的参数也会报段错误或者其他错误,对于这种考虑是交叉编译器版本太老,内核或者busybox内都某些函数已经发生变更,导致函数调用出错。当然如果更换交叉编译器,那么烧写到开发板的所有库都需要更新,否则还是有问题,另外老版本库文件都比较小,新版本库文件都比较大,还需考虑到板上FLASH大小和分区情况。
三、遗留问题
1、设备上电后,会自动生成一个默认的IPV6地址,且该IPV6地址会跟随IPV4地址的变化而变化,本想删除此默认地址,但未发现有效途径,虽然这个地址对于通信没有什么影响,电脑上也会有这种默认地址,但总觉得不爽~。
四、开发过程中相关记录
添加IPV6地址
ip -6 addr add <ipv6address>/<prefixlength> dev <interface>
ip -6 addr add 2001:0db8:0:f101::1/64 dev eth0
ifconfig <interface> inet6 add <ipv6address>/<prefixlength>
ifconfig eth0 inet6 add 2001:0db8:0:f101::1/64
添加默认路由
ip -6 route add <ipv6network>/<prefixlength> via <ipv6address>
ip -6 route add default via 2001:0db8:0:f101::1
route -A inet6 add <ipv6network>/<prefixlength> gw
route -A inet6 add default gw 2001:0db8:0:f101::1
查看路由
ip -6 route show
route -A 'inet6'
route -6
windows查看路由表
route print
查看邻居缓存
ip -6 neighbor show
windows查看邻居缓存
netsh interface ipv6 show neighbors
eth0 Link encap:Ethernet HWaddr 20:09:FE:00:00:00
inet6 addr: fe80::219:d2ff:fe00:0/64 Scope:Link
inet6 addr: fe80::2209:feff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1835 errors:16 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:126042 (123.0 KiB) TX bytes:1256 (1.2 KiB)
Interrupt:21 Base address:0x4000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Kernel IPv6 routing table
Destination Next Hop Flags Metric Ref Use Iface
fe80::c0b0:81e9:c4c0:b16f/128 fe80::c0b0:81e9:c4c0:b16f UC 0 2 1 eth0
fe80::/64 :: U 256 0 0 eth0
::1/128 :: U 0 0 1 lo
fe80::219:d2ff:fe00:0/128 :: U 0 5 1 lo
fe80::2209:feff:fe00:0/128 :: U 0 0 1 lo
ff00::/8 :: U 256 0 0 eth0