NAT 路由 VPN 连接到本地网络

NAT 路由 VPN 连接到本地网络

我有一台带有一个以太网连接的 Raspberry Pi。该以太网将设备连接到互联网和本地网络。我试图通过 OpenVPN 允许来自本地网络外部的连接访问本地网络上的计算机,因为本地网络本身不能拥有公共静态 IP。

我已经成功设置了 OpenVPN 服务器,并且可以通过 VPN 连接从另一台计算机连接 Pi,但是我不确定如何通过将连接从 OpenVPN 路由到其本地来允许网络访问 Pi 所在的本地网络的其余部分网络。

许多在线教程假设有两个不同的接口,每个接口分别连接到互联网和本地网络,但在这种情况下,我们有一个接口同时执行这两个操作。有没有一种方法可以使用 NAT 将 OpenVPN 连接路由到本地网络,以便可以双向建立连接,往返于本地网络以及通过静态本地 IP 进行 OpenVPN 连接?

答案1

(我假设您使用的是 L3 VPN。)

执行此操作的干净(无 NAT)方法是将 LAN 的 IP 提供给 OpenVPN 客户端。假设您的 LAN 是 192.168.0.0/24,您可以为您的 OpenVPN 客户端静态分配该范围内的一个 IP。

假设您将 192.168.0.42 提供给 OpenVPN 客户端。 LAN 上尝试访问 192.168.0.42 的节点将在 LAN 上发出 ARP 请求,以查找与 IP 地址关联的 MAC 地址。但是,您的 OpenVPN 不在 LAN 上,无法应答 ARP 请求:因此远程 LAN 上的节点无法到达您的 OpenVPN 客户端。

服务器上的IP配置:

ip address add 192.168.0.33 peer 192.168.0.42 dev tun0

客户端IP配置:

ip address add 192.168.0.42 peer 192.168.0.33 dev tun0

首先,我们需要要求 OpenVPN 服务器代表客户端应答 ARP 请求。这称为 ARP 代理:

ip neigh proxy 192.168.0.42 dev eth0

现在,LAN 上尝试访问 192.168.0.42 的节点将从 OpenVPN 服务器获取 ARP 回复并向其发送数据包。

下一步是在 OpenVPN 服务器上启用 IP 转发:

sysctl -w net.ipv4.ip_forward=1

当接收到 192.168.0.42 的数据包时,OpenVPN 服务器现在会将其路由到客户端。

相关内容