IPv6 環境已經沒有 NAT 這回事了(至少目前是這樣),使用 global IPv6 位址連上 internet 之後,就可以與其他人互通。
一般來說 IPv6 位址 (128 bits) 由 Prefix 和 Interface ID 所組成。 Prefix 可視為網路編號,因此除非網路改號,否則是不變的。而 Interface ID 一般是用 EUI-64 的方法,參照 MAC 位址來產生的,所以只要是利用同一張網路卡,其 Interface ID 也就不會變。
因此,雖然 IPv6 在 internet 直接互連可以增加效率、非常便利,但一直使用相同的位址,很容易被壞人盯上。所以 RFC 4941 定義了 IPv6 Privacy Extension,讓 IPv6 host 可以隨機產生 Interface ID,定期更換,以提高安全性。這樣的位址又有人稱為臨時位址 (temporary address)。
因此,雖然 RFC 裡面建議預設不要啟動,但常用的作業系統 (Windows, Mac, Linux) 都會優先使用臨時位址連線。
下面是開機後取得的 IPv6 位址,紅色匡線內的是臨時位址 (temporary address)。
由下圖可以看到連線時所使用的位址是上圖中的臨時位址:
雖然臨時位址提供了安全性,但從網管人員的角度來看,使用之後,反而變得很難追蹤,所以一般網管人員都不希望使用臨時位址。
那麼怎麼關掉或啟用呢?
- Mac:
打開 Terminal.app,輸入下面指令:
sudo sysctl -w net.inet6.ip6.use_tempaddr=0 (這個指令只會暫時關閉臨時位址功能,重新開機之後就會恢復)
sudo sh -c ‘echo net.inet6.ip6.use_tempaddr=0 >> /etc/sysctl.conf’ (這個指令可使永久生效)
若要啟用這個功能,則將上述指令中的 0 改為 1 即可。
下圖說明關掉臨時位址之後 IPv6 位址就只剩預設的 EUI-64 位址了。
Windows Vista/7/8/Server 2008:
netsh interface ipv6 set privacy state=disabled store=active
netsh interface ipv6 set privacy state=disabled store=persistent
輸入之後,馬上生效,不需重開機。如果需要啟動,則只要將上述指令中的 disabled 改為 enabled 即可。