OPENVPN 将本地网络路由到远程服务器

OPENVPN route local net to remote server

我已经配置了一个从我的 debian 电脑到我的远程 debian 服务器的 openvpn 连接,它可以工作。事实上,我可以ping 10.0.0.1(服务器vpn中的地址)。

现在我想分享这个连接。我希望 lan 上的其他客户端可以在没有 openvpn 客户端的情况下访问服务器。我该怎么做?

我的局域网标准地址是192.168.2.x。如何设置192.168.2.123地址直接连接远程服务器?

如果我没理解错的话,您想将地址 192.168.2.123 映射到可远程访问的 openvpn 服务器 10.0.0.1

为此,您需要做两件事

  1. 在您的 debian 电脑上为地址 192.168.2.123 创建一个别名。可以找到详细的操作方法 here
  2. 设置您的 debian 电脑 以将 192.168.2.123 的传入流量重写到远程服务器 10.0.0.1。

要设置转发,您需要先启用它,如下所示。

echo 1 > /proc/sys/net/ipv4/ip_forward

然后设置特定的防火墙规则以实际转发您的流量。这是一个如何执行此操作的示例。

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -t nat -A PREROUTING -d 192.168.2.123 -j DNAT --to-destination 10.0.0.1

注意:tun0应该是你的debian pc打开的隧道接口,eth0是你debian pc上的接口,ip地址是192.168.2.123。您的接口的实际名称可能是……。别的。 这将设置一个 NAT,有效地将流量从您的 LAN 接口映射到您在 VPN 中拥有的地址。另请注意,此设置将要求您 LAN 中的客户端启动与远程 debian 服务器的任何连接。

另一种解决方案是简单地将 LAN 接口的流量转发到隧道接口,如下所示。使用这种方法,您将能够使用它的内部 VPN ip 10.0.0.1.

访问您的远程 debian 服务器
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

注意:另一端的VPN服务器不知道转发给它的流量的子网。为了使服务器能够发送回响应,您需要告诉它能够使用隧道到达您的 LAN 192.168.2.x。 Here 解释了如何做到这一点。此外,您还需要将正常网络接口上的附加路由告诉您的客户。