我需要一些幫助來了解如何允許 VPN 用戶端存取「內部網路」上的伺服器。
我在 ovh 有一台專用/實體伺服器(如果重要的話),有 4 個額外的 ip。安裝的作業系統是 proxmox,我有兩個網路設備(它們的類型是「Linux 橋接器」)。一台分配了伺服器的公用 IP (vmbr0),另一台 (vmbr1) 的 IP 為 172.20.0.1,網路遮罩為 255.252.0.0。
我創建了一些僅分配了 vmbr1 的虛擬機器。我可以愉快地在這些機器之間進行 ping 操作。我還可以從這些機器訪問互聯網,就像它們位於我的家庭路由器後面一樣。如果重要的話,在 172.20.0.2 上我有一個 dhcp 伺服器,在 172.20.0.3 和 172.20.0.4 上我有兩個 dns 伺服器。
我建立了另一個分配 vmbr0 和 vmbr1 的虛擬機器。我已在 vmbr0 上配置了附加公共 IP 之一,並且可以透過 ssh 存取它。我還安裝了 openvpn 並對其進行配置,以便客戶端透過 VPN 伺服器存取網際網路。 VPN 用戶端從 10.8.0.0/24 網路取得 IP。
我現在要做的是允許來自 172.20.0.0/14 的所有伺服器 ping/ssh/etc 進入 10.8.0.0/24 網路上的 vpn 用戶端。
我發現我需要讓 openvpn 伺服器推送一些路由給客戶端(以便客戶端了解其他網路);
我非常確定我需要在 proxmox 主機本身上做一些事情(因為有 172.20.0.0/14 網路的網關),我相信我還必須在 openvpn 伺服器本身上添加一些 iptable 規則,以便轉送/偽裝網路之間的流量,但我無法確切理解什麼規則。
所以我的問題是:我需要做什麼才能允許 VPN 用戶端存取給定此設定的虛擬伺服器?
答案1
如果您的 OpenVPN 主機上沒有防火牆,它將預設允許流量,因此您可以忽略它。
用戶端需要將路由推送給它們,以確保發送到內部子網路的流量透過 VPN 進行路由。這可能是預設路由(導致所有流量從客戶端透過 VPN 發送)或內部子網路的特定路由。您已確定可以將其推送到 VPN 設定中(前提是您使用基於憑證的驗證)。
您需要在 OpenVPN 主機上啟用 IP 轉送。用於將sysctl
的值設為net.ipv4.conf.all.forwarding
1 /etc/sysctl.d
。
本地主機還需要路由以確保它們知道如何存取 OpenVPN 子網路。您可以:
在 OpenVPN 主機中使用 NAT 使轉送的封包看起來像是來自其內部 IP。這隱藏了 10.8.0.0/24 子網路的存在,因此不需要任何其他裝置知道它,但意味著來自所有 VPN 用戶端的所有流量似乎都源自單一主機。
設定路由以確保發送至 10.8.0.0/24 的流量定向到 OpenVPN 主機。這些可以添加到每個虛擬機器或主機上。使用該
route
工具,並將命令新增至網路介面聲明中,以確保它們在重新啟動後仍然存在。