以下是我所拥有的:
Mac OS X 10.10- 运行 VirtualBox 并充当 OpenVPN 客户端。这在 VPN 上运行良好,旨在作为我的主机。这台机器上还有一个 WiFi 连接,充当我与外界的网关。这台 Mac 设置了 NAT 以连接到 WiFi 路由器。
Windows 7 专业版- 这是通过 Mac 上的 VirtualBox 运行的虚拟实例。
我的 OpenVPN 服务器在 CentOS 上运行,但我认为这对于我的问题来说并不重要。
我如何确保我的 Windows 机器只通过 VPN 建立连接而不通过 WiFi 建立连接?
刚开始时,我以为 OpenVPN 客户端将充当一个新的网络适配器,并且我可以在 VirtualBox 设置中仅公开该适配器。但事实似乎并非如此,VirtualBox 只是将其视为 NAT 适配器。
需要明确的是,所需的用例如下:
OpenVPN 客户端在 Mac 主机上运行良好,这意味着它在 Windows 机器上运行良好。
Mac 客户端上的 OpenVPN 出现故障,但 Mac 仍通过 Wifi 连接运行。由于没有连接,Windows 计算机现在无法再访问任何互联网资源。
我怎样才能实现这个目标?
答案1
bridged
答案是:这取决于您是否在或模式下使用 OpenVPN routed
:如果您的新虚拟接口是,则您有一个路由 OpenVPN,tunX
如果您有一个虚拟接口,则您有一个桥接 OpenVPN tapX
。
对于桥接 OpenVPN:在 VirtualBox 屏幕中选择网络 -> 桥接适配器,名称 -> tap0。
对于路由的 Openvpn:在 VirtualBox 屏幕中选择网络 -> NAT。
这样,您就不需要在虚拟机上使用 OpenVPN 客户端了。此外,上述答案涵盖了两种重要情况,OP 并未说明正在使用哪种 OpenVPN 模式。
为了再次检查上述操作是否正常工作,请在浏览器中加载以下 URL,www.whatismyipaddress.com;从它的输出,或者如果您不确定,可以使用答案中提供的地理位置工具,确定您的明显外部 IP 是什么。
答案2
听起来您正在寻找“桥接”虚拟接口,而不是 NAT 虚拟接口。这样,您可以将虚拟接口(即 Mac 主机与 Windows 客户机之间的通信接口)绑定到主机的仅一个特定接口。据我了解,您在主机上设置了 VPN 接口,对吗?有关详细信息,请参阅http://www.virtualbox.org/manual/ch06.html#network_bridged
答案3
免责声明:我从未使用过 Virtualbox,因此这可能不可能。
选项1 将 Windows 机器的网络适配器绑定到 openvpn 接口。
选项 2 稍微复杂一点,在 Windows 机器前面创建一个网络,在 Linux 上使用一个小型 Openvpn 路由器,然后设置 iptables 以仅允许 Windows 使用 openvpn 接口。这样当 VPN 断开时,Windows 就无法访问互联网,因为 Linux 机器会阻止它。
答案4
确保所有流量都通过 VPN 路由的最佳方法是运行 VPN 客户端里面虚拟机。如果您在虚拟机中运行 OpenVPN 客户端,则可以push "redirect-gateway"
在配置中设置选项以确保所有客户端流量都通过 VPN 进行定向。如果服务器连接丢失,则所有客户端请求都应超时(而不是通过剩余的 NAT 适配器进行路由)。
如果 OpenVPN 客户端本身存在问题,您可以使用 Windows 防火墙明确禁止任何进程访问 VirtualBox 提供的剩余 NAT 适配器。您可以通过对主网络适配器上的所有传入和传出连接使用默认拒绝策略/规则来实现此目的,并添加例外仅有的对于 OpenVPN 客户端。这将强制虚拟机内的所有其他流量通过隧道适配器路由,或者如果不可用则直接阻止。