我目前正試圖瞭解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