close

導讀:假設,網站不支持 IPv6 並不會造成很多困難,那麼為什麼網站需要支持 IPv6 呢?         
本文字數:4969,閱讀時長大約:7分鐘

我一直在努力學習關於 IPv6 的相關知識。一方面,IPv6 的基礎概念是很簡單的(沒有足夠的 IPv4 地址可以滿足互聯網上的所有設備,所以人們發明了 IPv6!每個人都能有足夠的 IPv6 地址!)

但是當我試圖進一步理解它時,我遇到了很多問題。其中一個問題是:為什麼twitter.com🔗 twitter.com不支持 IPv6。假設,網站不支持 IPv6 並不會造成很多困難,那麼為什麼網站需要支持 IPv6 呢?

我在 Twitter 上詢問了很多人為什麼他們的服務器支持 IPv6🔗 twitter.com,我得到了很多很好的答案,我將在這裡總結一下。事先說明一下,因為我對 IPv6 基本上毫無經驗,所以下面所總結的理由中可能會有寫得不準確的地方,請大家多多包涵。

首先,我想解釋一下為什麼twitter.com🔗 twitter.com可以不支持 IPv6,因為這是最先讓我困惑的地方。

怎麼知道twitter.com🔗 twitter.com不支持 IPv6 呢?

你可以使用dig命令以AAAA的選項查詢某一個域名的 IPv6 地址記錄,如果沒有記錄,則表明該域名不支持 IPv6。除了twitter.com🔗 twitter.com,還有一些大型網站,如github.com🔗 github.com和stripe.com🔗 stripe.com也不支持 IPv6。

$ dig AAAA twitter.com
(empty response)
$ dig AAAA github.com
(empty response)
$ dig AAAA stripe.com
(empty response)

為什麼twitter.com🔗 twitter.com仍然適用於 IPv6 用戶?

我發現這真的很令人困惑。我一直聽說因為 IPv4 地址已經用完了,從而很多互聯網用戶被迫要使用 IPv6 地址。但如果這是真的,twitter.com🔗 twitter.com怎麼能繼續為那些沒有 IPv6 支持的人提供服務呢?以下內容是我昨天從 Twitter 會話中學習到的。

互聯網服務提供商(ISP)有兩種:

1.能為所有用戶擁有足夠 IPv4 地址的 ISP
2.不能為所有用戶擁有足夠 IPv4 地址的 ISP

我的互聯網服務提供商屬於第 1 類,因此我的計算機有自己的 IPv4 地址,實際上我的互聯網服務提供商甚至根本不支持 IPv6。

但是很多互聯網服務提供商(尤其是北美以外的)都屬於第 2 類:他們沒有足夠的 IPv4 地址供所有用戶使用。這些互聯網服務提供商通過以下方式處理問題:

◈為所有用戶提供唯一的 IPv6 地址,以便他們可以直接訪問 IPv6 網站
◈讓用戶共享IPv4 地址,這可以使用 CGNAT(「運營商級 NAT🔗 en.wikipedia.org(carrier-grade NAT)」)或者「464XLAT」或其他方式。

所有互聯網服務提供商都需要一些IPv4 地址,否則他們的用戶將無法訪問twitter.com🔗 twitter.com等只能使用 IPv4 的網站。

為什麼網站要支持 IPv6?

現在,我們已經解釋了為什麼可以不支持IPv6。那為什麼要支持 IPv6 呢?有下面這些原因。

原因一:CGNAT 是一個性能瓶頸

對我而言,支持 IPv6 最有說服力的論點是:CGNAT 是一個瓶頸,它會導致性能問題,並且隨着對 IPv4 地址的訪問變得越來越受限,它的性能會變得更糟。

有人也提到:因為 CGNAT 是一個性能瓶頸,因此它成為了一個有吸引力的拒絕服務攻擊(DDoS)的目標,因為你可以通過攻擊一台服務器,影響其他用戶對該服務器的網站的可用性。

支持 IPv6 的服務器減少了對 CGNAT 的需求(IPv6 用戶可以直接連接!),這使得互聯網對每個人的響應速度都更快了。

我認為這個論點很有趣,因為它需要各方的努力——僅僅你的網站支持 IPv6,並不會讓你的網站更好地運行,而更重要的是如果幾乎每個網站都支持 IPv6,那麼它將使每個人的互聯網體驗更好,尤其對於那些無法輕鬆訪問 IPv4 地址的國家/地區。

實際上,我不知道這在實踐中會有多大的關係。

不過,使用 IPv6 還有很多更自私的論點,所以讓我們繼續探討吧。

原因二:只能使用 IPv6 的服務器也能夠訪問你的網站

我之前說過,大多數 IPv6 用戶仍然可以通過 NAT 方式訪問 IPv4 的網站。但是有些 IPv6 用戶是不能訪問 IPv4 網站的,因為他們發現他們運行的服務器只有 IPv6 地址,並且不能使用 NAT。因此,這些服務器完全無法訪問只能使用 IPv4 的網站。

我想這些服務器並沒有連接很多主機,也許它們只需要連接到一些支持 IPv6 的主機。

但對我來說,即使沒有 IPv4 地址,一台主機也應該能夠訪問我的站點。

原因三:更好的性能

對於同時使用 IPv4 和 IPv6(即具有專用 IPv6 地址和共享 IPv4 地址)的用戶,IPv6 通常更快,因為它不需要經過額外的 NAT 地址轉換。

因此,有時支持 IPv6 的網站可以為用戶提供更快的響應。

在實際應用中,客戶端使用一種稱為「Happy Eyeballs」的算法,該算法能夠從 IPv4 和 IPv6 中為用戶選擇一個最快的鏈接。

以下是網站支持 IPv6 的一些其他性能優勢:

◈使用 IPv6 可以提高搜索引擎優化(SEO),因為 IPv6 具有更好的性能。
◈使用 IPv6 可能會使你的數據包通過更好(更快)的網絡硬件,因為相較於 IPv4,IPv6 是一個更新的協議。

原因四:能夠恢復 IPv4 互聯網中斷

有人說他碰到過由於意外的 BGP 中毒,而導致僅影響 IPv4 流量的互聯網中斷問題。

因此,支持 IPv6 的網站意味着在中斷期間,網站仍然可以保持部分在線。

原因五:避免家庭服務器的 NAT 問題

將 IPv6 與家庭服務器一起使用,會變得簡單很多,因為數據包不必通過路由器進行端口轉發,因此只需為每台服務器分配一個唯一的 IPv6 地址,然後直接訪問服務器的 IPv6 地址即可。

當然,要實現這一點,客戶端需要支持 IPv6,但如今越來越多的客戶端也能支持 IPv6 了。

原因六:為了擁有自己的 IP 地址

你也可以自己購買 IPv6 地址,並將它們用於家庭網絡的服務器上。如果你更換了互聯網服務提供商,可以繼續使用相同的 IP 地址。

我不太明白這是如何工作的,是如何讓互聯網上的計算機將這些 IP 地址路由轉發給你的?我猜測你需要運行自己的自治系統(AS)或其他東西。

原因七:為了學習 IPv6

有人說他們在安全領域中工作,為保證信息安全,了解互聯網協議的工作原理非常重要(攻擊者正在使用互聯網協議進行攻擊!)。因此,運行 IPv6 服務器有助於他們了解其工作原理。

原因八:為了推進 IPv6

有人說因為 IPv6 是當前的標準,因此他們希望通過支持 IPv6 來為 IPv6 的成功做出貢獻。

很多人還說他們的服務器支持 IPv6,是因為他們認為只能使用 IPv4 的網站已經太「落後」了。

原因九:IPv6 很簡單

我還得到了一堆「使用 IPv6 很容易,為什麼不用呢」的答案。在所有情況下添加 IPv6 支持並不容易,但在某些情況下添加 IPv6 支持會是很容易的,有以下的幾個原因:

◈你可以從託管公司自動地獲得 IPv6 地址,因此你只需要做的就是添加指向該地址的AAAA記錄
◈你的網站是基於支持 IPv6 的內容分發網絡(CDN),因此你無需做任何額外的事情

原因十:為了實施更安全的網絡實驗

因為 IPv6 的地址空間很大,所以如果你想在網絡中嘗試某些東西的時候,你可以使用 IPv6 子網進行實驗,基本上你之後不會再用到這個子網了。

原因十一:為了運行自己的自治系統(AS)

也有人說他們為了運行自己的自治系統(我在這篇BGP 帖子🔗 jvns.ca中談到了什麼是 AS),因此在服務器中提供 IPv6。IPv4 地址太貴了,所以他們為運行自治系統而購買了 IPv6 地址。

原因十二:IPv6 更加安全

如果你的服務器只有公共的 IPv6 地址,那麼攻擊者掃描整個網絡,也不能輕易地找出你的服務器地址,這是因為 IPv6 地址空間太大了以至於不能掃描出來!

這顯然不能是你僅有的安全策略,但是這是安全上的一個大大的福利。每次我運行 IPv4 服務器時,我都會驚訝於 IPv4 地址一直能夠被掃描出來的脆弱性,就像是老版本的 WordPress 博客系統那樣。

一個很傻的理由:你可以在你的 IPv6 地址中放個小彩蛋

IPv6 地址中有很多額外的位,你可以用它們做一些不重要的事情。例如,Facebook 的 IPv6 地址之一是「2a03:2880:f10e:83:face:b00c:0:25de」(其中包含face:b00c)。

理由還有很多

這就是到目前為止我所了解的「為什麼支持 IPv6?」的理由。

在我理解這些原因後,相較於以前,我在我的(非常小的)服務器上支持 IPv6 更有動力了。但那是因為我覺得支持 IPv6,對我來說只需要很少的努力。(現在我使用的是支持 IPv6 的 CDN,所以我基本上不用做什麼額外的事情)

我仍然對 IPv6 知之甚少,但是在我的印象中,支持 IPv6 並不是不需要花費精力的,實際上可能需要大量工作。例如,我不知道 Twitter 在其邊緣服務器上添加 IPv6 支持需要做多少繁雜的工作。

其它關於 IPv6 的問題

這裡還有一些關於 IPv6 的問題,也許我之後再會探討:

◈支持 IPv6 的缺點是什麼?什麼會出錯呢?
◈對於擁有了足夠 IPv4 地址的 ISP 來說,有什麼讓他們提供 IPv6 的激勵措施?(另一種問法是:我的 ISP 是否有可能在未來幾年內轉為支持 IPv6?或者他們可能不會支持 IPv6?)
◈Digital Ocean🔗 docs.digitalocean.com(LCTT 譯註:一家建立於美國的雲基礎架構提供商,面向軟件開發人員提供虛擬專用服務器(VPS))只提供 IPv4 的浮動地址,不提供 IPv6 的浮動地址。為什麼不提供呢?有更多 IPv6 地址,那提供 IPv6 的浮動地址不是變得更便捷嗎?
◈當我嘗試 ping IPv6 地址時(例如example.com🔗 example.com的 IP 地址2606:2800:220:1:248:1893:25c8:1946),我得到一個報錯信息ping: connect: Network is unreachable。這是為什麼呢?(回答:因為我的 ISP 不支持 IPv6,所以我的電腦沒有公共 IPv6 地址)

這篇來自 Tailscale 的 IPv4 與 IPv6 文章🔗 tailscale.com非常有意思,並回答了上述的一些問題。

via:https://jvns.ca/blog/2022/01/29/reasons-for-servers-to-support-ipv6/

作者:Julia Evans選題:lujun9972譯者:chai001125校對:wxy

本文由LCTT原創編譯,Linux中國榮譽推出

LCTT 譯者 :chai001125
🌟🌟
翻譯:3.0篇
|
貢獻:8天
2022-10-06
2022-10-14
https://linux.cn/lctt/chai001125
歡迎遵照 CC-BY-SA 協議規定轉載,
如需轉載,請在文章下留言 「轉載:公眾號名稱」,
我們將為您添加白名單,授權「轉載文章時可以修改」。
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()