精华内容
下载资源
问答
  • ipv6 scope
    2021-05-26 07:01:39

    闲谈IPv6-IPv6地址的scope到底是什么?

    发布时间:2019-03-24 18:03,

    浏览次数:1605

    , 标签:

    IPv

    scope

    周日,大早上六点多和疯子去菜市场买了菜,顺便打了一壶糯米烧酒,回来把我的正则安哥哄睡了之后,继续思考IPv6的细节。

    一台主机启动后,每一块网卡都会自动生成一个fe80打头的 链路本地地址

    ,这个地址在Linux上你删都删不掉,不信你试试,在Windows是可以删掉的,但是只要你重置网卡,它就会自动生成…

    这个所谓的链路本地地址到底有何怪异?

    我的主机安装两块网卡,分别连接两个网络, 在系统初启的时候,两块网卡分别自动获得了两个IPv6地址:

    enp0s8:fe80::fbb2:a1e:e59:15eb/64

    enp0s9:fe80::ac5b:e7c6:9d00:797d/64

    其中enp0s9的对端连接着另外一台机器的网卡,其网卡IP是:

    eth0:fe80::ebad:9145:fe66:55cc/64

    这里,enp0s9和eth0是直连的,二者可以直接ping通吗?

    不能!

    如果像IPv4那样理解为仅仅 二者是直连的 以及 二者是同一网段的 就可以ping通的话,那就错了。

    事实上,你会发现, 全世界所有的网卡的链路本地地址都是同一个fe80::/16一个网段的! ,但是它们却不一定能彼此ping通。这是和IPv4之间的大不同。

    IPv4之所以直连的同一网段的两个地址之间可以互通,完全是因为当你配置IP地址的时候,系统自动生成的 链路路由

    使其可以互通,但是IPv6的所有链路本地地址都在一个网段,仅仅靠IP路由,便不足以使其互通。

    IPv6地址是有严格scope限制的, 两个地址首先要被限制在自己的scope内,其次才考虑路由的连通性。

    比如两个链路本地地址,必须是二层直连的,才能相互ping通。为了避免歧义,在上面的例子中,在操作上,如果你想从enp0s9这块网卡的链路本地地址ping通对端的eth0链路本地地址,那么你必须使用下面的命令:

    ping6 fe80::ebad:9145:fe66:55cc%enp0s9

    注意,后面的 %enp0s9 是必须的,它规定了 一条链路的维度!

    否则,没有这个维度限制的话,ping6命令接下来的底层就会按照全球地址最长前缀匹配规则去寻址,全世界所有网卡,包括该主机自己的多块网卡,均拥有相同网段fe80::/16的地址,按照IPv4的规则,这实属同一网段,这会令其费解!左边也有链路路由,右边也有同样的链路路由,到底往哪走!?

    有了链路scope维度的限制,链路路由又成了唯一的了,这样自然就通了。

    IPv6声称自己实现了严格的地址scope,然而IPv6除了链路本地地址以及本地主机地址有着严格的scope限制之外,别的scope再也没有类似的限制了。我们知道IPv6的socpe包括host,link,site,global,但是site被废弃了,因此就再也没有了严格的限制。

    不过,思想还是重要的,这是IPv6的创举,IPv4就没有类似的机制。但是IPv4模拟了scope,比如169.254这个网段的地址,就模拟了link-local链路本地地址。

    总结一下:

    * IPv6的连通性首先要在自己的scope内考虑。

    * IPv6地址在自己的scope内基于IP路由来确保连通性。

    浙江温州皮鞋湿,下雨进水不会胖。

    更多相关内容
  • IPv6 Scope:Link连接问题

    万次阅读 2018-10-09 10:31:55
    Linux中设置的IPv6地址有两种类型,一种是Scope:Global,另一种为Scope:Link 。后者是有MAC地址通过一定的格式转换出来的全球唯一的本地链路地址。 ~ # ifconfig eth0 Link encap:Ethernet HWaddr 1C:C3:16:63:B1...

    Linux中设置的IPv6地址有两种类型,一种是Scope:Global,另一种为Scope:Link

    。后者是有MAC地址通过一定的格式转换出来的全球唯一的本地链路地址。

    ~ # ifconfig
    eth0      Link encap:Ethernet  HWaddr 1C:C3:16:63:B1:72  
              inet addr:192.168.9.51  Bcast:0.0.0.0  Mask:255.255.252.0
              inet6 addr: 2001:f80:754::152/64 Scope:Global
              inet6 addr: fe80::1ec3:16ff:fe63:b172/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:7131257 errors:0 dropped:823 overruns:0 frame:0
              TX packets:2902060 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:3880346601 (3.6 GiB)  TX bytes:1387657987 (1.2 GiB)
              Interrupt:55 
    
    eth1      Link encap:Ethernet  HWaddr 1C:C3:16:63:B1:73  
              inet addr:192.168.10.200  Bcast:0.0.0.0  Mask:255.255.255.0
              inet6 addr: fe80::1ec3:16ff:fe63:b173/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:2111508 errors:0 dropped:1068 overruns:0 frame:0
              TX packets:103 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:160857475 (153.4 MiB)  TX bytes:19518 (19.0 KiB)
              Interrupt:55 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:65536  Metric:1
              RX packets:10 errors:0 dropped:0 overruns:0 frame:0
              TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:1294 (1.2 KiB)  TX bytes:1294 (1.2 KiB)

    项目中需要连接到对方的物理IPv6地址,但是在实际使用中发现两个问题,1、不能直接ping通。2、ping通了但是connect不上。这是因为,Scope:Link地址必须绑定网卡。

    root@IT-PC-135:/home/# ping6 fe80::1ec3:16ff:fe21:44bf
    ping: unknown host fe80::1ec3:16ff:fe21:44bf
    
    root@IT-PC-135:/home/# ping6 -I eth0 fe80::1ec3:16ff:fe21:44bf
    PING fe80::1ec3:16ff:fe21:44bf(fe80::1ec3:16ff:fe21:44bf) from fe80::922b:34ff:fe4e:70f4 eth0: 56 data bytes
    64 bytes from fe80::1ec3:16ff:fe21:44bf: icmp_seq=1 ttl=64 time=1.85 ms
    64 bytes from fe80::1ec3:16ff:fe21:44bf: icmp_seq=2 ttl=64 time=0.868 ms
    64 bytes from fe80::1ec3:16ff:fe21:44bf: icmp_seq=3 ttl=64 time=1.45 ms
    

    实际代码中的解决办法呢?同理,需要再connect之前绑定网卡,具体实现代码为:

    setsockopt(sk, SOL_SOCKET, SO_BINDTODEVICE, "eth0", sizeof("eth0"));

    但是这里就出现了一个问题,如果是双网卡要绑定eth0呢还是eth1呢?哈哈,这里还没有想到好的办法,暂时就是遍历绑定网卡。

     

     

    展开全文
  • IPV6知识

    2021-05-18 11:54:53
    定义IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation)。它是IETF(Internet工程任务组)设计的一套规范,是IPv4(Internet Protocol Version 4)的升级版本。...

    定义

    IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation)。它是IETF(Internet工程任务组)设计的一套规范,是IPv4(Internet Protocol Version 4)的升级版本。

    IPv6地址的书写格式
    IPv6的128位IP地址有以下两种表示形式。

    • X:X:X:X:X:X:X:X
      • 在这种形式中,128位的IPv6地址被分为8组,每组的16位用4个十六进制字符(0~9,A~F)来表示,组和组之间用冒号(:)隔开。其中每个“X”代表一组十六进制数值。比如下面这个IPv6地址:
        2001:db8:130F:0000:0000:09C0:876A:130B
        为了书写方便,每组中的前导“0”都可以省略,所以上述地址可写为:
        2001:db8:130F:0:0:9C0:876A:130B。
      • 另外,地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替,这样可以压缩IPv6地址书写时的长度,所以上述地址又可以进一步简写为:
        2001:db8:130F::9C0:876A:130B。
        在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每段中0的个数。
    • X:X:X:X:X:X:d.d.d.d
      IPv4映射IPv6地址。地址格式为:0:0:0:0:0:FFFF:IPv4-address。该地址用来将IPv4节点的地址表示为IPv6地址。
      其中“X”代表高阶的六组数字,用十六进制数来表示每组的16比特。“d”代表低阶的四组数字,用十进制数表示每组的8比特。后边的部分(d.d.d.d)其实就是一个标准的IPv4地址。


    IPv6地址的结构
    一个IPv6地址可以分为如下两部分:

    • 网络前缀:n比特,相当于IPv4地址中的网络ID
    • 接口标识:128-n比特,相当于IPv4地址中的主机ID

    地址2001:DB8:6101:1::E0:F726:4E58 /64的构成如图1所示。
    图1 地址2001:DB8:6101:1::E0:F726:4E58 /64的构成示意图

     

    v2-a48ce9ca3c8feeccc6e57edbb333f9eb_b.jpg


    IPv6的地址分类

    IPv6主要有三种地址,分为单播地址、任播地址(Anycast Address)、组播地址三种类型。和IPv4相比,取消了广播地址类型,以更丰富的组播地址代替,同时增加了任播地址类型。

    IPv6单播地址IPv6单播地址标识了一个接口,由于每个接口属于一个节点,因此每个节点的任何接口上的单播地址都可以标识这个节点。发往单播地址的报文,由此地址标识的接口接收。 IPv6定义了多种单播地址,目前常用的单播地址有:未指定地址、环回地址、全球单播地址、链路本地地址、唯一本地地址ULA(Unique Local Address)。

    • 单播地址(Unicast):唯一标识一个接口,类似于IPv4的单播地址。发送到单播地址的数据包将被传输到此地址所标识的唯一接口。
      配置的全球单播地址不能与该地址对应的网络前缀相同,因为该类型的地址是设备预留的子网路由器任播地址。对于前缀长度是127位的IPv6地址,不受该规则限制。
    • 未指定地址 IPv6中的未指定地址即 0:0:0:0:0:0:0:0/128 或者::/128。该地址可以表示某个接口或者节点还没有IP地址,可以作为某些报文的源IP地址(例如在NS报文的重复地址检测中会出现)。源IP地址是::的报文不会被路由设备转发。
    • 环回地址 IPv6中的环回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。环回与IPv4中的127.0.0.1作用相同,主要用于设备给自己发送报文。该地址通常用来作为一个虚接口的地址(如Loopback接口)。实际发送的数据包中不能使用环回地址作为源IP地址或者目的IP地址。
    • 全球单播地址 全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。 全球单播地址由全球路由前缀(Global routing prefix)、子网ID(Subnet ID)和接口标识(Interface ID)组成,其格式如图2所示: 图2 全球单播地址格式

     

    v2-5548ac1d64582bf33f3d937d1ca4ddbb_b.jpg

    Global routing prefix:全球路由前缀。由提供商(Provider)指定给一个组织机构,通常全球路由前缀至少为48位。目前已经分配的全球路由前缀的前3bit均为001。 Subnet ID:子网ID。组织机构可以用子网ID来构建本地网络(Site)。子网ID通常最多分配到第64位。子网ID和IPv4中的子网号作用相似。 Interface ID:接口标识。用来标识一个设备(Host)。

    • 链路本地地址 链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),同时将接口标识添加在后面作为地址的低64比特。 当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀+EUI-64规则形成的接口标识)。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用。 以链路本地地址为源地址或目的地址的IPv6报文不会被路由设备转发到其他链路。链路本地地址的格式如图3所示: 图3 链路本地地址格式

     

    v2-f574eaaed9061feaaf3d9ea273e50f0b_b.jpg
    • 唯一本地地址 唯一本地地址是另一种应用范围受限的地址,它仅能在一个站点内使用。由于本地站点地址的废除(RFC3879),唯一本地地址被用来代替本地站点地址。 唯一本地地址的作用类似于IPv4中的私网地址,任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址。唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发。唯一本地地址格式如图4所示: 图4 唯一本地地址格式

     

    v2-46f8d39ea832f0e72557bdecf8753837_b.jpg

    Prefix:前缀;固定为FC00::/7。 L:L标志位;值为1代表该地址为在本地网络范围内使用的地址;值为0被保留,用于以后扩展。 Global ID:全球唯一前缀;通过伪随机方式产生。 Subnet ID:子网ID;划分子网使用。 Interface ID:接口标识。 唯一本地地址具有如下特点:

    • 具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)。
    • 可以进行网络之间的私有连接,而不必担心地址冲突等问题。
    • 具有知名前缀(FC00::/7),方便边缘设备进行路由过滤。
    • 如果出现路由泄漏,该地址不会和其他地址冲突,不会造成Internet路由冲突。
    • 应用中,上层应用程序将这些地址看作全球单播地址对待。
    • 独立于互联网服务提供商ISP(Internet Service Provider)。


    IPv6任播地址任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。
    任播地址设计用来在给多个主机或者节点提供相同服务时提供冗余功能和负载分担功能。目前,任播地址的使用通过共享单播地址方式来完成。将一个单播地址分配给多个节点或者主机,这样在网络中如果存在多条该地址路由,当发送者发送以任播地址为目的IP的数据报文时,发送者无法控制哪台设备能够收到,这取决于整个网络中路由协议计算的结果。这种方式可以适用于一些无状态的应用,例如DNS等。
    IPv6中没有为任播规定单独的地址空间,任播地址和单播地址使用相同的地址空间。目前IPv6中任播主要应用于移动IPv6。

    • 任播地址(Anycast):用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据包被传输给此地址所标识的一组接口中距离源节点最近的一个接口(最“近”的一个,是指根据路由协议的距离度量)。
      应用场景:当移动主机需要与它的“home”子网上的移动代理之一通信时,它将用该子网路由设备的任播地址。
      具体地址规定:任播地址没有独立的地址空间,它们可使用任何单播地址的格式。因此,需要一种语法来区别任播地址和单播地址。
      对于接口标识全为0的IPv6地址,标准协议中定义为子网路由器任播地址(Subnet-Router anycast address)。如图2所示,subnet prefix是单播IPv6地址前缀,由用户配置单播IPv6地址时指定。
      图2 子网路由器任播地址格式

     

    v2-9ef4e7f3014f8026dd4d603e8af4b678_b.jpg


    IPv6组播地址IPv6的组播与IPv4相同,用来标识一组接口,一般这些接口属于不同的节点。一个节点可能属于0到多个组播组。发往组播地址的报文被组播地址标识的所有接口接收。例如组播地址FF02::1表示链路本地范围的所有节点,组播地址FF02::2表示链路本地范围的所有路由器。
    一个IPv6组播地址由前缀,标志(Flag)字段、范围(Scope)字段以及组播组ID(Global ID)4个部分组成:

    • 前缀:IPv6组播地址的前缀是FF00::/8。
    • 标志字段(Flag):长度4bit,目前只使用了最后一个比特(前三位必须置0),当该位值为0时,表示当前的组播地址是由IANA所分配的一个永久分配地址;当该值为1时,表示当前的组播地址是一个临时组播地址(非永久分配地址)。
    • 范围字段(Scope):长度4bit,用来限制组播数据流在网络中发送的范围,该字段取值和含义的对应关系如图5所示。
    • 组播组ID(Group ID):长度112bit,用以标识组播组。目前,RFC2373并没有将所有的112位都定义成组标识,而是建议仅使用该112位的最低32位作为组播组ID,将剩余的80位都置0。这样每个组播组ID都映射到一个唯一的以太网组播MAC地址(RFC2464)。
      IPv6组播地址格式如图5所示:
      图5 IPv6组播地址格式

     

    v2-d4845ada93ed5f36203577863a663c5a_b.jpg
    • 被请求节点组播地址
      被请求节点组播地址通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。
      IPv6中没有广播地址,也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。在IPv6中,这个功能通过邻居请求NS(Neighbor Solicitation)报文完成。当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。
      被请求节点组播地址由前缀FF02::1:FF00:0/104和单播地址的最后24位组成。

    IPv6报文格式

    IPv6报文由IPv6基本报头、IPv6扩展报头以及上层协议数据单元三部分组成。
    上层协议数据单元一般由上层协议报头和它的有效载荷构成。有效载荷是指紧跟IPv6基本报头的数据包,包含IPv6扩展报头。例如,有效载荷可以是一个ICMPv6报文、一个TCP6报文或一个UDP6报文。
    IPv6基本报头
    IPv6基本报头有8个字段,固定大小为40字节,每一个IPv6数据报都必须包含报头。基本报头提供报文转发的基本信息,会被转发路径上面的所有设备解析。
    IPv6基本报头格式如图1所示。
    图1 IPv6基本报头格式

     

    v2-d09fab13eb45adb2f3ce9357ebe78008_b.jpg


    IPv6和IPv4相比,去除了IHL、Identification、Flags、Fragment Offset、Header Checksum、Options、Padding域,只增了流标签域,因此IPv6报文头的处理较IPv4大大简化,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有结构就能做到,理论上可以无限扩展,体现了优异的灵活性。下面为读者介绍IPv6扩展报头的一些信息。

     

    v2-2741d8b81672c1dd374bb9e4fb04e684_b.jpg

    ICMPv6
    ICMPv6(Internet Control Message Protocol for the IPv6)是IPv6的基础协议之一。
    在IPv4中,Internet控制报文协议ICMP(Internet Control Message Protocol)向源节点报告关于向目的地传输IP数据包过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息,如:目的不可达、数据包超长、超时、回应请求和回应应答等。在IPv6中,ICMPv6除了提供ICMPv4常用的功能之外,还是其它一些功能的基础,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等。
    ICMPv6的协议类型号(即IPv6报文中的Next Header字段的值)为58。ICMPv6的报文格式如图1所示:
    图1 ICMPv6报文格式

     

    v2-923ce4ea7c676520cdb42b7959996e7c_b.jpg


    报文中字段解释如下:

    • Type:表明消息的类型,0至127表示差错报文类型,128至255表示消息报文类型。
    • Code:表示此消息类型细分的类型。
    • Checksum:表示ICMPv6报文的校验和。

    ICMPv6错误报文的分类
    ICMPv6错误报文用于报告在转发IPv6数据包过程中出现的错误。ICMPv6错误报文可以分为以下4种:

    • 目的不可达错误报文
      在IPv6节点转发IPv6报文过程中,当设备发现目的地址不可达时,就会向发送报文的源节点发送ICMPv6目的不可达错误报文,同时报文中会携带引起该错误报文的具体原因。
      目的不可达错误报文的Type字段值为1。根据错误具体原因又可以细分为:
      • Code=0:没有到达目标设备的路由。
      • Code=1:与目标设备的通信被管理策略禁止。
      • Code=2:未指定。
      • Code=3:目的IP地址不可达。
      • Code=4:目的端口不可达。
    • 数据包过大错误报文
      在IPv6节点转发IPv6报文过程中,发现报文超过出接口的链路MTU时,则向发送报文的源节点发送ICMPv6数据包过大错误报文,其中携带出接口的链路MTU值。数据包过大错误报文是Path MTU发现机制的基础。
      数据包过大错误报文的Type字段值为2,Code字段值为0。
    • 时间超时错误报文
      在IPv6报文收发过程中,当设备收到Hop Limit字段值等于0的数据包,或者当设备将Hop Limit字段值减为0时,会向发送报文的源节点发送ICMPv6超时错误报文。对于分段重组报文的操作,如果超过定时时间,也会产生一个ICMPv6超时报文。
      时间超时错误报文的Type字段值为3,根据错误具体原因又可以细分为:
    • Code=0:在传输中超越了跳数限制。
    • Code=1:分片重组超时。
    • 参数错误报文
      当目的节点收到一个IPv6报文时,会对报文进行有效性检查,如果发现问题会向报文的源节点回应一个ICMPv6参数错误差错报文。
      参数错误报文的Type字段值为4,根据错误具体原因又可以细分为:
      • Code=0:IPv6基本头或扩展头的某个字段有错误。
      • Code=1:IPv6基本头或扩展头的NextHeader值不可识别。
      • Code=2:扩展头中出现未知的选项。

    ICMPv6信息报文的分类
    ICMPv6信息报文提供诊断功能和附加的主机功能,比如多播侦听发现和邻居发现。常见的ICMPv6信息报文主要包括回送请求报文(Echo Request)和回送应答报文(Echo Reply),这两种报文也就是通常使用的Ping报文。

    • 回送请求报文:回送请求报文用于发送到目标节点,以使目标节点立即发回一个回送应答报文。回送请求报文的Type字段值为128,Code字段的值为0。
    • 回送应答报文:当收到一个回送请求报文时,ICMPv6会用回送应答报文响应。回送应答报文的Type字段的值为129,Code字段的值为0。

    Path MTU
    在IPv4网络中,报文如果过大,则需要分片进行发送,所以在每个节点发送报文之前,设备都会根据发送接口的最大传输单元MTU(Maximum Transmission Unit)对报文进行分片。在IPv6网络中,为了减少中间转发设备的处理压力,中间转发设备不对IPv6报文进行分片,报文的分片值在源节点进行。当中间转发设备的接口收到一个报文后,如果发现报文长度比转发接口的MTU值大,则会将其丢弃;同时将转发接口的MTU值通过ICMPv6报文的“Packet Too Big”消息发给源节点,源节点以该值重新发送IPv6报文,这样带来了额外流量开销。PMTU发现协议可以动态发现整条传输路径上各链路的MTU值,减少由于重传带来的额外流量开销。
    PMTU发现协议是通过ICMPv6的Packet Too Big报文来完成的。首先源节点假设PMTU就是其出接口的MTU,发出一个试探性的报文,当转发路径上存在一个小于当前假设的PMTU时,转发设备就会向源节点发送Packet Too Big报文,并且携带自己的MTU值,此后源节点将PMTU的假设值更改为新收到的MTU值继续发送报文。如此反复,直到报文到达目的地之后,源节点就能知道到达目的地的PMTU了。
    PMTU的工作过程如图1所示。
    图1 PMTU原理

     

    v2-90a0b85edfd6e30c1aa2bf3ce0956e26_b.jpg


    整条传输路径需要通过4条链路,每条链路的MTU分别是1500、1500、1400、1300,当源节点发送一个分片报文的时候,首先按照PMTU为1500进行分片并发送分片报文,当到达MTU为1400的出接口时,设备返回Packet Too Big错误,同时携带MTU值为1400的信息。源节点接收到之后会将报文重新按照PMTU为1400进行分片并再次发送一个分片报文,当分片报文到达MTU值为1300的出接口时,同样返回Packet Too Big错误,携带MTU值为1300的信息。之后源节点重新按照PMTU为1300进行分片并发送分片报文,最终到达目的地,这样就找到了该路径的

     

     

    展开全文
  • inet6 x: x : x:x ::1/64 scope global tentative dadfailed;无法使用命令ping6 这个地址

    ipv6地址显示异常:

    inet6 x: x : x:x ::1/64 scope global tentative dadfailed

    无法使用命令ping6 这个地址,原因是当另一台主机关闭,但ipv6地址未被删除,并且新主机无法使用此地址时。

    为防止这种情况发生:

    $ sysctl -a | grep accept_dad #查看physic网卡的值
    net.ipv6.conf.all.accept_dad = 0
    net.ipv6.conf.default.accept_dad = 0
    net.ipv6.conf.eth0.accept_dad = 0
    net.ipv6.conf.eth1.accept_dad = 0
    net.ipv6.conf.lo.accept_dad = -1
    net.ipv6.conf.tun0.accept_dad = -1
    net.ipv6.conf.tun1.accept_dad = -1
    
    # 然后将physic网卡的值更改为0
    $ sysctl -w net.ipv6.conf.eth0.accept_dad=0
    $ sysctl -w net.ipv6.conf.eth1.accept_dad=0
    

    accept_dad的解释如下:

    accept_dad - INTEGER
        Whether to accept DAD (Duplicate Address Detection).#是否接受DAD(重复地址检测)。
            0: Disable DAD #关闭检测
            1: Enable DAD (default)#开启检测(默认)
            2: Enable DAD, and disable IPv6 operation if MAC-based duplicate 
                link-local address has been found.#如果发现基于MAC的重复链路本地地址,则禁用IPv6操作。
    

    来自:内核文档中的ip-sysctl.txt

    展开全文
  • 当我检索网络中所有IPv6地址的列表时,我得到一个名为scope的字段,如下所示:inet6 addr: 2001:470:1:82::11/64 Scope:Globalinet6 addr: 2001:470:1:82::10/64 Scope:Globalinet6 addr: 2001:470:1:82::13/64 Scope:...
  • CentOS下开启IPv6

    千次阅读 2021-01-16 23:55:53
    CentOS新版本均正常开启了IPv6,如果没有开启,可以按以下方式开启:开启服务器的IPV6服务# 打开配置文件[root@CentOS ~]# vi /etc/sysctl.conf# 修改为下面的状态net.ipv6.conf.all.disable_ipv6 = 0...
  • 我的目标是为每个docker容器提供可路由的公共IPv6地址.我希望能够使用IPv6协议连接进出容器.我正在使用Linode,我已经被分配了一个公共IPv6池:2600:3c01:e000:00e2:: / 64 routed to 2600:3c01::f03c:91ff:feae:d7d7...
  • 本人最近getaddrinfo函数获取本机IP地址,本机的IPV4地址能正确获得,但本机IPV6地址只能获得环路地址,即::1。为什么不能获得IPV6的Global地址或链路本地地址。恳请指点,不胜感激!如果还有其它获取方法请告知,...
  • $ adb shell ip route show default dev rmnet_data7 scope link 此时说明已添加完成,再 ping 一下之前的 IPv6 地址,就可以通了。 $ adb shell ping6 -I rmnet_data7 2409:8010:8210:1:1004:1004:0:8 PING 2409:...
  • 近日,家里的电信adsl运营商给了IPV6,windows,mac图形桌面都自动获取到了,linux没有开自动获取,需要手动设置.查看/proc/net/if_inet6文件是否存在以确定你的系统是否支持IPv6# ll /proc/...
  • Linux下IPV6 Connect

    千次阅读 2018-06-05 19:16:19
    最近在模拟测试IPv6客户端连接服务器(使用的是链路本地地址fe80::20c:29ff:fe98:77d2),但是总会报参数不正确,后来我使用strace追踪java-SocketTest(ipv6测试工具)的连接发现Connect需要初始化sin6_scope_id...
  • IPv6 链接-本地地址和站点本地地址

    千次阅读 2021-08-14 01:51:01
    IPv6 链接-本地地址和站点本地地址05/31/2018本文内容IPv6 链接-本地地址和站点本地地址称为作用域地址。 Windows Socket (Winsock) API 支持 sockaddr _ in6结构中的 sin6 _ 范围 _ id 成员,以便与范围内的地址...
  • ipv6 unicast-routing 全局开启ipv6 ipv6 dhcp pool cisco 配置地址池 address prefix 2001:30:10::/64 interface Ethernet0/0 ipv6 address 2001:11::1/64 接口配置ipv6地址 ipv6 enable 接口开启ipv6 ...
  • 操作如下ipv4的地址重启eth1后没有丢失、ipv6的丢失了,如何才能让ipv6的地址不丢失呢?有知道的大侠告诉下、谢谢。#ipaddradddeveth12011:04:20::1/64#ipaddradddeveth111.11.1.1/24#ipaddrshoweth13:eth1:mtu1500...
  • IPv6 地址的 tentative 状态

    千次阅读 2017-11-07 13:38:08
    IPv6 地址的 tentative 状态
  • Centos7 网卡关闭IPV6

    千次阅读 2019-05-29 17:28:59
    inet 192.168.239.201/24 brd 192.168.239.255 scope global noprefixroute ens32 valid_lft forever preferred_lft forever ok,无法下载问题解决 [root@gt-zabbix ~]# wget ...
  • 获取本地ipv4和ipv6信息

    千次阅读 2020-11-15 20:41:26
    声明: 本文是我在工作中遇到的网络相关的问题,以及自己的一些总结,希望可以对你有所帮助。...通过调用getifaddrs函数来获得本地ipv4和ipv6: 具体参考:https://man7.org/linux/man-pages/man3/getifaddrs....
  • IPv6源地址选择

    2021-03-06 09:01:55
    源地址的选择依据出接口、目的地址、label、参数prefs和地址类型scope等参数来确定,在函数ipv6_dev_get_saddr开始,先行将这些判断参数组织到结构ipv6_saddr_dst中。 scores记录每个可选地址的得分,最终分数高的...
  • IPv6闲谈-一起玩玩IPv6自动配置

    千次阅读 2019-03-06 00:47:47
    昨夜梦里惊魂,1997年,安阳市文峰中路老口腔医院门口那个卖冰糖葫芦的老人,他死了。...上周末,我想再写一篇关于IPv6自动配置的文章,但是周日下午疯子开车带我去我和室友暂住了小半年的小屋子里拉行...
  • IPv6专题系列:01. IPv6地址介绍

    千次阅读 2022-03-16 12:52:39
    IPv6地址格式 IPv6地址从IPv4地址的32 bits扩展到128 bits,IPv6地址的表示、书写方式也从IPv4的点分十进制,如192.168.1.1,转变为: 即,16 bits一组,采用16进制表示,共8组字段,每个字段之间使用 “:” ...
  • IPv6基础:IPv6地址及其范围区域

    千次阅读 2022-01-17 16:46:54
    IPv6地址格式 IPv6地址是一个128比特的无符号整数,用来标识一个或多个网络接口,如240c::0001、fe80::28ae:d1b2:da61:102a等。 与IPv4不同,一个网络接口可以存在一个或多个IPv6地址。 IPv6前缀对应IPv4子网掩码。 ...
  • ipv6、ndp过渡技术

    2019-02-21 14:18:54
    ipv6、ndp过渡技术,问题:开始分配时没有按连续性子网分配,导致全球现存的公网路由汇总后仍有大约23万,我国的IPv4地址多为不连续的、可划分子网范围小的地址。 为了应对IPv4地址不够用的情况,提出了IPv6
  • 闲谈IPv6-一起玩转IPv6地址自动配置

    万次阅读 多人点赞 2019-03-06 00:15:57
    昨夜梦里惊魂,1997年,安阳市文峰中路老口腔医院门口那个卖冰糖葫芦的老人,他死了。...上周末,我想再写一篇关于IPv6自动配置的文章,但是周日下午疯子开车带我去我和室友暂住了小半年的小屋子里拉行...
  • centos配置ipv6

    千次阅读 2022-02-22 15:54:28
    目前国内大部分服务器和PC不支持IPV6地址的,但是服务器上本身是可以正常开启IPV6服务,有部分程序在服务器上运行的时候,需要服务器能监听一个ipv6地址才行,因此本文档指导如何在centos服务器上启用ipv6地址从而...
  • IPv6:配置Docker支持IPv6

    千次阅读 2021-09-03 14:31:24
    首先,Docker对IPv6的支持肯定没有IPv4好;其次,如果可以使用Docker的host网络模式,就可以借用host的IPv6协议栈进行通信,而无需多余配置;以实现容器ipv6通信的需求。 Docker开启IPv6支持 vi /etc/docker/...
  • IPV6 技术解析.pptx

    2021-07-14 11:21:51
    IPV6技术
  • IPV6地址详解.docx

    2021-06-12 15:14:21
    非常简洁,能够让你从总体把握IPv6的基础知识

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,014
精华内容 5,605
热门标签
关键字:

ipv6 scope