IPv6接口上的链路本地和全局IP

时间:2011-02-06 11:25:00

标签: ipv6

我目前正在尝试了解IPv6地址的工作原理。存在分别用于小型和组织网络的链接本地和站点本地地址。但如果其中一个客户也有互联网接入,它需要两个IP,对吗?一个链接/站点本地和一个全球地址。如何由接口和路由器管理?一个接口需要两个IP,因为IPv6中没有NAT。

2 个答案:

答案 0 :(得分:14)

通常,接口具有一个链路本地范围单播地址和零个或多个全局范围单播地址。 (它们也可能是某些有限数量的组播组的成员。)地址可以手动分配,也可以像IPv4中那样由DHCPv6分配,但是当路由器广告允许时,它们有时也可能(并不总是)自动生成。一些主机实现将自动为路由器通告的每个前缀生成一个持久的全局地址,并为其提供一个辅助隐私地址,c.f。 RFC 4191。在使用DHCPv6分配地址的情况下,主机可能会请求使用一个或多个临时地址而不是隐私地址。

不要使用站点本地地址。它们被RFC 3879弃用,主要是因为sin6_scope_id字段没有为站点本地地址定义良好。在getifaddrs()返回的列表中看到它们的应用程序应该使用标准错误流的诊断消息丢弃它们。应用程序应该期望网络管理员将使用唯一本地地址(ULA)而不是站点本地地址,例如。 RFC 4941

应用软件通常无法确定ULA地址的可达性。您唯一知道的就是它们无法通过任何通过全局公共默认区域的路径到达。它们可以从因特网上的任何地方到达,其中在自治系统之间的双边协议中交换到ULA前缀的路由。另一方面,它们通常会被IPv6家庭网关公布,仅供本地用户使用,并且在家庭以外的任何地方都无法访问,c.f。 I-D.ietf-v6ops-ipv6-cpe-router

答案 1 :(得分:8)

每个接口都有一个链接本地地址,还可以选择一个或多个公共或站点本地地址。看起来像这样:

$ ip -o -6 addr show dev eth0
eth0    inet6 2001:abcd:ef::1/64 scope global (..)
eth0    inet6 fe80::1234:5678:2/64 scope link (...)

发送内容时,发送到链接本地地址(即fe80::/64)的所有内容都是从链接本地地址发送的,其他内容都来自全局地址。

(并不总是可以选择:例如,如果回答ping,则答案的源IP将是请求的目标IP,无论哪个地址。)