当客户端登录到 OpenVPN 云时,他们的网络接口如何知道为我的自定义子网 IP 范围路由流量?

当客户端登录到 OpenVPN 云时,他们的网络接口如何知道为我的自定义子网 IP 范围路由流量?

我最近使用 Open VPN 将 Raspberry Pi 设置为家庭网络的网桥。目的是允许同事访问我的 LAN 上的存储设备。

我使用的是 Open VPN Cloud。因此我没有运行自己的访问服务器。我无法在存储设备上安装新软件,否则会导致其保修失效。

因此,我没有安装 Open VPN 的访问服务器,而是在云仪表板中创建了一个新的“网络”以及一个新的子网,并将我的 Raspberry PI 连接为网络“连接器”。

之后,我使用 nftables 设置 PI 来将数据包路由到 Open VPN 的网络接口和从 Open VPN 的网络接口路由数据包:

sudo nft add table nat
sudo nft 'add chain nat postrouting { type nat hook postrouting priority 100; }'
sudo nft 'add chain nat prerouting { type nat hook prerouting priority -100; }'
# When destination IP is 172.19.10.1 (Cloud IP for network device), route packets to LAN storage device
sudo nft add rule nat prerouting iif tun0 ip daddr 172.19.10.1 dnat 192.168.0.10
sudo nft add rule nat postrouting masquerade

描述:当目标 IP 为 172.19.10.1(网络设备的云 IP)时,将数据包路由到 LAN 存储设备。它还启用 NAT。

我的问题是这样的。当客户端登录到云时,他们的网络接口如何知道为我的自定义子网 IP 范围路由流量?

我检查了 Windows 计算机上的 Open VPN 网络接口,发现我的子网未分配给它。但是,当我登录到云时,我能够连接到我的子网 IP 范围 (172.19.10.1/32)。

我知道我的子网从技术上来说只是一个 IP,但在这种情况下这就是我所需要的。

Open VPN 是否会自动配置客户端来路由数据包,方式与我设置 PI 在接口之间路由数据包的方式类似? 例如,也许 OpenvVPN 将客户端设备配置为将特定子网的数据包路由到其自己的网络接口,然后将数据包路由到我的 PI 接口。这是这样工作的吗?

我可能也有点困惑,因为我根本不了解 Windows 上的 IP 路由。

答案1

Windows 上的路由与 Linux 上的路由没有太大区别。

它不仅限于“本地子网和默认网关”——您可以配置,或者 OpenVPN 客户端可以安装任意网络前缀的路由。

如果您运行,route -4 print您很可能会看到通过 VPN 隧道接口的 172.19.10.1/32 前缀的路由。

相关内容