通过VPN的virtualbox guest虚拟机操作系统


43

我有一个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个条件的配置。


VPN连接通常具有其自己的适配器,因此我首先想到的是,您必须将其桥接到VPN适配器(连接到VPN时)。
Ƭᴇcʜιᴇ007

我将虚拟机桥接到VPN适配器,但没有IP地址
ewok 2015年

你能说这是第二层还是第三层适配器?
MariusMatutiae

@MariusMatutiae对不起,不确定您的意思。
ewok 2015年

这是哪种VPN?
MariusMatutiae

Answers:


63

我遇到了完全相同的问题,并将其彻底解决了,因此,我很乐于详细解释问题和解决方案。

不涉及VPN

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

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

必须将第一个适配器设置为NATmode,该模式使访客能够通过主机的网络接口访问网络资源(包括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目录,但这超出了本说明的范围)

重新启动来宾的网络服务,或更简单地说,重新启动整个来宾VM,一切应该“正常”。

在这一点上,应该能够ping通来宾VM 192.168.56.101并收到答复(前提是软件防火墙没有干扰)。

同样,应该可以ping通主机10.0.2.2。该IP地址似乎已“硬编码”到VirtualBox的NAT实现中,或者至少是通过一些非显而易见的配置指令指定的,并且几乎没有关于其来源的信息。但是,a,“它确实有效”。

使用此配置,将满足您的问题中概述的所有三个条件。

输入:VPN

但是,这是磨擦。引入VPN会引起显示停止的问题(嗯,这取决于特定的VPN及其配置)。

现代VPN能够进行Split Tunneling,这是上述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允许拆分隧道,这很可能是一个简单的问题,启用它很简单,在这种情况下,我很乐意听取您关于“一切正常”的信息。


5
非常感谢您在此答案中所做的所有努力(图像及全部)。这对您的解释很有帮助!
伊甸肖

干得好,本!这帮助我了解了VPN的问题,并在我向IT部门提交的事件报告中清楚地阐明了我的案情!
Mark Maglana

1
仅供参考,我有机会获得“允许本地(LAN)接入”上的AnyConnect功能,我可以证实,勾选此复选框并不能防止被删除的路由。
Lqueryvg

-1

我如何在Guest Linux Mint Machine中使用Windows Host VPN

将我的VPN设置为在设置中使用固定端口号

将虚拟机网络设置为NAT

在IP 10.0.2.2(默认VirtualBox NAT网关)上设置Linux代理设置以及我手动输入我的VPN的端口

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.