为什么IPv6允许单个接口具有多个地址?

时间:2012-03-27 09:26:44

标签: linux ipv6

"单个接口也可能有多个任何类型的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中定义)

谢谢你们!

1 个答案:

答案 0 :(得分:34)

早期的IPv4堆栈不支持每个接口多个IP地址。后来的改进启用了“辅助”地址。这被发现在实践中非常有用,并且IPv6的设计者选择强制支持它作为标准的一部分,以便您始终可以依赖它。

IPv6的设计者所做的不仅仅是强制要求。他们使其成为IPv6协议的重要组成部分。每个IPv6接口都有一个链路本地IP地址。如果接口也能够在更大的网络(例如Internet)上进行通信,那么它还具有全局范围地址。那是两个最小的地址,就在那里。如果主机支持多宿主互联网连接,它可能拥有更多地址。每个接口的多个IP地址在IPv6中并不像在IPv4中那样是事后的想法。

你提到缺点,但除了配置错误,我不认为这种情况会导致任何问题。 (也许你可以详细说明你的设置以及为什么一个IP地址可以工作而不是另一个;但是我保证你会遇到某种错误导致它。)

另一方面,想想优势:

  • 即使没有可用的网络基础设施(即路由器),设备也可以使用链路本地地址在本地LAN上发现彼此。稍后,如果添加了路由器并且全局范围地址可用,则这些地址会扩充地址集,它们不会替换链路本地地址;因此,使用链路本地地址的现有通信不会中断。
  • 当删除,添加或替换Internet连接时,可以撤消或添加该组中的一个IP地址,而不会影响其他IP地址。由于“depracated”状态,这可以实现从一个IP地址到另一个IP地址的优雅重新编号,界面支持一段时间。

另外:请记住,几乎所有IPv4堆栈都支持每个接口多个地址,因此这与v4和v6之间没有太大区别。它只是不支持它的旧v4堆栈。区别在于v6具有自动管理地址集的方法,但这在v4中不存在。