×
嵌入式 > 嵌入式开发 > 详情

Embeded linux之ipv6

发布时间:2020-05-16 发布时间:
|

一、内核支持配置:

[*] Networking support  --->

Networking options  --->

<*>   The IPv6 protocol  ---> 

[*] IPv6: Router Preference (RFC 4191) support  //在多路由的网络中,允许系统能够更有效地计算出该使用哪一个
[*] IPv6: Route Information (RFC 4191) support  //处理路由信息的实验性特性启用或禁用
[ ] IPv6: Enable RFC 4429 Optimistic DAD      //重复IPv6地址检测
<*> IPv6: AH transformation            //IPv6可以有不同的IPsecc特性支持
<*> IPv6: ESP transformation            //IPv6可以有不同的IPsecc特性支持
<*> IPv6: IPComp transformation         //IPv6可以有不同的IP负载压缩协议
< > IPv6: Mobility        //IPv6的移动设备在保留同样地址的情况下使用其他的网络
<*> IPv6: IPsec transport mode          //IPv6的IPsec特性
<*> IPv6: IPsec tunnel mode             //IPv6的IPsec特性
<*> IPv6: IPsec BEET mode             //IPv6的IPsec特性
< > IPv6: MIPv6 route optimization mode       //IPv6可以支持MIPv6路由优化
< > Virtual (secure) IPv6: tunneling          
<*> IPv6: IPv6-in-IPv4 tunnel (SIT driver)      //通过隧道使IPv6报文穿越IPv4网络
[ ] IPv6: IPv6 Rapid Deployment (6RD)
< > IPv6: IP-in-IPv6 tunnel (RFC2473)       //隧道特性
< > IPv6: GRE tunnel                //只允许GRE隧道
[*] IPv6: Multiple Routing Tables          //支持多重路由表
[ ] IPv6: source address based routing        //允许根据源地址或前缀进行路由
[ ] IPv6: multicast routing              //IPv6组播路由

二、设置

增加IP:

ip -6 addr add fe80::dcdc:dcdc:dcdc:dcdc/16 dev eth0

删除IP:

ip -6 addr del fe80::dcdc:dcdc:dcdc:dcdc/16 dev eth0

查看IP:

ip -6 addr show dev eth0

增加网关:

route -A inet6 add default gw fe80::/16 dev eth0

删除网关:

route -A inet6 del default gw fe80::/16 dev eth0

查看网关:

ip -6 route show dev eth0

注意:

如果设置IP了,就已经默认设置了网关,没必要再设置网关了。而且设置同一网段网关会报错,设置不同网段网关也会报错。错误如下:

错误1:
~ # route -A inet6 add ::/0 gw 2001::/16 dev eth0
route: getaddrinfo: 2001::/16: -2
route: resolving 2001::/16
解析:
已经有此网段的网关 添加重复

错误2:
route -A inet6 add ::/0 gw 3ffe:fff::0
route: SIOCADDRT: No route to host
解析:
没有相同网段的IP

IP类型:

1.单播地址(unicast address)

1.1.全局单播地址:

由IANA分配的可在全球路由的公网IP地址,占用了12.5%的IPV6地址空间,这个前缀中总共包含8192个/16的前缀

2xxx:xxxxx/3 - 3FFF: :FFFF

2001::/16 IPV6为因特网地址

2002::/16 6to4为过渡地址

3ffe::/16 用于6bone测试目的的前缀

1.2.链路本地地址:FE80::/10

一个节点启用IPV6,启动时节点的每个接口自动生成一个link-local address。本链路上,路由表中看到的下一跳都是对端的Link Local地址,不是公网IP地址

格式:

| 10 | | bits | 54 bits | 64 bits | +----------+-------------------------+----------------------------+ |1111111010| 0 | EUI-64 | +----------+-------------------------+----------------------------+

通讯范围:只能在本地链路使用,不能在子网间路由

手工指定:ip -6 addr add FE80:0:0:0:0123:0456:0789:0abc link-local

1.3.站点本地地址:FEC0::/10

IPV6的私网地址,IPV6地址空间的0.1%

格式:

| 10 | | bits | 54 bits | 64 bits | +----------+-------------------------+----------------------------+ |1111111011| 子网ID | 主机ID | +----------+-------------------------+----------------------------+

通讯范围:只能在本站点内使用,不能在公网上使用

1.4.未指明地址: 0:0:0:0:0:0:0:0/128 => ::/128

表示地址未指定,或者在写默认路由时代表所有路由

1.5.环回地址:0:0:0:0:0:0:0:1/128 => ::1/128

同IPV4中127.0.0.1地址的含义一样,表示节点自已

1.6.IPv4兼容地址:::192.168.30.1 => ::C0A8:1E01

IPV4兼容的IPV6地址--用于在IPV4网络上建立自动隧道,以传输IPV6数据包:高96bit设为0,后面跟32bit的IPV4地址:0000:0000:0000:0000:0000:0000:206.123.31.2

格式:

| 80 bits | 16 | 32 bits |   +--------------------------------------+--------------------------+   |0000..............................0000|0000| IPv4 address |   +--------------------------------------+----+---------------------+

映射IPV4的IPV6地址--仅用于拥有IPV4和IPV6双协议栈节点的本地范围:高80bit设为0,后16bit设为1,再跟IPV4地址:0000:0000:0000:0000:0000:ffff:206.123.31.2

格式:

| 80 bits | 16 | 32 bits |    +--------------------------------------+--------------------------+   |0000..............................0000|FFFF| IPv4 address |   +--------------------------------------+----+---------------------+

2.组播地址(Multicast Address)FF00::/8

在IPV6中没有广播,用组播来代替。   占用了0.38%的IPV6地址空间

格式:

| 8 | 4 | 4 | 112 bits | +------ -+-----+----+---------------------------------------------+ |11111111|标志位|范围| group ID | +--------+-----+----+---------------------------------------------+

标志位为0000:永久保留的组播地址,分配给各种技术使用
标志位为0001:用户可使用的临时组播地址

范围为1:本地接口范围

范围为2:本地链路范围

范围为4:本地管理范围

范围为5:本地站点范围,类似组播的私网地址

范围为8:组织机构范围

范围为e:全球范围,类似组播的公网地址

其余为保留

预定义组播地址:

FF02::1    all nodes       在本地链路范围的所有节点
FF02::2    all routers     在本地链路范围的所有路由器
FF02::5    all ospf routers  OSPF路由器

FF02::6           OSPFIGP路由器
FF02::9    all rip routers    所有运行RIP的路由器
FF02::A    all eigrp routers  所有运行eigrp的路由器
FF05::2                     在一个站点范围内的所有路由器

3)任播地址(anycast address)

应用在one-to-nearest(一到近)模式。多个设备共享一个地址.分配IPv6单播(unicast)地址给拥有相同功用的一些设备.发送方发送一个以任意播为目标地址的包,当路由器接受到这个包以后,就转发给具有这个地址的离它最近的设备.单播地址用来分配任意播地址.对于那些没有配备任意播的的地址就是单播地址;但是当一个单播地址分配给不止一个接口的时候,单播地址就成了任意播地址。

Mobile方面的特性,移动设备漫游到其他区域,不必接入原始的接入点,只需要找到最近的即可。

一旦节点启用IPV6,那么接口就会自动生成下列地址
1、本地链路地址
2、回环地址
3、所有节点多播地址FF02::1
4、如果是路由器,还会有FF02::2
5、被请求节点的组播地址

如果接口配了一个IPV6的单播地址,还会产生被请求节点的组播地址

4)特殊地址

~ 环回地址   ::1/128
~ 组播地址    FF00::/8
~ 链路本地地址    FF80::/10
~ 站点本地地址    FEC0::/10
~ 未指定的地址   ::0/128
~ 全局单播    其他地址

路由公告(无状态自动配置机制):使用EUI-64格式来自动配置IPV6地址,功能:网络中没有DHCP服务器的情况下,允许节点自行配置IPV6地址的机制EUI-64格式:扩展惟一标识符EUI-64的构造规则--根据接口的MAC地址再加上固定的前缀来生成一个IPV6的地址工作原理:自动将48bit的以太网MAC地址扩展成64bit,再挂在一个64bit的前缀后面,组成一个IPV6地址一、将48位的MAC地址从中间分开,插入一个固定数值FFFE    0050:3EE4:4C00-->0050:3EFF:FEE4:4C00二、将第7个比特位反转,如果原来是0,就变为1,如果原来是1,就变为0    0050:3EFF:FEE4:4C00-->0250:3EFF:FEE4:4C00三、加上前缀--FE80::0250:3EFF:FEE4:4C00 这就是一个完整的IPV6地址反转的原因:  在MAC地址中,第7比特为1表示本地管理,为0表示全球管理  在EUI-64格式中,第7位为1表示全球惟一,为0表示本地惟一

配置方式:1.手工:  ip -6 addr add 2001::1/64                    全局单播  ip -6 addr add FE80:0:0:0:0123:0456:0789:0abc link-local  链路单播2.路由公告:

ip -6 addr add 2001:0410:0:1::/64 eui-64
 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
一只老鸟的嵌入式ARM学习心得