"单个接口也可能有多个任何类型的IPv6地址(单播,任播和多播)或范围"
----引用表格RFC 4291
最近我在实验过程中遇到了这个问题。我经历了RFC 4291,没有任何线索......
以下是我的实验简介:
有两台主机,我分别为它们分配了两个IPv6地址。然后,我测试了两台主机之间的连接。我使用命令" ping6 ipv6_addr"。但事实证明它不能通过命令ping6到达对等主机的两个地址。
通过示例*(两个命令在主机A上执行,使用linux kenel 2.6.32)更加敏锐*:
ping6 addr_b_1 ---它的工作原理
ping6 addr_b_2 ---无法通过
我想和你们讨论两个问题:
1.为什么ipv6协议允许这种机制,单个接口有多个地址?
2.为什么我不能同时到达主机a的两个地址。(应该是这种情况.IPv6的默认地址选择在RFC 3484中定义)
谢谢你们!
答案 0 :(得分:34)
早期的IPv4堆栈不支持每个接口多个IP地址。后来的改进启用了“辅助”地址。这被发现在实践中非常有用,并且IPv6的设计者选择强制支持它作为标准的一部分,以便您始终可以依赖它。
IPv6的设计者所做的不仅仅是强制要求。他们使其成为IPv6协议的重要组成部分。每个IPv6接口都有一个链路本地IP地址。如果接口也能够在更大的网络(例如Internet)上进行通信,那么它还具有全局范围地址。那是两个最小的地址,就在那里。如果主机支持多宿主互联网连接,它可能拥有更多地址。每个接口的多个IP地址在IPv6中并不像在IPv4中那样是事后的想法。
你提到缺点,但除了配置错误,我不认为这种情况会导致任何问题。 (也许你可以详细说明你的设置以及为什么一个IP地址可以工作而不是另一个;但是我保证你会遇到某种错误导致它。)
另一方面,想想优势:
另外:请记住,几乎所有IPv4堆栈都支持每个接口多个地址,因此这与v4和v6之间没有太大区别。它只是不支持它的旧v4堆栈。区别在于v6具有自动管理地址集的方法,但这在v4中不存在。