如何通过 VPN 连接到 VirtualBox 客户操作系统?

如何通过 VPN 连接到 VirtualBox 客户操作系统?

我有一个 Oracle Linux 客户机在 Windows 7 主机上的 VirtualBox 中运行 Web 服务器。我需要设置网络,以便可以做三件事:

  1. 主机可以通过浏览器和 ssh 连接到客户机
  2. 访客可以通过主机的 VPN 与内部网络上的其他服务器通信
  3. 客人可以访问外部互联网

我读过一些答案并尝试了一些配置,结果如下:

桥接

  1. 主人无法联系到客人
  2. 访客无法通过 VPN 看到内容
  3. 客人可以上网

NAT

  1. 主人无法联系到客人
  2. 客人可以通过VPN查看
  3. 客人无法访问互联网

仅限主持人

三个条件均不成立。

NAT网络

  1. 主人无法联系到客人
  2. 客人可以通过VPN查看
  3. 客人无法访问互联网

我还应该指出,有时主机通过 VPN 连接,而有时主机直接插入公司网络。当直接插入时,桥接适配器满足所有 3 个条件。理想情况下,无论有 VPN 还是直接连接,都会有一个配置满足所有 3 个条件。

答案1

我有精确的同样的问题,并且已经得到解决,所以我很乐意详细解释问题和解决方案。

无需 VPN

了解满足您的要求所需的配置非常重要没有涉及 VPN。此外,此信息假设主机和客户机上均没有软件防火墙干扰。

如果没有 VPN,通常可以通过在虚拟机配置中创建两个网络适配器来解决此问题。

第一个适配器必须设置为NAT模式,使客户机能够通过主机的网络接口访问网络资源(包括 Internet)。

适配器 1:NAT

第二个适配器必须设置为Host-only,以实现主机和客户机之间的双向通信。

此适配器的设置比第一个稍微复杂一些,因为它需要修改 VirtualBox 的全局网络首选项才能配置仅主机适配器(注意:这需要管理员权限)。

在 VirtualBox 中,转到File -> Preferences -> Network。单击Host-only Networks选项卡,然后单击小+图标以添加新适配器。系统将提示您提升 VirtualBox 的权限。

填写该Adapter标签是强制性的;它看起来应该像这样(忽略标有的适配器#2;它用于不相关的操作):

网络偏好设置 1

服务器选项卡上的值DHCP是可选的。如果您打算在客户机的网络配置中硬编码此适配器的 IP 地址,则这些值是不必要的。另一方面,如果您打算使用 DHCP,这些值可能如下所示:

网络偏好设置 2

配置 VirtualBox 的最后一步是返回 VM 的网络配置并添加第二个适配器,该适配器引用我们刚刚创建的仅主机适配器:

适配器 2:仅主机

现在,在客户操作系统中,必须配置网络以利用这两个网络接口。

在 Debian 或 Ubuntu GNU/Linux 上,配置很简单,只需修改/etc/network/interfaces如下即可:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# The secondary network interface
auto eth1
iface eth1 inet static
     address 192.168.56.101
     netmask 255.255.255.0

(纯粹主义者可能更喜欢使用/etc/network/interfaces.d目录,但这超出了本解释的范围)

重新启动客户的网络服务,或者更简单地重新启动整个客户虚拟机,然后一切都应该“正常工作”。

此时,应该能够 ping 客户虚拟机192.168.56.101并收到答复(前提是软件防火墙没有干扰)。

同样,应该能够 ping 主机10.0.2.2。此 IP 地址似乎“硬编码”到 VirtualBox 的 NAT 实现中,或者至少通过一些不明显的配置指令指定,并且关于其来源的信息很少。但是,唉,“它就是有效”。

鉴于这种配置,您的问题中概述的所有三个条件均得到满足。

输入:VPN

但问题就在这里。引入 VPN 会导致严重的问题(当然,这取决于具体的 VPN 及其配置)。

现代 VPN 能够分割隧道,这是上述 VirtualBox 配置按照您的三个要求运行所必需的。出于(良好的)安全原因,拆分隧道通常被禁用,而这正是您的情况(和我的情况)中的问题。

当您连接到 VPN 时,VPN 客户端(我的情况是 Cisco AnyConnect Secure Mobility Client,3.1.02026)会检查主机的路由表、记住它们,然后用通常来自某些集中管理位置的值覆盖它们(即,即使具有本地管理员权限,也不可能覆盖这些设置)。

command.exe您可以通过打开以下内容(在 Windows 上)自行检查路由表:

C:\>route print

在连接到 VPN 之前,路由表包含使 VirtualBox 配置正常运行的关键条目。连接到 VPN 会导致这些条目被删除,从而阻止主机和客户机之间的通信。

(还有许多其他条目,我在这里省略了,因为它们与这种行为的根本原因无关。)

连接到 VPN 之前:

     192.168.56.0    255.255.255.0         On-link      192.168.56.1    266
     192.168.56.1  255.255.255.255         On-link      192.168.56.1    266
   192.168.56.255  255.255.255.255         On-link      192.168.56.1    266
        224.0.0.0        240.0.0.0         On-link      192.168.56.1    266
  255.255.255.255  255.255.255.255         On-link      192.168.56.1    266

连接到VPN后:

     192.168.56.1  255.255.255.255         On-link      192.168.56.1    266
        224.0.0.0        240.0.0.0         On-link      192.168.56.1    266
  255.255.255.255  255.255.255.255         On-link      192.168.56.1    266

VPN客户端删除以下几行:

     192.168.56.0    255.255.255.0         On-link      192.168.56.1    266
   192.168.56.255  255.255.255.255         On-link      192.168.56.1    266

如果没有最后两个条目,主机和客户机就无法通信,这正是在 VPN 配置中禁用拆分隧道时的预期行为。

通常情况下,这两个命令会恢复这些路由:

C:\>route ADD 192.168.56.0 MASK 255.255.255.0 192.168.56.1 METRIC 266
C:\>route ADD 192.168.56.255 MASK 255.255.255.255 192.168.56.1 METRIC 266

但 VPN 客户端仍保持警惕:它会拦截修改路由表的尝试。我的客户端似乎允许第二个条目,但不允许第一个条目。(它可能会定期覆盖这两个条目;我没有对此进行测试。)

如果您的特定 VPN 及其相关配置允许启用拆分隧道,通常按如下方式打开:

Cisco VPN 客户端:允许访问 LAN 资源

断开与 VPN 的连接后,运行良好的 VPN 客户端将恢复连接前存在的路由表。我的 VPN 客户端似乎可以可靠地执行此操作,这很有帮助,因为这意味着当我连接到 VPN 或断开与 VPN 的连接时,不需要重新启动客户 VM。在这种情况下,VM 的辅助适配器会重置,但它会自动且透明地重新获取其 IP 地址,几乎立即恢复主机和​​客户机之间的通信。更好的是,主机和客户机之间的 NFS 挂载(我使用的是 CIFS 挂载)在 VPN 连接/断开操作期间保持连接。

如果您的 VPN 允许拆分隧道,那么启用它可能是一个简单的问题,在这种情况下,我很想听听您的意见,了解“一切是否正常”。

答案2

如何在客户 Linux 机器中使用我的 Windows 主机 VPN

1-) 打开您的 VPN 设置。指定一些本地端口号。

VPN 设置

2-) 打开虚拟机设置。确保网络已连接到 NAT。然后单击高级和端口转发

在此处输入图片描述

3-) 单击添加规则并输入您在 VPN 中指定的相同端口号

端口转发

4-) 启动虚拟机。转到网络设置。选择手动并在 IP 地址上输入 10.0.2.2(默认 VirtualBox NAT 网关)以及我们之前指定的端口。

Linux 网络设置

5-) 打开 Firefox,访问 whoer.net,检查你的 VPN 是否正常工作。全部完成

沃赫尔

相关内容