IPV6优势:

  1. 更大地址空间(2^128)
  2. 端到端的全球可达性
  3. 层次化编址利于聚合(每个运营商一个地址块)
  4. 组播的使用(Server传播一份流量,通过组播扩散到用户,避免单播浪费资源)
    IPV6以太协议号:0x86DD
    IPV6地址=网络位+接口标识(主机位)
    区分网络位和主机位的好处:便于寻址
    IPV6地址采用冒号分16进制

IPV6编址:

单播地址:
  • 可聚合全球单播地址(公网) 前缀:2000::/3(2000-3FFF::/3)

001

TLA ID

RES

NLA ID

SLA ID

接口ID

2001::/16 目前 ipv6 使用的地址
2002::/16 6to4 address

  • 本地站点地址(私网) 前缀:FEC0::/10
  • 唯一站点地址(私网) 前缀:FC00::/7 (不常见)
  • 本地链路地址(Link-Local) 前缀:FE80::/10
    只能在本链路通信
    Link-Local地址产生规则(EUI-64):FE80::接口MAC 中间截断插入FF:FE,接口标识的第一个字节第七位反转/64
    Loopback接口Link-Local地址借用物理接口MAC地址
  • 未指定地址 ::/128 用于接口没有分配IP地址
  • 环回地址 ::1/128
兼容地址:
  • ipv4兼容地址:::192.168.1.1 //用于ipv6自动隧道
  • ipv4映射地址:::FFFF:192.168.1.1
  • 6 to 4:

2002:

ipv4地址

::1

/128

组播地址(FF开头为组播地址):

F

F

Flag

Scope

::

/8

FF02::1所有节点加入的组播组(255.255.255.255)
FF02::2(所有路由器会加入)
Flag=O|R|P|T,前三位为0,T=0为被固定分配给协议,=1表示临时组播地址
Scope表示组播组范围:

0

预留

1

节点本地范围

2

本地链路范围

5

本地站点范围

8

组织本地范围

E

全球范围

F

预留

发送组播时三层为组播地址,二层MAC地址为映射地址:

FF02::1:FF5C:1C

33:33:FF:5C:00:1C

被请求节点组播地址:FF02::1:FFxx:xxxx 后24位是ipv6后24位(每一个IPV6地址都有一个被请求节点组播地址,替代IPV4中广播地址)

任播地址(多个设备共享一个地址):

路由器接收去往任意播地址的数据包,转发给具有这个地址离它最近的设备。
任播地址不能用作路由源地址。
一个地址被配置给大于一个设备,该地址就成为任播地址。

IPV6包头:

IPV6包头64bit对齐,能够直接对内存存取

包头长度定长40字节

zabbix ipv6主机 ipv6主机位_IPV4


黄色为与IPV4相同

红色为IPV6删除的

蓝色为名称不同,功能相同

灰色为新增的

• TTL=Hop limit
• Type of service=traffic class (用于QOS)
• Protocol=next header(上层协议)
• Total length=payload length (总长度,IPV6中包头长度固定,所以不需要包头长度)
• Flow label(在三层区分流,不用到四层区分端口号,方便管理)

IPV6扩展包头:

  • 逐跳选项包头:被每一跳处理,用于RSVP(路由器警告)和巨型数据包
  • 路由包头:控制路由到达目的地必须经过的节点。
  • 分段包头:报文分片信息,仅源处理(段偏移量指报文段在原始报文中的位置偏移量,1500=1000+500 第一片偏移量为0,第二片为1000)(M flag用于标记分片,1代表后续有更多分片,0代表最后一个分片)(identification用于标识数据包,同一个包有同样的名称)
  • 目的选项包头:目的地处理。
  • 认证包头:IPSec,只有目的地处理。(解决来源,完整性问题)
  • 封装安全净载包头:IPSec,只有目的地处理。(解决安全性问题)
    包头封装顺序:

    前一个包头写后一个包头的协议号

IPV6 ACL:

除了deny any,IPV6 ACL还默认存在:
Permit icmp any any nd-ns
Permit icmp any any nd-na
nd相当于IPV4中ARP,不放行则不通。

ICMP V6(RFC2463):

新功能:
  • 邻居发现(类似 ARP)
  • PathMTU发现(发现沿途最小MTU)
    IPV6协议号:58

Type

Code

Checksum

Message body

错误类信息:type=(1,127)
  • 目的不可达(type=1)
    Code=0:沿途节点没有路由
    Code=1:通信被策略禁止(ACL…)
    Code=2:未指定
    Code=3:地址不可达(有路由但是没有实际节点)
    Code=4:端口不可达
  • 数据包超长(type=2):
    Code=0
  • 超时(type=3):
    Code=0:传输超过跳数限制
    Code=1:分片重组超时
  • 参数问题(type=4):
    Code=0:遇到错误报头字段
    Code=1:遇到无法识别的下一个包头类型
    Code=2:遇到无法识别的IPV6选项
信息类信息:
Echo request:type=128 code=0
Echo reply:type=129 code=0

NDP(邻居发现):

NDP属于ICMP信息类
代替IPV4 ARP
重复地址检测
无状态地址自动配置

  • 重复地址检测(DAD):
  • 地址解析:三层利用被请求节点组播地址,二层利用IPV6地址到组播MAC地址映射(33:33),对方收到后回复MAC地址。
    Type=135:邻居请求(NS)
    Type=136:邻居通告(NA)
    R:路由器
    S:表示响应请求
    O:需要刷新OPTIONS字段中MAC地址到本机
    Type=137:重定向消息

NDP邻居状态变迁:

IPV4 ARP表=IPV6邻居表

Route#Show ipv6 neighbors
Route#debug icmp nd
  • 邻居状态种类:
    incomplete(未完成)
    reachable(可达)
    stale(陈旧)
    delay(延迟)
    probe(探查)
  • 邻居状态变迁过程(正常情况):
  1. empty:A想去往B。
  2. Incomplete:A发送NS,并生成缓存,状态为Incomplete。
  3. reachable:B回复NA(包含B的MAC地址),A收到NA,状态为reachable。
  • 邻居状态变迁过程(非正常情况):
  1. 如果A发送NS后,B没有发送NA,A会连续发送3次NS,每次间隔1S,如果3次B都没有回复,状态从Incomplete变成empty。
  2. 如果情况正常,邻居超时时间30S,30S无通信从reachable变为stale(无时间限制,依然能通),有数据通信,stale状态变为delay,A等待B返回信息,收到信息,状态变为reachable,发送数据。
  3. 如果stale状态,A向B发送数据,B没有响应,A会等待5S,5S后进入probe(和Incomplete一样,重新发送NS,请求成功进入reachable,不成功进入empty)。

NDP地址分配:

无状态自动配置:即插即用,无需设置,每个接口具备分配能力。

DHCP为有状态自动配置

赋予主机前缀、接口ID、网关、跳数、MTU

zabbix ipv6主机 ipv6主机位_IPV6_02


地址无冲突时没有路由器会相应RS报文(基于ICMPV6)

RA、RS报文可以代替DHCP

  • Type=134:路由器通告(RA)
    路由器间隔200S发送
    IP源:发送者link local
    IP目的:FF02::1(所有IPV6节点加入的组播组)或单播地址,跳数255
    ICMP包含前缀、MTU、跳数、MAC地址
    用EUI-64产生接口ID
  • Type=133:路由器请求(RS)
    用于新接入的主机,像路由器请求RA,不用等待200S。
    IP源:发送者link local或者unspccificd(未知)
    IP目的:FF02::2(所有路由器会加入的组播组)
    跳数:255
    ICMP包含发送者的MAC地址

IPV6地址生命周期:

deprecated状态中,地址不能主动发起连接,只能被动接收连接。invalid状态任何连接都会DOWN。目的是为了方便实现地址重编址,修改地址时,老地址可以正常使用,但不会用老地址发起新的连接,当老地址不使用了,切换到新地址。IPV6可以获取不止一个地址。
配置地址生命周期(一般保持缺省):

Route(config-if)#ipv6 nd prefix X::X/X vaild时间 preferred时间

zabbix ipv6主机 ipv6主机位_网络_03

修改IPV6各种时间:

Route(config-if)#ipv6 nd reachable-time\retrains timer\ra time\router lifetime\icme error interval 时间
  • reachable-time:设置可达状态超时时间
  • retrains timer:设置接受RA的主机重传邻居请求之间的时间间隔(毫秒),0表示未指定。
  • ra time:RA报文发送间隔,默认200S
  • router lifetime:默认网关超时时间(秒),默认1800S,谁发送RA报文,谁就是网关。

修改ICMP差错报文产生间隔(毫秒):

Route(config)#ipv6 icme error-interval 时间

ICMP重定向信息(类型:137)(只针对特定地址重定向,不会改变网关):

和ipv4相同,当收到数据包和把数据包转发出去的是同一个接口时,像主机发送ICMP重定向,避免次优路径。
路由器会产生重定向报文,不会接受重定向报文。

DHCP V6(与IPV4相似):

RS、RA不能分配DNS地址,所以还需要有DHCP

DHCP V6工作过程:
  1. 客户端发送RS,检测链路上的路由器。
  2. 如果找到,检查RA,确定是否可以使用DHCP(和IPV4不同,IPV6是否可以使用DHCP由路由器决定,主机不会发送发现报文)。
  3. 如果没有发现路由器或者DHCP可以使用,则发送DHCP请求。
    正常情况下路由器向主机发送的报文Mbit、Obit
  • M:表示主机使用DHCP获取前缀
  • O:表示主机使用DHCP获取除地址以外其他参数(如DNS)。
两种可能的组合:
  • M=0、O=0:主机不发送DHCP请求。
  • M=0、O=1:使用路由器分配的前缀,使用DHCP请求DNS
  • M=1、O=1:主机使用DHCP获取前缀和DNS。

DHCP V6 无状态自动配置(置位Obit):

  • 置位Obit:
Route(config-if)#ipv6 nd other-config-flag
  • 调用DHCP server:
Route(config-if)#ipv6 dhcp server 名称
  • 开启DHCP池:
Route(config-dhcpv6)#ipv6 dhcp pool 名称
  • 配置DNS信息:
Route(config-dhcpv6)#dns server XXXX
Route(config-dhcpv6)#ipv6 dhcp server 名称(和接口相同)
Route(config-dhcpv6)#domain name 名称

DHCP V6 有状态自动配置(置位M、Obit):

与无状态区别:

  • 加入配置,M置位:
Route(config-if)#ipv6 nd managed-config-flag
Route(config-if)#ipv6 address dhcp
  • 加入前缀:
Route(config-dhcpv6)#address prefix 2001:1234::/64
Route#show ipv6 dhcp int 接口

DHCP-PD:

  • 应用场景:
    ipv6每台主机都使用公有地址,家庭用户配置公有地址复杂,DHCP-PD运营商给用户路由器下的主机分配地址。

PMTU:

最小PMTU=1280

10 min重新发现一次MTU

zabbix ipv6主机 ipv6主机位_zabbix ipv6主机_04

RIP NG(IPV6 RIP)

  • 与IPV4 RIP区别:
    UDP端口号:521
    更新目标地址:FF02::9
    带毒性逆转的水平分割:
router(config-rtr)#Poison reverse

Garbage-collect(IPV4 RIP中的flush):180s变为120s(180到时后计算120S,总共300S)
先起进程,然后接口下宣告:

router(config)#ipv6 router rip 名称
router(config-if)#ipv6 rip  名称 enable

IPV6过渡技术:IPV6穿越IPV4网络

Dual-stack(双栈):

分配IPV4和IPV6地址,首先尝试IPV6访问,访问不成功尝试IPV4,需要从源到目标都支持IPV6和IPV4。访问网站时,先尝试解析IPV6地址,在尝试解析IPV4地址。需要路由器配置两个地址,运行两个IGP。

tunnel(隧道):将IPV6包封装在IPV4中。
手动:源目IP手动指定
  • GRE:默认tunnel
IPV6封装GRE,GRE封装IPV4
Router(config)#interface tunnel 10
Router(config-if)#ipv6 address
Router(config-if)#ipv6 enable
Router(config-if)#tunnel sou X.X.X.X
Router(config-if)#tunnel destin X.X.X.X

在接口配置路由
在边界配置,内层承载任何数据包,把数据包封装在配置的tunnel源目IP中
IPV6直接封装到IP

Router(config-if)#tunnel mode ipv6ip
  • IPV6 over IPV4自动隧道
    一条tunnel对应多个节点,无需配置目标
    从特殊的IPV6地址中获取IPV4地址,或从特殊下一跳IPV6地址发现IPV4地址,通过IPV6地址获取应该封装的IPV4地址
    通过IPV4地址产生IPV6地址,IPV4:192.168.99.1 IPV6:::192.168.99.1
Router(config)#Int tunnel 1
Router(config-if)#Tunnel mode ipv6ip 6rd
Router(config-if)#Tunnel source 接口
  • 6 to 4 tunnel自动隧道(主要使用)
    无需配置目标,与IPV6 over IPV4相似

2002:

ipv4地址

::1

/128

Router(config)#Int tunnel 1
Router(config-if)#Tunnel mode  ipv6ip 6 to 4
Router(config-if)#Tunnel source 接口(需要把这个接口的IPV4地址写到IPV6地址)
Router(config-if)#Ipv6 add  2002:接口IPV4::1/128(IPV4:2.1.1.1,IPV6 :2002:201:101::1。IPV4:202.100.3.1 IPV6:2002:CA64:301::1)
Router(config)#Ipv6 route 2002::/64  tunnel 1(地址规划也应该是2002:IPV4地址)

访问外网时,地址不是2002的地址,则在tunnel上写一条默认路由,下一跳写接口IP,不能写接口

  • ISATAP隧道(RFC 4214)
    主机到路由器的应用
    主机配置isatap:以windows为例
CMD:netsh interface isatap set router 远端地址

路由器isatap隧道地址格式:

任意前缀/64

0000:5EFE:

IPV4地址

Translation(翻译):把IPV4地址翻译成IPV6

NAT-PT