無法在 Hetzner VPS 上使用外部 IP
我最近在 Hetzner 上更改了我的虛擬伺服器模型。新的有一個外部 IPv4 地址,可以從 Internet 訪問它(應該如此)。但是我不能在配置中使用這個外部 IP:
iptables
規則沒有效果,openvpn
伺服器不能使用這個 IP 在任何埠上綁定監聽器等等。我172.31.x.x
在輸出中找到了一個“本地”IP 地址()ifconfig
,如果我在配置中使用它,一切都像魅力一樣。在我的舊伺服器上,我可以在任何地方使用它。所以我只是想知道:為什麼外部 IP 不能用於我的新伺服器?作業系統是
Ubuntu 15.04
Hetzner 已停止將公共 IPv4 地址分配給虛擬伺服器。據我所知,這種變化發生在他們將產品名稱從 VQ 更改為 CX 時。不過,產品說明中並未提及 NAT 的使用。
最終,Hetzner 推出了一個更新的雲平台,在該平台中,VM 可以獲得真正的公共 IPv4 地址和路由的 /64 IPv6 前綴。兩個版本共享 CX 名稱。
2012 年和 2013 年訂購的虛擬伺服器將保留其公共 IPv4 地址,直到 2019 年 VQ 線路停產。但 2016 年訂購的虛擬伺服器只有 RFC1918 地址,Hetzner 不會將公共 IPv4 地址路由到這樣的虛擬伺服器。
他們仍然為每個虛擬伺服器分配一個專用的公共 IPv4 地址,然後將其 NAT 到分配的 RFC1918 地址。Hetzner 認為這不是問題,因為它是 1:1 NAT。
正如您所發現的,這在配置伺服器時很容易出錯。您必須了解此 NAT。每當您配置某些內容時,您都必須查找映射。對於我們採用這種配置的第一個虛擬伺服器,它在最初的幾天內被錯誤配置了兩次。
任何依賴於知道公共 IPv4 地址的軟體都將中斷或需要特殊配置。此外,一些 VPN 和 IP 隧道可能會出現問題,因為隧道數據包不會被 NAT。
如果您確定這些潛在問題不會影響您的預期用途,並且如果您對在進行配置更改時必須考慮公共地址和私有地址之間的映射感到滿意,那麼您可以接受這種情況。
但是請注意,大多數 NAT 實現都是有狀態的。如果 NAT 確實是有狀態的,那麼當狀態失去時,您可能會遇到 TCP 連接停止的情況。
我不知道 Hetzner 使用的 NAT 是有狀態的還是無狀態的。我能想到的測試狀態最明顯的方法是建立隧道連接並在建立 TCP 連接後禁用隧道。唉,這種隧道技術是行不通的,所以為了進行這個實驗,必須先複製他們的 1:1 NAT 配置。我沒有嘗試這個相當複雜的實驗。
這些是您擁有的選項:
- 升級到更新的 CX 線路,Hetzner 將為您提供真正的 IPv4 地址和路由的 /64 IPv6 前綴。
- 接受您的流量將通過 1:1 NAT 並引入缺點。
- 在 IPv6 上處理所有重要流量 - 因為 Hetzner 可以在沒有 NAT 的情況下正確路由 IPv6 流量。
- 切換到專用伺服器(假設那些仍然獲得公共 IPv4 地址,這很難弄清楚,因為產品描述中的任何地方都沒有提到 NAT 的使用)。
- 切換到其他提供商。