%20%E4%B8%AD%E9%87%8D%E8%A4%87%E4%BD%8D%E5%9D%80%E5%81%B5%E6%B8%AC%E5%A4%B1%E6%95%97%E6%99%82%EF%BC%8C%E5%A6%82%E4%BD%95%E5%BB%BA%E7%AB%8B%E9%80%A3%E7%B5%90%E6%9C%AC%E6%A9%9F%E4%BD%8D%E5%9D%80%EF%BC%9F.png)
當無狀態位址自動設定 (SLAAC) 時RFC 4862用於在將位址指派給介面之前根據介面識別碼(修改版 EUI-64)建立連結本機位址 處理重複位址偵測 (DAD)。那麼當 DAD 失敗時會發生什麼?
第 4 節只是描述了自動配置必須停止:
如果節點確定其臨時鏈路本地地址不唯一,則自動配置將停止並需要手動配置介面。
沒有指定“手動配置”在該上下文中的含義。 DAD 有兩個擴充(RFC 4429,RFC 7527)也沒有描述當 DAD 失敗時會發生什麼。
我假設創建了一個隨機介面標識符並用於創建連結本地地址,例如,如中所述RFC 4941 - IPv6 中無狀態位址自動配置的隱私擴展但我找不到任何指定這種行為的來源或參考文獻...
1. 重複位址偵測失敗時如何建立連結本地位址?
2. 是否使用隨機介面標識符來建立鏈路本地地址?如果是,RFC 中是否有描述或作業系統有記錄?
答案1
- 當重複地址偵測失敗時如何建立鏈路本地地址?
在常規 RFC 4862 SLAAC 中,事實並非如此。
「自動配置停止」正如其所言:IP 堆疊不會嘗試任何替代演算法,它實際上會停止進程和鏈路本地位址未創建。同樣,「手動配置」意味著系統管理員必須新增工作地址。
(畢竟,當使用基於硬體的 IID 時,IPv6 DAD 失敗意味著硬體位址本身是重複的 – 並且您可能不會想繼續在這種情況下。
RFC 4941「隱私擴充」隨機產生絕不意味著取代主要「公共」位址或改變常規 SLAAC 流程,正如它在自己的 RFC 中明確指出的那樣。
但是,如果作業系統使用 RFC 7217「語義不透明」IID,而不是基於標準硬體的 IID,則它會使用不同的「DAD_Counter」值(產生不同的 IID)不斷重試,直到至少有一個位址成功。
- 是否使用隨機介面標識符來建立鏈路本地地址?如果是,RFC 中是否有描述或作業系統有記錄?
是的,RFC 7217(如果由作業系統實作)適用於連結本地位址和全域位址。請注意,RFC 7217 的使用完全是可選的;和如果實現後,它的目的是完全取代基於硬體的 IID 生成演算法,而不是充當後備。
此外,RFC 7721 引用了 Microsoft Windows 使用的不同演算法(我認為該演算法稍微早於 RFC 7217)。