LAN 客户端

LAN 客户端

我在 LAN 中运行一个 OpenVPN 服务器(本地寻址为 192.168.1.12),我想将 LAN 上其他设备对它的请求通过端口 3000 转发到其中一个 VPN 客户端。(10.8.0.6)

我的最终结果是 192.168.xx 设备能够通过在浏览器中输入 192.168.1.12:3000 来访问 Web 服务器,但实际上是与 10.8.0.6:3000 进行通信。

vpn服务器上启用了ip转发。

(这些来自其他问题的修改尝试似乎不起作用)

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 3000 -j DNAT --to-destination 10.8.0.6:3000
iptables -A FORWARD -p tcp -d 10.8.0.6 --dport 3000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

答案1

可以通过向 LAN 中的计算机添加“静态路由”来实现类似的目的,该路由会告诉它们在哪里可以找到 VPN 客户端。

LAN 客户端


例如,您可以像这样向您的 LAN 中的 Linux 机器添加路由:

(sudo) ip route add 10.8.0.0/24 via 192.168.1.12

在 Windows 上也可以通过以下方式实现相同的功能:

route add 10.8.0.0 mask 255.255.255.0 192.168.1.12

(如果使用 Windows,请考虑使用 -p 选项来route使路由持久。

OpenVPN 服务器


显然,您的 VPN 客户端也必须了解您的 LAN,这可以通过将其添加到您的 OpenVPN server.conf 来实现:

push "route 192.168.1.0 255.255.255.0"

(假设您的 LAN 的网络掩码是 /24 )

现在,如果您完成上述所有操作,您就可以像这样访问提到的网络服务器:http://10.8.0.6:3000

答案2

事实证明...我的初始 iptables 规则没有任何问题。尽管只需要第一个!

答案3

您可以使用 SSH 隧道执行相同操作,无需任何 iptables 规则。在您的 OpenVPN 服务器上运行以下命令:

$ ssh -L 3000:10.8.0.6:3000 root@localhost &

之后如果你打开http://192.168.1.12:3000并将转发到 10.8.0.6:3000

实际的 SSH 连接将在后台运行,您需要在重新启动服务器或偶尔断开连接后再次运行该命令。

看一看这里有关 SSH 隧道的更多示例,它在这种情况下可能非常有用。

相关内容