ewo*_*wok 60 networking vpn virtualbox
我有一个 Oracle Linux 来宾在 Windows 7 主机上的 VirtualBox 中运行 Web 服务器。我需要设置网络,以便我可以做 3 件事:
我阅读了一些答案并尝试了一些配置,结果如下:
桥接
网络地址转换
仅限主机
所有 3 个条件都失败了。
NAT-网络
我还应该指出,有时主机通过 VPN 连接,而有时它只是直接插入公司网络。直接插入时,桥接适配器满足所有 3 个条件。理想情况下,无论是 VPN 还是直接连接,都会有一个满足所有 3 个条件的配置。
Ben*_*son 80
我遇到了完全相同的问题,并且看到了解决方案,所以我很高兴详细解释问题和解决方案。
了解在不涉及 VPN 的情况下满足您的要求所需的配置非常重要。此外,此信息假设主机和来宾上都没有软件防火墙干扰。
如果没有 VPN,这通常可以通过在虚拟机配置中创建两个网络适配器来解决。
第一个适配器必须设置为NAT
模式,这使来宾可以通过主机的网络接口访问网络资源(包括 Internet)。
第二个适配器必须设置为Host-only
,这将启用主机和来宾之间的双向通信。
这个适配器的设置比第一个稍微复杂,因为它需要修改 VirtualBox 的全局网络首选项以配置仅主机适配器(注意:这需要管理员权限)。
在 VirtualBox 中,转到File -> Preferences -> Network
. 单击Host-only Networks
选项卡并单击小+
图标以添加新适配器。系统将提示您提升 VirtualBox 的权限。
必须填写该Adapter
选项卡;它应该看起来像这样(忽略标记为 的适配器#2
;它用于不相关的东西):
DHCP
服务器选项卡上的值是可选的。如果您打算在来宾的网络配置中对此适配器的 IP 地址进行硬编码,则这些值是不必要的。另一方面,如果您打算使用 DHCP,则这些值可能如下所示:
关于配置 VirtualBox 的最后一步是返回到 VM 的网络配置并添加第二个适配器,它引用我们刚刚创建的仅主机适配器:
现在,在客户操作系统中,网络必须配置为使用这两个网络接口。
在 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
Run Code Online (Sandbox Code Playgroud)
(纯粹主义者可能更喜欢使用/etc/network/interfaces.d
目录,但这超出了本解释的范围)
重新启动来宾的网络服务,或者更简单地说,重新启动整个来宾 VM,一切都应该“正常工作”。
此时,应该能够 ping 来宾 VM192.168.56.101
并收到回复(前提是软件防火墙不干扰)。
同样,应该能够在 ping 主机10.0.2.2
。这个 IP 地址似乎被“硬编码”到 VirtualBox 的 NAT 实现中,或者至少是通过一些不明显的配置指令指定的,关于它的来源几乎没有可用的信息。但是,唉,“它只是有效”。
鉴于此配置,您的问题中列出的所有三个条件都得到满足。
但是,问题来了。引入 VPN 会导致显示停止问题(好吧,取决于特定的 VPN 及其配置)。
现代 VPN 能够进行拆分隧道,这是上述 VirtualBox 配置根据您的三个要求运行所必需的。出于(好的)安全原因,拆分隧道通常被禁用,这正是您(和我的)情况的问题。
当您连接到 VPN 时,VPN 客户端(Cisco AnyConnect 安全移动客户端,3.1.02026,在我的例子中)检查主机的路由表,记住它们,然后用通常来自某些集中的值铺平它们-管理位置(即,即使具有本地管理员权限,也不可能覆盖设置)。
您可以通过打开command.exe
(在 Windows 上)自行检查路由表:
C:\>route print
Run Code Online (Sandbox Code Playgroud)
在连接到 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
Run Code Online (Sandbox Code Playgroud)
连接到 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果没有最后两个条目,主机和来宾将无法通信,这正是在 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
Run Code Online (Sandbox Code Playgroud)
但是 VPN 客户端仍然保持警惕:它会拦截修改路由表的尝试。我的客户似乎允许第二个条目,但不允许第一个条目。(并且它可能会定期为两者铺平道路;我没有对此进行测试。)
如果您的特定 VPN 及其随行配置允许启用拆分隧道,则它通常是这样开启的:
与 VPN 断开连接后,行为良好的 VPN 客户端将恢复连接前的路由表。我的 VPN 客户端似乎可靠地执行此操作,这是有益的,因为这意味着当我连接到 VPN 或断开连接时,不需要重新启动来宾 VM。在这种情况下,VM 的辅助适配器被重置,但它会自动且透明地重新获取其 IP 地址,几乎立即恢复主机和来宾之间的通信。更好的是,主机和来宾之间的 NFS 挂载(我使用的是 CIFS 挂载)在 VPN 连接/断开连接操作中保持连接。
万一您的 VPN 允许拆分隧道,启用它可能很简单,在这种情况下,我很想听听您是否“一切正常”。
归档时间: |
|
查看次数: |
117859 次 |
最近记录: |