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

Len*_*art 8 ipv6

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

jam*_*att 14

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

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

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


phi*_*hag 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 (...)
Run Code Online (Sandbox Code Playgroud)

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

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

  • 由于[RFC 3879](http://tools.ietf.org/html/rfc3879)不推荐使用本地地址,因此不能使用.大多数IPv6主机实现无论如何都不能正确处理它们. (2认同)
  • 我不同意这应该是downvoted,@ meshag引用链接本地地址而不是site-local.换句话说,如果我发送给另一个`fe80 ::/64`,那是有效的. (2认同)