【发布时间】:2016-05-07 03:15:57
【问题描述】:
我已经配置了一个从我的 debian 电脑到我的远程 debian 服务器的 openvpn 连接,它可以工作。其实我可以ping 10.0.0.1(服务器vpn中的地址)。
现在我想分享这个连接。我希望局域网上的其他客户端可以在没有 openvpn 客户端的情况下访问服务器。我该怎么做?
我的局域网标准地址是 192.168.2.x。如何设置192.168.2.123地址直接连接远程服务器?
【问题讨论】:
我已经配置了一个从我的 debian 电脑到我的远程 debian 服务器的 openvpn 连接,它可以工作。其实我可以ping 10.0.0.1(服务器vpn中的地址)。
现在我想分享这个连接。我希望局域网上的其他客户端可以在没有 openvpn 客户端的情况下访问服务器。我该怎么做?
我的局域网标准地址是 192.168.2.x。如何设置192.168.2.123地址直接连接远程服务器?
【问题讨论】:
如果我理解正确,你想将地址 192.168.2.123 映射到远程可访问的 openvpn 服务器 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 电脑打开的隧道接口,eth0 是你的 debian 电脑上 ip 地址为 192.168.2.123 的接口。您的接口的实际名称可能是 sth。别的。 这将设置一个 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 解释了如何做到这一点。此外,您还需要告诉您的客户有关普通网络接口上的附加路由。
【讨论】: