Embeded linux之ipv6

一、内核支持配置:

[*] 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           
原文地址:https://www.cnblogs.com/pokerface/p/6827087.html