IPv6 的使用量正在不斷增加,讓我們始料未及的是,伴隨這個(gè)協(xié)議不斷增加的使用量,大量的隱私問題涌現(xiàn)出來?;ヂ?lián)網(wǎng)社區(qū)在積極發(fā)布相關(guān)解決方案。當(dāng)前狀況是怎樣的呢? 網(wǎng)絡(luò)管理器NetworkManager 又是如何跟上的呢?讓我們來瞧瞧吧!

通過 IPv6 方式連接的主機(jī)的特性
啟用了 IPv6 的節(jié)點(diǎn)(LCTT 譯注:節(jié)點(diǎn)在網(wǎng)絡(luò)中指一個(gè)聯(lián)網(wǎng)的設(shè)備)并不需要類似 IPv4 網(wǎng)絡(luò)中 DHCP 服務(wù)器的中央機(jī)構(gòu)來配置他們的地址。它們 發(fā)現(xiàn)discover 自己所在的網(wǎng)絡(luò),然后通過生成主機(jī)部分來 自主生成地址 。這種方式使得網(wǎng)絡(luò)配置更加簡單,并且能夠更好的擴(kuò)展到更大規(guī)模的網(wǎng)絡(luò)。然而,這種方式也有一些缺點(diǎn)。首先,這個(gè)節(jié)點(diǎn)需要確保它的地址不會(huì)和網(wǎng)絡(luò)上其他節(jié)點(diǎn)沖突。其次,如果這個(gè)節(jié)點(diǎn)在進(jìn)入的每一個(gè)網(wǎng)絡(luò)中使用相同的主機(jī)部分,它的運(yùn)動(dòng)就可以被追蹤,如此一來,隱私便處于危險(xiǎn)之中。
負(fù)責(zé)制定因特網(wǎng)標(biāo)準(zhǔn)的組織 Internet 工程任務(wù)組Internet Engineering Task Force (IETF) 意識(shí)到了這個(gè)問題,這個(gè)組織建議取消使用硬件序列號(hào)來識(shí)別網(wǎng)絡(luò)上的節(jié)點(diǎn)。
但實(shí)際的實(shí)施情況是怎樣的呢?
地址唯一性問題可以通過 重復(fù)地址檢測(cè)Duplicate Address Detection (DAD)機(jī)制來解決。當(dāng)節(jié)點(diǎn)為自身創(chuàng)建地址的時(shí)候,它首先通過 鄰居發(fā)現(xiàn)協(xié)議Neighbor Discovery Protocol (一種不同于 IPv4 ARP 協(xié)議的機(jī)制)來檢查另一個(gè)節(jié)點(diǎn)是否使用了相同的地址。當(dāng)它發(fā)現(xiàn)地址已經(jīng)被使用,它必須拋棄掉這個(gè)地址。
解決另一個(gè)問題——隱私問題,有一點(diǎn)困難。一個(gè) IP 地址(無論 IPv4 或 IPv6)由網(wǎng)絡(luò)部分和主機(jī)部分組成(LCTT 譯注:網(wǎng)絡(luò)部分用來劃分子網(wǎng),主機(jī)部分用來從相應(yīng)子網(wǎng)中找到具體的主機(jī))。主機(jī)查找出相關(guān)的地址的網(wǎng)絡(luò)部分,并且生成地址的主機(jī)部分。傳統(tǒng)上它只使用了源自網(wǎng)絡(luò)硬件(MAC)地址的 接口識(shí)別器Interface Identifier 。MAC 地址在硬件制造的時(shí)候就被設(shè)置好了,它可以唯一的識(shí)別機(jī)器。這樣就確保了地址的穩(wěn)定性和唯一性。這對(duì)避免地址沖突來說是件好事,但是對(duì)隱私來說一點(diǎn)也不好。主機(jī)部分在不同網(wǎng)絡(luò)下保持恒定意味著機(jī)器在進(jìn)入不同網(wǎng)絡(luò)時(shí)可以被唯一的識(shí)別。這在協(xié)議制定的時(shí)候看起來無可非議,但是隨著 IPv6 的流行,人們對(duì)于隱私問題的擔(dān)憂也愈演愈烈。幸運(yùn)的是,解決辦法還是有的。
使用 隱私擴(kuò)展privacy extensions
IPv4 的最大問題——地址枯竭,已經(jīng)不是什么秘密。對(duì) IPv6 來說,這一點(diǎn)不再成立,事實(shí)上,使用 IPv6 的主機(jī)能夠相當(dāng)大方的利用地址。多個(gè) IPv6 地址對(duì)應(yīng)一塊網(wǎng)卡絕對(duì)沒有任何不合適,正好相反,這是一種標(biāo)準(zhǔn)情形。最起碼每個(gè)節(jié)點(diǎn)都有一個(gè)“ 本地連接link-local 地址”,它被用來與同一物理鏈路的節(jié)點(diǎn)聯(lián)絡(luò)。當(dāng)網(wǎng)絡(luò)包含了一個(gè)連接其他網(wǎng)絡(luò)的路由器,這個(gè)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都有一個(gè)與每個(gè)直接連接的網(wǎng)絡(luò)相聯(lián)絡(luò)的地址。如果主機(jī)在同一個(gè)網(wǎng)絡(luò)有更多的地址,該節(jié)點(diǎn)(LCTT 譯注:指路由器)將接受它們?nèi)康膫魅肓髁?。?duì)于外發(fā)連接,它會(huì)把地址顯示給遠(yuǎn)程主機(jī),內(nèi)核會(huì)挑選最適合的地址。但到底是哪一個(gè)呢?
啟用了隱私擴(kuò)展,就像 RFC4941 定義的那樣,時(shí)常會(huì)生成帶有隨機(jī)主機(jī)部分的新地址。最新的那個(gè)被用于最新的外發(fā)連接,與此同時(shí),那些不被使用了的舊地址將被丟棄。這是一個(gè)極好的策略——主機(jī)不會(huì)對(duì)外暴露其固定地址,因?yàn)樗挥糜谕獍l(fā)連接,但它仍然會(huì)接受知道其固定地址的主機(jī)連接。
但這也存在美中不足之處——某些應(yīng)用會(huì)把地址與用戶識(shí)別綁定在一起。讓我們來考慮一下這種情形,一個(gè) web 應(yīng)用在用戶認(rèn)證的時(shí)候生成一個(gè) HTTP Cookie,但它只接受實(shí)施認(rèn)證的地址的連接。當(dāng)內(nèi)核生成了一個(gè)新的臨時(shí)地址,服務(wù)器會(huì)拒絕使用這個(gè)地址的請(qǐng)求,實(shí)際上相當(dāng)于用戶登出了。地址是不是建立用戶認(rèn)證的合適機(jī)制值得商榷,但這確實(shí)是現(xiàn)實(shí)中應(yīng)用程序正在做的。
解救之道—— 隱私固定尋址Privacy stable addressing
解決這個(gè)問題可能需要另辟蹊徑。唯一的(當(dāng)然咯)地址確實(shí)有必要,對(duì)于特定網(wǎng)絡(luò)來說是穩(wěn)定的,但當(dāng)用戶進(jìn)入了另一個(gè)網(wǎng)絡(luò)后仍然會(huì)變,這樣的話追蹤就變得幾乎不可能。RFC7217 介紹了一種如上所述的機(jī)制。