Networking
基於名稱的 ipv4 到 ipv6 網關
假設我有一個專用伺服器,
host.com
其中包含一個 IPv4 地址1.2.3.4
、一個靜態分配的 IPv6 地址以及大量額外的 IPv6 地址。此主機在guest.com
、等處使用靜態分配的 IPv6 地址為多個 KVM 提供服務。使這些來賓對使用 IPv4 的僅 IPv4 的客戶端可用的最有效方法是什麼?guest0.com``guest1.com``host.com
注意:所有主機都執行 Ubuntu 18.04 和各種服務,可用性需要在命名的基礎級別上,而不僅僅是單個服務或埠/套接字。
鑑於要求每台僅 IPv6 的機器要託管任意數量的不同服務,我認為您不走運。
這與具有 RFC1918 範圍的網路上的單個公共 IPv4 地址及其後面的伺服器集合基本上是相同的問題。(例如家庭寬頻類型設置)
如果它們都託管一個將主機名封裝在協議中的服務(例如帶有 SNI 的 HTTP 或 HTTPS),那麼雙宿主電腦可以輕鬆地為它們代理。但是在純 IP 級別沒有辦法做到這一點,因為僅 IPv4 的客戶端將使用 DNS 來解析目標的地址,這可以返回 2 個選項:
- 網關的 IPv4 地址,然後它打開到網關的連接,但是現在最終目標資訊已經失去(因為它沒有在協議中攜帶)所以它不知道將數據包轉發到哪裡。
- 最終目標的 IPv6 地址,但僅是 IPv4 無法訪問它。
我能想到的最好的中間人方法是使用 SSH 通過網關(作為Bastian 主機)設置客戶端本地埠轉發到目標機器。這意味著在嘗試訪問目標伺服器之前,您需要在每個客戶端上啟動 SSH 連接。在啟動 ssh 會話之前,您需要知道伺服器提供了哪些服務,因為它需要預先為每個服務設置轉發。