沒有 IPv4 地址的 IPv6 Web 伺服器
IPv4 IP 變得越來越少且越來越貴,我想知道是否可以將我們的 Web 伺服器完全切換到 IPv6。我知道建議使用 IPv4 和 IPv6,但我仍然想知道:
有沒有辦法讓多個 IPv6 Web 伺服器只使用一個 IPv4 地址就可以訪問?
例如 HTTPS,我們會面臨哪些問題?
脫氧核糖核酸
第一個問題很簡單:是的,這正是 NAT 的用途,但您必須將單個 v4 地址放在 v6 伺服器池前面,給每個池成員一個 RFC1918 v4 地址,並打一個真正的 v4 地址/埠配對到您希望 v4 可定址的每個 RFC1918 地址/埠對。您需要手動為每個伺服器分配一個外部埠:
- 埠 81 => server1:80
- 埠 82 => server2:80
- …
缺點:可能不允許有防火牆的客戶端連接到埠 81。
代理
如果您不想這樣做,v4 機器將需要執行某種虛擬主機代理,以便它可以接收來自僅 v4 主機的請求,以便在 v6 池上提供服務,通過代理請求,並為回复。
代理設置的操作方法超出了 SF 答案的範圍,但基本上前端框需要維護一個代理表,例如
- site1.example.com/* 代理->$$ 2001:ea48:abc1:3500::1:1 $$:80/*
- site2.example.com/* 代理->$$ 2001:ea48:abc1:3500::2:1 $$:80/*
- site3.example.com/* 代理->$$ 2001:ea48:abc1:3500::6:1 $$:80/*
回答來自站點上客戶端的傳入請求,這些請求解析為 v4 地址站點
$$ 123 $$.example.com,並將它們代理到在上面列出的 v6 地址上執行類似名稱站點的伺服器。代理還需要將響應返回給請求者。對於啟用 v6 的客戶端,您可以在其 AAAA 記錄下宣傳代理本身,前提是您還獲得了正確的路由和 v6 防火牆。
HTTPS
至於 HTTPS,情況與希望在單個 v4 地址上本地執行多個 HTTPS 伺服器的情況相同:您可以執行多個 v4 埠(穿透;見上文),或者依賴 SNI(見很多地方)並忽略不支持的主機。
我懷疑您真正要問的是“是否有神奇的伺服器端精靈灰塵可以為不了解 v6 的最終使用者啟用 v6 連接”,我認為答案是“否”。您必須在 v4 中完全接受他們的請求,並以同樣的方式將答案返回給他們;往上看。