我目前正试图了解IPv6地址如何工作。分别用于小型和组织网络的链接本地和本地本地地址。但是,如果其中一个客户也可以访问互联网,则需要两个IP,对吗?一个链接/网站本地和一个全球地址。接口和路由器是如何管理的?一个接口需要两个IP,因为IPv6中没有NAT。IPv6接口上的本地链接和全局IP
8
A
回答
14
在一般情况下,接口有一个链路本地范围单播地址和零个或多个全局范围单播地址。 (它们也可能是一些有限数量的多播组的成员。)地址可以像在IPv4中一样手动或通过DHCPv6分配,但当路由器通告允许时,它们有时(并非总是)会自动生成。一些主机实现会自动为路由器通告的每个前缀生成一个永久性全局地址,并为其附带一个辅助隐私地址,c.f. RFC 4191。在使用DHCPv6分配地址的情况下,主机可能会请求一个或多个临时地址而不是隐私地址。
请勿使用站点本地地址。它们被RFC 3879弃用,主要是因为sin6_scope_id
字段没有为站点本地地址定义好。从getifaddrs()
返回的列表中看到它们的应用程序可能会将它们带有标准错误流的诊断消息丢弃。应用程序应该期望网络管理员将使用唯一的本地地址(ULA),而不是站点本地地址,c.f. RFC 4941。
ULA地址的可达性通常不能由应用软件决定。您唯一能确定的是,它们无法通过全局公共无缺省区域的任何路径访问。它们可以从互联网上的任何地方到达,ULA前缀的路由在自治系统之间的双边协议中交换。另一方面,它们通常会通过IPv6本地网关进行广告,仅供用户本地使用,并且在家庭以外任何地方都无法到达,c.f. I-D.ietf-v6ops-ipv6-cpe-router。
9
每个接口都有一个链路本地地址和一个或多个公共或站点本地地址。看起来是这样的:
$ 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,不管哪一个地址)
相关问题
- 1. getaddrinfo为ipv6链接本地
- 2. IPv6链接本地地址格式
- 3. 使用IPV6 IP的WebSocket接口
- 4. OSX上具有'嵌入'范围的IPv6链接本地地址
- 5. SSDP和接口IP地址
- 6. 如何通过本地链接地址获得远程全局链接地址?
- 7. Java本地接口和安全
- 8. 如何使用WMI/COM连接到链接本地IPv6?
- 9. 获取套接字/网络接口的本地IP地址
- 10. 接口是否可以有多个IPv6链路本地ULA公用地址?
- 11. 全局文本到链接drupal 7
- 12. 在Python中发送和接收IPv6链接本地多播UDP数据报?
- 13. Android p2p0接口有ipv6地址
- 14. 在Mac OS X和iOS上查找本地IP地址的接口/路由?
- 15. 的Java,DatagramPacket的接收,如何确定本地IP接口
- 16. 特定接口上的TCP/IP连接
- 17. 全局变量和链接问题
- 18. 全局变量和链接器错误
- 19. C#获取本地IP(多个接口)本地MAC地址
- 20. 如何将一个链接本地地址绑定到一个ipv6套接字
- 21. 本地Domino链接和XPage
- 22. 链接列表 - 全局诉本地变量
- 23. Java本地类和接口
- 24. OSGi和Java本地接口
- 25. 获取所有接口上的所有IPv6地址(Windows)
- 26. 如何提取本地计算机站点本地和链接Delphi中的本地IPv6地址?
- 27. 如何连接我的本地postgresql和本地ip地址
- 28. 如何在同一接口上绑定多个IPv6地址时将特定IP设置为套接字
- 29. ipv6 loopback接口(:: 1/128)
- 30. Socket.Bind和IP源路由,具有多个本地网络接口
这相当属于http://serverfault.com/;也许版主会转移这个问题,或者你可以在那里重新提问。 – 9000 2011-02-06 11:46:18
这个问题当然有与编程有关的方面。某些应用程序可能需要将接口地址列表折叠为某种算法,并且当您从getifaddrs()返回时,它有助于了解您正在处理的地址类型。 – 2011-02-07 06:04:24