Networking

如何使 192.168.2.* 可以從 192.168.0.* 訪問?(VPN)

  • July 4, 2019

目標: 使 192.168.2.* 可從 192.168.0.* 訪問

情況: 我有一個遠端站點(網路 B),路由器內置了 OpenVPN 伺服器。在我這邊,我有一個網路(網路 A),其中一個 VPN 客戶端連接到遠端站點(網路 B)。具有 VPN 客戶端的主機可以 ping 兩個網路中的所有系統。

問題: 如何讓網路 A 上的主機與網路 B 上的主機通信,首先通過 VPN 客戶端通過主機路由它們? 注意:我不希望他們每個人都有自己的 VPN 客戶端。

這是我為使其更清晰而創建的圖表: https ://networkengineering.stackexchange.com/questions/59630/using-vpn-make-192-168-2-accessible-from-192-168-0

我嘗試了以下方法:

在 192.168.0.*(網路 A)中的每台機器上,將添加一個預設網關,如下所示。

$ route add default gw 192.168.0.3

在網關(這有我的 VPN 客戶端)中,添加以下路由條目。

$ route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.47

此時我希望網路 A 中的機器可以 ping 網路 B,但他們無法。

我想到了。我必須將 VPN 客戶端上的 iptables 配置為具有 MASQUERADE 選項的 NAT,然後我需要在相應介面上添加 VPN 客戶端的 IP 地址作為該網路中每個系統的預設網關。


允許內部網路(網路 A)上的機器與外部網路(網路 B)進行通信

您需要配置 iptables 以將數據包從 eth1(後端)上的內部網路轉發到 tun0(遠端)上的外部網路。

  1. 在執行 VPN 客戶端的機器上
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT
  1. 在內部網路中的每台機器上
route add default gw 192.168.0.3
  1. 現在網路 A 上的機器可以與網路 B 進行 ping/通信。

允許外部網路上的機器與您的內部網路通信

您需要配置 iptables 以將數據包從 tun0(遠端)上的外部網路(網路 B)轉發到 eth1(後端)上的內部網路(網路 A)。

  1. 在執行 VPN 客戶端的機器上
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -A FORWARD -i eth1 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i tun0 -o eth1 -j ACCEPT
  1. 在每台遠端機器上
route add default gw 192.168.2.47
  1. 現在網路 B 上的機器可以與網路 A 進行 ping/通信。

您可以從站點 B 使用站點到站點 openVPN 路由除網際網路之外的所有流量站點到站點 vpn 將為 192.168.0.0/24 網路添加預設路由,並且預設路由將添加到您的網關路由表中,以便每個主機都通過正確的網關有效地路由。

我們在具有兩個 pfsense vm(版本 2.4.4)的網路上進行了嘗試,它執行良好。站點 A 是伺服器,站點 B 是站點到站點連接的客戶端!站點 B 正在通過 VPN 路由所有流量,但我們將其切換回將所有 http/https 流量路由到兩個站點的每個 wan。

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