網路與 IP

IPv6 是什麼意思:位址結構、優點與國內現狀

IPv6 是第 6 版網際網路協議(Internet Protocol version 6),是 IPv4 的後繼者。它把位址從 32 位擴充套件到 128 位,多到每個網段都可以固定用 /64,從根本上解決了 IPv4 位址耗盡、不得不層層 NAT 的問題;代價是與 IPv4 不能直接互通,兩者要長期並存。

作者 頂聯產品團隊發布於 7 分鐘閱讀

IPv6 是什麼意思:它是網際網路協議(Internet Protocol)的第 6 版,由 IETF 制定,用來接替今天仍在大量使用的第 4 版 IPv4。核心規範最早是 1998 年的 RFC 2460,2017 年由 RFC 8200 取代併成為正式的網際網路標準。IPv6 最直接的變化是位址長度:IPv4 是 32 位,約 43 億個位址;IPv6 是 128 位,位址總數是 2^128,約 3.4 × 10^38 個,完整寫法是 8 組用冒號分隔的十六進位制數,通常壓縮成 2001:db8:1a2b:10::25 這樣的形式。它要解決的核心問題是 IPv4 位址不夠用,順帶簡化了報頭、取消了廣播和 ARP、內建了位址自動配置。範例位址使用文件專用字首 2001:db8::/32。

IPv6 要解決什麼問題:IPv4 位址不夠用了

43 億個 IPv4 位址,在網際網路設計之初看起來用不完,到了每人一部手機、每台伺服器若干個位址的年代就遠遠不夠。幾個時間點:

時間 事件
2011 年 2 月 IANA 把最後 5 個 /8 位址塊分給五個地區網際網路序號產生器構,全球公共位址池分配完畢
2011 年 4 月 負責亞太地區的 APNIC 開始分配最後一個 /8,此後每個新會員只能申請到很少量的位址
此後 各地區序號產生器構陸續耗盡,新增 IPv4 位址主要靠轉讓和租用,位址本身成了要花錢買的資源

IPv4 世界的應對辦法是 NAT:家裡的路由器把一個公網位址分給全家裝置共用,運營商再在更大範圍內做一層運營商級 NAT,讓許多寬頻使用者共用一個公網位址。NAT 緩解了位址短缺,但也帶來了副作用:外部無法主動連到 NAT 後面的裝置,遠端存取、點對點通訊都要繞路;日誌裡的位址不再對應一台裝置,溯源要同時拿到位址、連接埠和時間;NAT 裝置要為每條連線維護狀態,自己成了瓶頸和故障點。

IPv6 的思路是從根上解決:位址多到不必再省,每台裝置都分配全域性唯一的位址,網路重新回到“端到端可達”,不再需要 NAT。

IPv6 位址長什麼樣:128 位怎麼分層

128 位位址寫成 8 組、每組 4 個十六進位制數,可以省略每組的前導零,並用一次 :: 代替連續的全零組。比書寫規則更重要的是分層:IPv6 位址按字首長度逐級分配,機房和企業拿到的是一個大字首,再往下切。以機房為例:

層級 字首長度 例子 含義 往下一層能分出多少
位址持有者 /32 2001:db8::/32 運營商或大型機構從序號產生器構拿到的段 65,536 個 /48
站點 /48 2001:db8:1a2b::/48 一個機房或一個企業 65,536 個 /64
網段 /64 2001:db8:1a2b:10::/64 一個 VLAN,或分給一台伺服器 2^64 個介面位址
介面 /128 2001:db8:1a2b:10::25 一塊網路卡上的一個位址 —

一個 /48 能切出 65,536 個 /64,而一個 /64 裡有 2^64 個位址,是整個 IPv4 位址總數的約 43 億倍。所以 IPv6 裡沒有人去算“這個段能放幾台主機”:區域網段統一用 /64,位址的後 64 位是介面標識,無狀態位址自動配置(SLAAC)正是靠這 64 位讓主機自己生成位址。點對點的裝置互聯鏈路可以用 /127,這是 RFC 6164 專門允許的例外。

和 IPv4 相比,還有一個習慣要改:一塊網路卡通常同時有好幾個 IPv6 位址。fe80 開頭的鏈路本地位址每塊啟用了 IPv6 的網路卡都有,只在本鏈路內有效,用於鄰居發現和找閘道器;2 或 3 開頭的全域性單播位址才能上公網;此外還可能有 fd 開頭的唯一本地位址(類似 IPv4 私網位址)和定期更換的臨時位址。IPv6 也沒有廣播,原來靠廣播完成的事改用組播(ff 開頭)。

IPv6 和 IPv4 的主要差異

對比項 IPv4 IPv6
位址長度 32 位 128 位
寫法 點分十進位制,如 192.0.2.10 冒號十六進位制,如 2001:db8::10
子網表示 子網掩碼或字首長度,段的大小各不相同 只用字首長度,區域網段統一 /64
基本報頭 20–60 位元組,長度可變,帶報頭校驗和 固定 40 位元組,取消報頭校驗和,可選功能放進擴充套件報頭
分片 傳送方和沿途路由器都可以分片 只有傳送方分片,路由器不分片,依賴路徑 MTU 發現;鏈路 MTU 最小 1280 位元組
位址解析 ARP,廣播查詢 鄰居發現協議 NDP,用 ICMPv6 組播
廣播 有 沒有,用組播代替
位址配置 手工配置或 DHCP 手工配置、SLAAC 無狀態自動配置、DHCPv6
NAT 普遍使用 設計上不需要
一塊網路卡的位址數 通常 1 個 通常多個
DNS 記錄型別 A AAAA
反向解析域 in-addr.arpa ip6.arpa

這張表裡,對維運影響最大的是三行:沒有 ARP,繫結和防欺騙要針對 NDP 重新做;路由器不分片,ICMPv6 不能隨便攔;一塊網路卡多個位址,排查時要先分清看的是哪一個。

IPv6 的優點,以及它沒解決的問題

IPv6 的優點要具體看,以下幾條是實打實的:

  1. 位址充足。伺服器、容器、物聯網裝置都能拿到全域性位址,規劃時不必再為省位址把網段切得很碎;機房可以給每台伺服器一整個 /64,而不是按個出售 IPv4。
  2. 端到端可達。不需要連接埠對映,日誌裡記錄的位址就是真實來源,溯源不用再去翻 NAT 裝置的轉換記錄。
  3. 自動配置。主機根據路由器通告的字首自己生成位址,接上網線即可使用。
  4. 字首規整,便於彙總。位址按層級分配,一個運營商或機房對外通常只需宣告少量字首。
  5. 報頭簡化。基本報頭定長、不做校驗和,路由器逐跳處理的工作更少。

同樣要說清楚它沒解決的問題:

  • 與 IPv4 不相容。過渡期主要靠雙棧並行,維運物件隨之翻倍:兩套位址、兩套路由、兩套防火牆規則。
  • 安全不會自動變好。IPsec 曾在 RFC 4294 裡被列為 IPv6 節點必須支援,2011 年的 RFC 6434 改成了“應當”支援,不能把加密當成 IPv6 自帶。鄰居發現和 ARP 一樣沒有認證,存在 NDP 欺騙和偽造路由器通告的攻擊,交換器上要開啟 RA Guard 一類的防護。
  • 速度不一定更快。快慢取決於路徑和對端,與協議版本關係不大。

國內 IPv6 推進到了哪一步

國內的 IPv6 部署由政策推動。2017 年 11 月,中共中央辦公廳、國務院辦公廳印發《推進網際網路協議第六版(IPv6)規模部署行動計劃》,對運營商網路、資料中心、雲服務、內容分發網路以及政府和重點網站應用提出了分階段的改造要求。2021 年 7 月,工業和資訊化部、中央網信辦印發《IPv6 流量提升三年專項行動計劃(2021—2023 年)》,把重點放在提升 IPv6 的實際流量上,原因很直接:使用者拿到了 IPv6 位址,不等於流量就走 IPv6,服務端沒有 AAAA 記錄,連線仍然走 IPv4。

經過這幾年,三家基礎運營商的手機網路和許多地區的家庭寬頻已經普遍下發 IPv6 位址,主流雲平台的雲伺服器、負載均衡和 CDN 都提供 IPv6 選項,政府網站和大型網際網路應用陸續完成了改造。活躍使用者數、流量佔比等最新數字,以國家 IPv6 發展監測平台定期釋出的資料為準。

對 IDC 來說,變化會從客戶那裡傳過來:政企客戶的網站有 IPv6 改造要求,託管它們的機房就要能提供 IPv6 位址、雙棧閘道器和對應的防護;租伺服器的客戶也越來越多地問“能不能給 IPv6”。機房需要提前準備的,是向上遊申請 IPv6 段、讓閘道器和交換器支援雙棧,以及一份能管住 IPv6 分配的台帳。

第一次接觸 IPv6,維運先改掉這幾個習慣

一、防火牆不是一套,是兩套。 iptables 只管 IPv4,IPv6 的規則在 ip6tables 裡。伺服器拿到公網 IPv6 位址後,如果只寫了 iptables 規則,服務在 IPv6 上就等於完全敞開。firewalld 的區域規則對兩者同時生效;ufw 在 /etc/default/ufw 裡 IPV6=yes 時也會同時管理;直接手寫 iptables 指令碼的伺服器最容易漏。檢查方法:

# 只列出 IPv6 上的監聽連接埠;本地位址顯示為 [::] 或 * 的,表示在所有位址上監聽
ss -6 -tlnp
# 分別檢視 IPv4 和 IPv6 的入站規則;ip6tables 為空且預設策略是 ACCEPT,說明 IPv6 沒有任何過濾
iptables -S INPUT
ip6tables -S INPUT

二、不要整類封掉 ICMPv6。 IPv4 時代有人習慣把 ICMP 全部禁掉,在 IPv6 上這樣做會直接斷網。RFC 4890 對 ICMPv6 的過濾給了詳細建議,至少下面這些要放行:

型別 名稱 為什麼不能攔
1 目的不可達 連線失敗時及時告知,而不是傻等超時
2 資料包過大 路由器不分片,路徑 MTU 發現全靠它,攔掉後大包會卡住
3 超時 traceroute 依賴它
4 引數問題 報頭出錯時的反饋
133–136 路由器請求、路由器通告、鄰居請求、鄰居通告 位址自動配置、找閘道器、查鄰居 MAC 都靠它們,相當於 IPv4 的 ARP 加上一部分 DHCP
128、129 回顯請求、回顯應答 ping 用,可以限速放行

三、不要為了“省位址”把網段切得比 /64 小。 給伺服器配 /120、/112 這種字首,會讓 SLAAC 等依賴 64 位介面標識的功能失效。位址不缺,區域網段一律 /64,需要給客戶更多位址就給 /56 或 /48。

四、封禁和限速按 /64 考慮。 一台主機在自己的 /64 裡可以隨時換位址,按單個位址封禁,對方換一個位址就繞過去了。防火牆黑名單、介面限流、白名單都應該以 /64 為單位思考。

五、加 AAAA 記錄之前,確認 IPv6 真的通。 按 RFC 6724 的預設規則,系統通常優先使用 IPv6。瀏覽器有快速回退機制,很多程式和指令碼卻沒有:域名一旦有了 AAAA 記錄而伺服器的 IPv6 不通,這些客戶端就會卡在連線超時上。上線前從一台有 IPv6 的外部機器測一遍:

# 加記錄前:繞過 DNS,直接連伺服器的 IPv6 位址,能返回 HTTP 狀態行才算通
curl -6 -sI --resolve www.example.com:443:[2001:db8:1a2b:10::25] https://www.example.com/ | head -1
# 加記錄後:確認 AAAA 已生效,再用域名測一次
dig AAAA www.example.com +short
curl -6 -sI https://www.example.com/ | head -1

在機房裡怎麼落地

IPv6 的規劃比 IPv4 簡單,難點在於跟蹤:從上游拿到一個 /48 或更大的段,切成 /64 分給伺服器、切成 /56 分給大客戶,幾年下來哪些子段分給了誰,沒有台帳很快就理不清。

Toplink DCIM 的 IP 位址管理對 IPv6 原生支援:IPv6 段和 IPv4 一樣按 CIDR 錄入,可以按掩碼拆成更小的子段;給伺服器分配時系統自動切出合適的子段,也可以為伺服器批次分配 IPv6 段,或在某個位址塊內生成指定數量的位址。IPv4 和 IPv6 位址段集中登記在同一個系統裡,哪個子段分給了哪台伺服器,查台帳即可。

常見問題

只有 IPv6 的伺服器能存取 IPv4 網站嗎?

不能直接存取。除了改成雙棧,還可以用 NAT64 加 DNS64:DNS64 給只有 A 記錄的域名合成一個 AAAA 位址(常用字首 64:ff9b::/96),NAT64 閘道器再把流量轉換成 IPv4。雲平台是否提供這類閘道器,以平台文件為準。

為什麼沒有 IPv5?

版本號 5 早年分給了實驗性的 Internet Stream Protocol(ST 及後來的 ST2),用於傳輸即時音影片流,從來不是 IPv4 的替代方案。5 已被佔用,所以下一代 IP 用了 6。

家裡有了 IPv6,外網就能直接存取家裡的裝置嗎?

位址上可以,全域性 IPv6 位址本身是端到端可達的。但不少家用路由器和光貓預設攔截外部主動發起的 IPv6 連線,需要手動放行;運營商下發的字首也可能在重新撥號後變化,長期存取還要配合動態域名。

想看看在你的機房裡怎麼用?

從一次產品示範開始,梳理你的業務鏈路。

查看價格
服務熱線 400-112-2951

讓我們聊聊你的 IDC 業務

掃碼新增企業微信,預約產品示範或申請試用。

Toplink 企業微信二維碼

長按儲存或使用企業微信 / 微信掃描

也可致電
400-112-2951
Telegram
@TopLink88