OpenVPN – 客户端作为其他客户端的网关

我有以下结构: networking图

我想实现的目的主要是通过笔记本电脑客户端(以及任何可能的客户端)通过内部networking中的MacOS OpenVPN客户端路由所有stream量。

我知道最简单的事情是在MacOS内部服务器上运行OpenVPN服务器,但是它在代理和防火墙之后,并且不能从外部访问(在我的情况下,SSH隧道不是一个选项) – 这就是为什么我有这样一个奇怪的结构。

如何configuration客户端和服务器来实现这一点?

可以使用ccd脚本路由只能通过另一个openVPN客户端访问的子网

例如在你的情况下,你将不得不添加类似这样的AWS服务器configuration

假设10.80.0.1是您的AWS VPN网关(VPN地址,不是外部IP)的IP, 10.0.2.0/24是您希望通过MacOS服务器路由的子网

在文件/etc/openvpn/ccd/macos_vpn_commonname

iroute 10.0.2.0 255.255.255.0 push "route 10.0.2.0 255.255.255.0 10.80.0.1" route 10.0.2.0 255.255.255.0 10.80.0.1"

您还需要一条线在AWS服务器上的OpenVPN服务器主configuration文件中
client-config-dir /etc/openvpn/ccd

它在macos_vpn_commonname客户端连接上告诉OpenVPN服务器,通过该客户端可以访问子网10.0.2.0 / 24,并启用通过该隧道的路由。 据我testing,没有其他的方式来做到这一点,甚至手动路由通过先前创build的隧道的stream量将无法正常工作。

这将涵盖通过MacOS服务器路由子网。 如果你需要通过它redirect所有的stream量,那么让我知道,我会尽力帮助你在AWS OpenVPN服务器和redirect-gateway指令上进一步使用iprule / iproute ,因为我不确定OpenVPN是否为这种情况做好了准备内部机制。