Networking

VPN下的相同路由 - 如何解決?

  • August 30, 2018

我只有基本的 VPN 經驗(主要是 OpenVPN),而且大多是理論上的,但現在我想建立一些更複雜的東西,我正在評估我可能面臨的問題。我將嘗試通過範例來表示假設情況。讓我們假設此設置使用 OpenVPN。

我有一個將執行 OpenVPN 客戶端的主伺服器和將具有不同 OpenVPN 伺服器的不同遠端位置。我將同時打開從主伺服器到這些遠端位置的不同隧道。假設我將同時打開十個不同的隧道。

每個隧道都將為客戶端分配一個本地 IP,例如:

10.0.0.2/24(隧道 A)

10.0.1.2/24(隧道 B)

10.0.2.2/24(隧道 C)

因此,例如,隧道 A 中的 OpenVPN 伺服器將是10.0.0.1/24. 如果我想訪問隧道 A 的 LAN 內的某些資源 - 例如,執行 Apache 的 Apache 172.16.0.50,我只需在我的 VPN 客戶端電腦中輸入 IP,然後我會訪問 Web 伺服器(假設所有路由都正常)。

我主要關心的是同時擁有不同的隧道以及在同一個本地 IP 下執行的多個服務。以上面的例子:

隧道 A:伺服器 10.0.0.1/24,客戶端 10.0.0.2/24,Apache 172.16.0.50

隧道 B:伺服器 10.0.1.1/24,客戶端 10.0.1.2/24,Apache 172.16.0.50

在這個特定的範例中,我們有兩個 Apache 實例在不同的網路中執行但共享相同的本地 IP,因此當客戶端172.16.0.50在兩個隧道處於活動狀態時輸入時,我猜它會失敗。

我不確定我的猜測是否正確,但我敢打賭這不是那麼不典型的情況。有人可以解釋在這種情況下需要做什麼嗎?

**編輯:**如果我不夠清楚,我深表歉意 - 讓我通過簡單的步驟簡化問題:

  • 兩台 VPN 伺服器(VPN1 和 VPN2)和一台 VPN 客戶端
  • VPN1 和 VPN2 為其內部服務共享相同的 LAN IP:172.16.0.0/24
  • VPN1 和 VPN2 都有一個在 172.16.0.50 下執行的 Apache
  • VPN 客戶端連接到兩個 VPN 伺服器(VPN1 和 VPN2)
  • 問題 -> 兩者都具有相同的 LAN 編號 (172.16.0.0/24),並且 Apache 也在完全相同的 IP 下執行
  • 問題 -> 除了更改其中一個 VPN 伺服器中的 LAN(以及因此 Apache 的 IP)之外,還有其他方法可以解決這個問題嗎?

不,沒有令人信服且無故障的方法來做到這一點。

在第 3 層,一旦兩條隧道都開通,客戶端絕對無法區分172.16.0.50-via-tunnel-1172.16.0.50-via-tunnel-2;IP 只是不支持這種決策(模源路由,這將非常痛苦並且得不到很好的支持)。

您可以使用一些骯髒的黑客攻擊:您可以讓客戶端上的 NAT 在兩個類似網路之上覆蓋兩個不同的 RFC1918 範圍,並使用基於策略的路由來產生流量

但是,您將不得不重寫所有引用重疊範圍中的地址的所有內容,具體取決於它通過的隧道。

老實說,對兩個目標網路之一重新 IP 將不那麼痛苦。這將帶來方便的附帶好處,即您能夠直接連結兩個網路 - 如果業務需要單個客戶端聯繫兩個網路,那麼直接互連它們只是時間問題。

編輯:在目前設置下,同樣的問題會影響這種情況:對於重疊範圍內的任何給定地址,客戶端無法知道應該路由到哪個隧道。您可以通過172.16.0.50通過隧道 1 和隧道 2提供路由來解決此問題172.16.0.51。但是,這不會很好地擴展,除非一個 LAN 中的所有有趣的主機都在 中172.16.0.0/25,而另一個 LAN 中的所有主機都在172.16.0.128/25。在那種情況下,重新 IPing 應該不會比到處更改網路遮罩更痛苦。

引用自:https://serverfault.com/questions/624035