早期 IPv6 位址會內嵌網卡的 MAC 位址,讓裝置跨網路被追蹤。本文說明隱私延伸、RFC 8981 暫時位址與 RFC 8064 如何補上這個漏洞。
早期的 IPv6 位址分配方式,把一個隱私缺陷直接寫進了標準本身:裝置位址會內嵌網卡的 MAC 位址,而這個值永遠不變。這代表你 IPv6 位址的後 64 位元,在你連上的每一個網路中都完全相同——不論是在家、在咖啡廳還是在機場——這就讓你接觸過的每一個網站與網路業者,都能藉此再次認出你的裝置,甚至不需要 Cookie。隱私延伸正是為了堵住這個漏洞而設計的:用一個會隨時間輪替的識別碼,取代這個固定不變的識別。
重點摘要
- 早期的無狀態位址自動組態(SLAAC)會透過 RFC 4291 定義的「改良版 EUI-64」格式,從網卡的 MAC 位址推導出 IPv6 位址的後 64 位元——這是一個全域唯一、永不改變的值。
- 固定不變的介面識別碼,會讓裝置在加入的每一個網路中都能被重新辨識——即使沒有 Cookie,因為同一個 64 位元後綴會跟著硬體走遍所有地方。
- RFC 8981 規定的隱私延伸,會產生隨機的暫時位址並按排程輪替,用來取代以 MAC 位址推導出的位址發起對外連線。
- 現代系統也補上了問題的另一半:RFC 8064 明確要求節點不要把固定的連結層位址嵌入識別碼,因此如今連那個不輪替的位址,也改用 RFC 7217 的方法產生——在同一個網路內保持穩定,換一個網路就完全不同。
- 大多數現代消費級作業系統預設啟用隱私延伸,但輪替只隱藏了介面識別碼——你的 IPv6 網路前綴依然會暴露你的 ISP 與大致位置,這一點和 IPv4 位址是一樣的。
- 你可以透過 BrowserInsight 的 IP 情報與指紋檢測工具,準確查看你目前的連線暴露了什麼。
早期 IPv6 位址是如何被設計成可追蹤的
一個 IPv6 位址長 128 位元,通常拆分為 64 位元的網路前綴(由你的 ISP 或路由器分配,標識你所在的網路)與 64 位元的介面識別碼(標識該網路下你的特定裝置)。在最初的 SLAAC 方案下,裝置會用 RFC 4291 定義的「改良版 EUI-64」方法,自動從網卡的 MAC 位址產生介面識別碼:把 48 位元的 MAC 位址一分為二,在中間插入固定的 FFFE,再翻轉一個位元。得到的這個 64 位元值完全來自裝置自帶的硬體,且永遠不會被重新分配。
這種設計對無狀態自動組態來說相當實用——不需要 DHCP 伺服器來發放位址——但它帶來了一個無法避免的副作用。由於 MAC 位址全域唯一且永久不變,由此產生的介面識別碼也是如此。把你的筆電從家裡帶到圖書館、再帶到飯店,IPv6 位址中的網路前綴每次都會隨新網路而改變,但最後 64 位元每次都完全相同。任何記錄了你 IPv6 位址的網站、廣告網路或網路業者,都能透過這個固定後綴,把毫不相關的連線階段與地點串連起來,建構出一個你從未同意過、卻如同永久追蹤 Cookie 一般有效的持久識別碼。
暫時位址:隱私延伸如何輪替你的身分
隱私延伸最早由 RFC 4941 規定,後被目前的標準 RFC 8981 更新取代,它的解法是在固定位址之外,再產生一種位址。作業系統不再從 MAC 位址推導介面識別碼,而是用一個以本機儲存的種子值啟動的偽隨機演算法產生它,並定期捨棄舊值、產生新值。
每個暫時位址都帶有兩個生命週期:
- 偏好生命週期——RFC 8981 給出的預設值是 1 天——過後該位址會被標記為棄用:既有連線可以繼續使用它,但新的對外連線會改用更新的位址。
- 有效生命週期——RFC 8981 給出的預設值是 2 天——過後該位址會被徹底廢止,無法再使用。
這是標準給出的預設值,而且可以自行設定。更早的 RFC 4941 把有效生命週期預設為整整一週,有些實作至今仍沿用這個較長的值,這也是為什麼你幾天前看過的暫時位址可能還留在網路介面上。真正決定追蹤難度的是偏好生命週期,因為它決定了網站實際看到的那個位址多久換一次。
作業系統會在目前位址到期前預先產生新的暫時位址,因此隨時都有一個新位址可以接手對外連線,不會造成中斷。與之搭配的固定位址並不會消失——它通常仍會用於接收連線與本機網路服務——但在啟用隱私延伸的情況下,你主動發起的對外連線會以輪替中的暫時位址作為來源位址,而這正是追蹤風險真正存在的地方。
修補的另一半:固定位址也不再取自你的 MAC
輪替的暫時位址解決了對外流量的問題,但如果裝置同時還設定了一個由 MAC 位址推導出的固定位址,它在加入的每一個網路裡依然會亮出一個永久識別碼。後續的兩份標準補上了這個缺口。
RFC 7217 定義了另一種產生方式:把裝置本機保存的一把金鑰與所在網路的前綴混合起來,算出介面識別碼。這樣得到的位址在同一個網路內部是穩定的——需要固定位址的服務照常可用——但換一個網路就完全不同,因而切斷了當初讓 EUI-64 方案淪為追蹤途徑的跨網路關聯。RFC 8064 隨後把這一點訂為對所有裝置的建議:節點「不應(SHOULD NOT)採用把固定連結層位址嵌入介面識別碼的 IPv6 位址產生方案」,固定位址應預設改用 RFC 7217 的方法。為此,它更新了包含 RFC 4291 在內的十多份文件。
實際結果是:在目前的作業系統上,你通常會在一張網卡上看到兩個位址,而且兩個都不是從 MAC 位址推導出來的——一個是依網路產生的固定位址,一個是輪替的暫時位址。隱私延伸與 RFC 7217 是互補關係:前者讓你在不同連線階段之間無法被串連,後者讓你在不同網路之間無法被串連。
檢查你的裝置是否已啟用隱私延伸
如今在大多數消費級作業系統上,隱私延伸預設是啟用的——Windows、macOS、iOS 與 Android 都會自動產生並優先使用暫時位址。真正因情況而異的是 Linux:核心自身的 use_tempaddr 預設是關閉的,你能不能拿到暫時位址,取決於你所用發行版的網路管理元件或 sysctl 預設值怎麼設。伺服器作業系統與精簡的 Linux 設定則更可能乾脆關掉這項功能,因為伺服器通常需要一個穩定、可預測的位址,而非不斷輪替的位址。
最直接的檢查方式,是查看你自己的位址:
- 在命令列中,
ipconfig /all(Windows)或ip -6 addr show(Linux)會同時列出「暫時」位址與「永久/穩定」位址(如果隱私延伸已啟用);macOS 也可以透過ifconfig看到類似的輸出。 - 在瀏覽器中,BrowserInsight 的 IP 情報工具會顯示網站實際能看到的你目前連線的 IPv6 位址,讓你不必在作業系統網路設定裡翻找,就能確認對外流量到底用的是哪一個位址。
如果你只看到一個 IPv6 位址,而且它看起來是從硬體推導出來的(介面識別碼中間是 ff:fe),那麼隱私延伸就是關閉的,該裝置正在向它加入的每一個網路展示同一個可被追蹤的後綴。
不過反過來推就不成立了:位址裡沒有 ff:fe,並不能證明你用的是暫時位址。有了 RFC 7217,如今的固定位址看起來同樣像是隨機的。真正能區分兩者的判準是它會不會變——RFC 7217 固定位址只要你還連在這個網路上就一直不變,而暫時位址會照自己的節奏被換掉。
隱私延伸 vs VPN:兩者到底各自隱藏了什麼
很容易誤以為輪替的 IPv6 位址和 VPN 做的是同一件事,但其實不然,這個差異很重要。隱私延伸只會隨機化介面識別碼——位址中與裝置相關的那一半。網路前綴——由你的 ISP 分配的那一半——無論介面識別碼輪替多少次都保持不變,僅憑這個前綴,就足以讓 IP 地理定位大致判斷出你所在的 ISP 與地區,和一般 IPv4 位址的情況完全一樣。輪替的暫時位址能阻止裝置被固定後綴跨連線階段重新辨識,但對隱藏你所連接的 ISP 或大致位置毫無作用。
VPN 的運作方式則不同:它會替換掉你整個 IP 位址,包括前綴在內,換成 VPN 伺服器的位址,因此位置訊號與任何與裝置相關的後綴,都會一併隱藏在通道自己的位址背後。這也是為什麼網站如何偵測 VPN 與代理伺服器(以及你為何被封鎖)這篇文章完全沒有談到介面識別碼——VPN 偵測針對的是整個 IP 位址,而不是隱私延伸專門要解決的裝置追蹤角度。如果你正在用通道,又想知道它究竟對外呈現了什麼,BrowserInsight 的 VPN/代理檢測會針對網站看到的那個 IP,逐項測試那些常見的、會把真實位址洩漏出去的路徑。
比較:IPv6 隱私延伸 vs VPN
| IPv6 隱私延伸 | VPN | |
|---|---|---|
| 隱藏的內容 | 與裝置相關的介面識別碼(會輪替) | 整個 IP 位址,包括網路前綴 |
| 不會隱藏的內容 | ISP 與大致位置(網路前綴保持不變) | 預設情況下什麼都不隱藏——只是換成另一個同樣可追蹤的位址 |
| 是否預設啟用 | 大多數消費級作業系統上是 | 否——需要安裝並連線用戶端 |
| 主要防護對象 | 透過固定位址後綴實現的跨連線階段裝置重新辨識 | 基於 IP 的地理定位、ISP 可見性、基於 IP 的封鎖 |
| 輪替方式 | 自動、按排程(數小時到數天) | 手動——只有重新連線或切換伺服器時才會改變 |
兩者是互補的,而非可以互相取代:隱私延伸解決的是一個大多數人根本不知道存在的、底層的特定追蹤途徑,而 VPN 解決的是更宏觀的問題——你的 IP 到底暴露了你是誰、身在何處。
如何檢查並降低你的暴露程度
- 確認隱私延伸已啟用。 在作業系統網路設定或命令列輸出中,尋找一個不同於 MAC 推導位址的「暫時」IPv6 位址;如果未啟用,就開啟相應設定(大多數作業系統會在網路/隱私設定中提供類似「使用暫時位址」的選項)。
- 查看你目前連線暴露了什麼。 BrowserInsight 的 IP 情報工具會顯示網站在你目前連線階段中實際能看到的 IPv6(或 IPv4)位址與網路資訊。
- 記住網路前綴依然可見。 如果你真正擔心的是 ISP 層級的位置暴露,而不是跨連線階段的裝置追蹤,那麼僅靠隱私延伸並無法解決這個問題——參見IP 地理位置定位:精度與隱私的平衡,了解無論位址如何輪替,你的網路前綴都會暴露些什麼。
- 如果還需要隱藏網路前綴,可以疊加使用 VPN。 VPN 與 IPv6 隱私延伸解決的是不同的問題,兩者可以同時使用,互不衝突。
常見問題
IPv6 隱私延伸能取代 VPN 嗎?
不能。隱私延伸只會輪替 IPv6 位址中與裝置相關的那部分;你的 ISP 分配的網路前綴——揭示你大致位置與業者的那一半——始終保持不變。而 VPN 會替換掉整個位址,包括前綴在內。
IPv6 隱私延伸預設是開啟的嗎?
在大多數消費級裝置與作業系統上是的——Windows、macOS、iOS 與 Android 都預設啟用。Linux 則沒那麼一致:核心預設是關閉的,最終取決於你所用發行版怎麼設定。伺服器與精簡的 Linux 設定通常會關閉它,因為對這些使用情境來說,穩定的位址更方便。
暫時位址多久變化一次?
RFC 8981 給出的預設值是偏好生命週期 1 天、有效生命週期 2 天,也就是說通常每天產生一個新的暫時位址,舊位址再過一天左右徹底廢止。這兩個值都可以設定,而且有些實作至今仍沿用 RFC 4941 時代長達一週的有效生命週期,因此廢止流程可能拖得更久。
我的 IPv6 位址裡沒有 ff:fe,是不是代表隱私延伸開著?
不一定。自 RFC 8064 起,裝置設定的那個固定位址同樣不再取自 MAC 位址,而是用 RFC 7217 的方法產生,所以它看起來也是隨機的。沒有 ff:fe 只能說明這個位址不是 EUI-64 推導出來的,並不能說明它會輪替。要確認,得看是否同時存在第二個暫時位址,或者你對外呈現的位址會不會隨時間改變。
關閉 IPv6 能徹底避免這個問題嗎?
關閉 IPv6 確實能消除介面識別碼這個特定的追蹤途徑,但你仍會被你連線所暴露的 IPv4 位址與其他指紋訊號辨識出來。這並不是一個通用的隱私解決方案,只是避開了這一種特定機制而已。
結語
早期 IPv6 位址設計中以 MAC 位址推導出的介面識別碼,是一條悄無聲息的、通訊協定層級的追蹤途徑,它與 Cookie 或指紋腳本毫無關係——僅僅因為位址格式的規定,它就會跟著裝置走遍加入過的每一個網路。隱私延伸透過自動輪替這個識別碼,專門堵上了這個漏洞,而且如今在幾乎所有重要情境下都預設啟用;RFC 8064 又把 MAC 位址從固定的那一半裡也拿掉,算是把這件事做完了。它們做不到的是隱藏你的 ISP 或大致位置,因為那部分資訊存在於網路前綴,而非介面識別碼——要處理這一層暴露,你仍然需要審視你的 IP 位址整體究竟揭露了什麼。
推薦閱讀:


