Vpn

本地網路子網地址與遠端網路衝突時通過VPN連接遠端伺服器

  • April 8, 2021

這是關於解決 VPN 客戶端的本地網路與跨 VPN 鏈路之間的 IPv4 子網衝突的規範問題。

通過 OpenVPN 連接到遠端位置後,客戶端嘗試訪問存在於子網(例如 192.0.2.0/24)上的網路上的伺服器。但是,有時,客戶端 LAN 上的網路具有相同的子網地址:192.0.2.0/24。由於此衝突,客戶端無法通過鍵入其 IP 連接到遠端伺服器。在連接到 VPN 時,他們甚至無法訪問公共網際網路。

問題是這個子網192.0.2.0/24需要通過VPN路由,但也需要作為客戶端的區域網路路由。

有誰知道如何緩解這個問題?我可以訪問 OpenVPN 伺服器。

可以使用 NAT 解決此問題;它只是不是很優雅。

因此,假設您無法通過擁有如此不常見的網路編號以至於從未真正發生衝突的內部網路來解決此問題,原理如下:

由於本地子網和遠端子網都具有相同的網路號,因此來自客戶端的流量永遠不會意識到它必須通過隧道網關才能到達目的地。即使我們想像它可以,遠端主機的情況也會與它即將發送答案相同。

所以和我在一起,假裝到目前為止還沒有其他問題,因為我寫的是完全連接,你需要在隧道內對兩端進行 NAT,以便區分主機並允許路由。

在這裡做一些網:

  • 您的辦公網路使用 192.0.2.0/24
  • 您的遠端辦公室使用 192.0.2.0/24
  • 您的辦公網路 VPN 網關將 192.0.2.0/24 主機隱藏在 NATed 網路號 198.51.100.0/24 後面
  • 您的遠端辦公網路 VPN 網關將 192.0.2.0/24 主機隱藏在 NATed 網路號 203.0.113.0/24 後面

所以在 VPN 隧道內,辦公室主機現在是 198.51.100.x,遠端辦公室主機是 203.0.113.x。讓我們進一步假設所有主機在其各自 VPN 網關的 NAT 中 1:1 映射。一個例子:

  • 您的辦公室網路主機 192.0.2.5/24 在辦公室 vpn 網關 NAT 中靜態映射為 198.51.100.5/24
  • 您的遠端辦公網路主機 192.0.2.5/24 在遠端辦公 vpn 網關 NAT 中靜態映射為 203.0.113.5/24

因此,當遠端辦公室的主機 192.0.2.5/24 想要連接到辦公室網路中具有相同 ip 的主機時,它需要使用地址 198.51.100.5/24 作為目標。會發生以下情況:

  • 在遠端辦公室,主機 198.51.100.5 是通過 VPN 到達並路由到那裡的遠端目的地。
  • 在遠端辦公室,由於數據包通過 NAT 功能,主機 192.0.2.5 被偽裝成 203.0.113.5。
  • 在辦公室,當數據包通過 NAT 功能時,主機 198.51.100.5 被轉換為 192.0.2.5。
  • 在辦公室,返回到主機 203.0.113.5 的流量在相反的方向上經過相同的過程。

因此,雖然有解決方案,但要在實踐中發揮作用,必須解決許多問題:

  • 偽裝的IP必須用於遠端連接;DNS 變得複雜。這是因為從連接主機的角度來看,端點必須具有唯一的 IP 地址。
  • 作為 VPN 解決方案的一部分,必須在兩端實施 NAT 功能。
  • 靜態映射主機對於從另一端進行訪問是必須的。
  • 如果流量是單向的,只有接收端需要對所有涉及的主機進行靜態映射;如果需要,客戶端可以擺脫動態 NAT。
  • 如果流量是雙向的,則兩端都需要所有涉及的主機的靜態映射。
  • 無論是拆分 VPN 還是非拆分 VPN,都不得削弱 Internet 連接。
  • 如果你不能一對一映射,它就會變得混亂;仔細記賬是必要的。
  • 自然地,一個人冒著使用 NAT 地址的風險,這些地址也被證明是重複的 :-)

所以解決這個問題需要精心設計。如果您的遠端辦公室確實由公路戰士組成,那麼您會增加一層問題:

  • 他們永遠不會事先知道何時最終會出現重疊的網路 ID。
  • 遠端辦公室網關 NAT 需要在他們的筆記型電腦上實施。
  • 辦公室網關需要兩個 VPN,一個無 NAT 和一個 NATed,以涵蓋這兩種情況。否則,如果有人選擇您為 NAT 方法選擇的子網之一,事情將無法正常工作

根據您的 VPN 客戶端,您可能能夠根據本地網段的網路地址自動選擇一個 VPN 或另一個。

請注意,在此上下文中所有提到的 NAT 都表示 NAT 功能,可以說它發生在隧道透視圖中。在流程方面,靜態 NAT 映射必須在數據包“進入”隧道之前完成,即在它被封裝在傳輸數據包中之前,該傳輸數據包將通過網際網路將其帶到另一個 VPN 網關。

這意味著不得將 VPN 網關的公共 IP 地址(實際上也可能是 NAT:ed,但完全超出通過 VPN 傳輸到遠端站點的角度)與用作偽裝的唯一私有地址混淆對於重複的私人地址。如果這種抽象難以描述,這裡可以說明 NAT 如何與 VPN 網關物理分離以實現此目的:

在重疊網路中使用 NAT

將相同的圖片壓縮為一台機器內部的邏輯分離,能夠同時執行 NAT 和 VPN 網關功能,只是將相同的範例更進一步,但確實更加強調手頭軟體的功能。將其與例如 OpenVPN 和 iptables 一起破解並在此處發布解決方案將是一個值得挑戰的挑戰。

軟體方面當然是可能的:

PIX/ASA 7.x 及更高版本:具有重疊網路配置範例的 LAN 到 LAN IPsec VPN

和:

在具有重複 LAN 子網的路由器之間配置 IPSec 隧道

因此,實際實施取決於很多因素,包括所涉及的作業系統、相關軟體及其可能性。但這肯定是可行的。您需要進行一些思考和實驗。

從連結中可以看出,我是從思科那裡學到的。

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