如何与主机共享访客虚拟机的 VPN 连接

Jan*_*Doe 6 vpn networking virtualbox

我发现在解释如何共享无线连接或如何与来宾共享主机 VPN 的大量操作方法中找不到答案。

我有一个访客 Windows 10 VM(使用 VirtualBox),我通过主机(也是 Windows 10)设置了桥接连接。我使用桥接是因为我需要主机能够访问来宾,而来宾也能够访问外部世界。我已经在来宾上安装了 VPN 软件,该软件可以正常工作并使我能够从该来宾访问我公司的网络。在主机上安装 VPN 软件不是一种选择。我正在尝试与主机共享来宾 VM 的网络连接。最终,我希望同一主机上的其他 VM 能够通过访客的 VPN 连接进行连接。但到目前为止,我只是想让主机使用它,因为之后其余的应该是直接的。

在来宾上,我看到以太网 1,这是我在 VirtualBox 中为其配置的网络适配器。我还看到以太网 2,它是 VPN 软件在运行时创建的适配器。我尝试共享以太网 1 和 2,但这似乎结束了 VPN 连接。我在 VirualBox 中为 Guest 创建了第二个以太网适配器。我已经尝试过共享该连接并在它与以太网 1 和 2 之间创建桥接器(我都尝试过)。这些似乎都没有奏效,我不确定如何取得进展。以太网 3 目前是一个 Host Only 网络适配器,因为我认为这应该是我所需要的。

如何从主机和其他 VM 使用访客的 VPN?

Kos*_*ios 21

我通过大量试验和错误完成了 k010mb0 的步骤,最后我得到了仅适用于 Windows 的 VPN,可以在 virtualbox 来宾 Windows 10 上运行,并且还可以从我的 Linux (Ubuntu) 主机访问它。

我只会尝试进一步详细说明。我假设您已经在 Linux 主机上安装了 virtualbox,创建了来宾虚拟机并在其上安装了 Windows 10。

1. 为您的 virtualbox 来宾 Windows 设置 NAT 网络适配器

这是您的 Windows 来宾虚拟机必须访问 Internet 所必需的。为此,您需要在来宾虚拟机处于停止状态的情况下打开 virtualbox,单击 Windows 虚拟机,单击设置按钮,然后从左侧列表导航到“网络”。然后你需要像这样配置:

在此输入图像描述

您在此处看到选项呈灰色的原因是因为我当前正在运行虚拟机,但是,如前所述,您应该在虚拟机停止的情况下执行此操作。

2. 在主机上设置仅主机网络

此步骤是特定于主机的,而不是特定于访客的。这就是为什么您从 virtualbox 的全局设置菜单而不是访客设置(稍后将配置访客)创建此网络的原因。

转到您的 virtualbox 管理器窗口,单击File -> Host Network Manager... Ctrl+H。您可能会看到一个屏幕,其中有一个空的网络列表和一些按钮,其中有一个Create按钮。单击它,您将获得第一个网络:

在此输入图像描述

请注意,除了可以保留原样的 IP 设置之外,还有一个用于在此新网络上配置 DHCP 的选项卡。此 DHCP 用于在来宾虚拟机上分配新网络子网的 IP。您可以保留默认设置,因为无论如何我们都会在来宾操作系统上手动设置网络设置。

3. 在来宾虚拟机上启用仅主机网络

现在我们的主机 (Linux) 上有了一个新的网络接口,我们可以返回来宾虚拟机,再次处于停止状态,并添加一个新的网络适配器,这次指向我们新创建的仅主机网络。

从 virtualbox 管理器中,选择您的来宾计算机,再次单击“设置”,转到“网络”并切换到适配器 2(或 3 或除我们之前配置的第一个适配器以外的任何适配器):

在此输入图像描述

4. 启动您的来宾虚拟机

现在我们可以启动 Windows 10 来宾虚拟机并验证是否已配置两个网络适配器,方法是转到Network & Internet settings

在此输入图像描述

在我的例子中,NAT 网络(适配器 1)显示为Ethernet(屏幕截图中的第一个网络),仅主机网络(适配器 3)显示为Ethernet 4。不要介意编号,只需确保您记住哪个 Windows 网络对应于我们从 virtualbox 控制台设置的哪个网络适配器即可。

5. 从 Windows 连接到您公司的 VPN

此步骤完全根据您的需求定制。只需下载 IT 管理员提供的任何客户端、证书、凭据等,然后将 Windows 计算机连接到 VPN。

成功连接到 VPN 后,您将在 Windows 设置面板上获得新的网络连接。转至Network & Internet Settings,然后单击Network and Sharing Center。你会看到这样的东西:

在此输入图像描述

就我而言,我有两个适配器,Ethernet并且Ethernet 4. 现在我连接到我的 VPN,我还获得了Ethernet 3. 您始终可以单击网络,然后Details从 IP 配置中查看哪个连接是哪个。

6. 与仅主机网络共享您的 VPN 连接

仍然在我们的 Windows 来宾虚拟机上,我们现在需要Ethernet 3与仅主机适配器(在我的例子中)共享 VPN 连接(Ethernet 4在我的例子中)。为此,单击Ethernet 3连接Network and Sharing Center(参见上一步),转到Properties然后单击Sharing选项卡:

在此输入图像描述

单击Allow other network users to connect...,然后选择您的仅主机连接。就我而言,那就是Ethernet 4. 一旦执行此操作,您就会收到以下警告:

在此输入图像描述

这实际上表明我们的Ethernet 4IP 设置将被搞乱,但没关系,我们稍后会修复此问题。点击Yes这里。

7.修复仅限主机的IP设置

正如上一步中提到的,Windows 将任意 IP 地址设置为我们的仅主机接口:192.168.137.1。然而,在我们的主机端(Linux),我们已经配置了192.168.56.xxx网络。如果我们保留这些设置,Linux 和 Windows 将无法通信。

让我们Ethernet 4从 开始Internet & Network Center,单击Properties,然后Internet Protocol Version 4 (TCP/IPv4),然后Properties

在此输入图像描述

192.168.137.1在那里看到这个IP了吗?将其更改为192.168.56.2.

8. 尝试从 Linux 主机 ping 通您的 Windows 客户机

让我们回到 Linux 主机,看看两台机器之间的网络是否设置正确。打开终端并输入ping 192.168.56.2。我们应该得到这样的结果:

$ ping 192.168.56.2
PING 192.168.56.2 (192.168.56.2) 56(84) bytes of data.
64 bytes from 192.168.56.2: icmp_seq=1 ttl=128 time=0.282 ms
64 bytes from 192.168.56.2: icmp_seq=2 ttl=128 time=0.181 ms
64 bytes from 192.168.56.2: icmp_seq=3 ttl=128 time=0.506 ms
64 bytes from 192.168.56.2: icmp_seq=4 ttl=128 time=0.262 ms
^C
--- 192.168.56.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3067ms
rtt min/avg/max/mdev = 0.181/0.307/0.506/0.120 ms

Run Code Online (Sandbox Code Playgroud)

如果您没有收到 ping 响应,则需要重复前面的一些步骤。

9. 尝试从 Linux 机器上 ping VPN 机器

现在选择一个只能从您的 VPN 访问的 IP,然后尝试对其进行 ping 操作。通常,您的 VPN 名称服务器的 IP 会响应 ping。

首先尝试从 Windows 机器上 ping 这个 IP。假设受保护的 IP 是10.0.0.1

C:\Users\XXX>ping 10.0.0.1

Pinging 10.0.0.1 with 32 bytes of data:
Reply from 10.0.0.1: bytes=32 time=76ms TTL=57
Reply from 10.0.0.1: bytes=32 time=76ms TTL=57

Ping statistics for 10.0.0.1:
    Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 76ms, Maximum = 76ms, Average = 76ms
Control-C
^C
Run Code Online (Sandbox Code Playgroud)

现在我们已经验证了 VPN 连接已在 Windows 上启动并运行,并且10.0.0.1可以 ping 通,让我们回到 Linux。

您需要做的第一件事是添加一条路由,以便10.0.0.1通过我们的仅主机网络,而不是您的标准以太网/wifi 适配器:

ip route add 10.0.0.1/32 via 192.168.56.2
Run Code Online (Sandbox Code Playgroud)

这里有几点需要注意:

  1. 我们192.168.56.2via. 不是Linux IP192.168.56.1
  2. 在此特定示例中,网络掩码为32。您稍后添加的其他路由不一定具有相同的网络掩码。

现在您已经添加了路由,您可以尝试从 Linux ping 受 VPN 保护的计算机:

ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=56 time=78.2 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=56 time=79.3 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=56 time=77.1 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=56 time=77.0 ms
^C
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 76.985/77.896/79.320/0.937 ms

Run Code Online (Sandbox Code Playgroud)

如果您看到与上述类似的 ping 响应,则可以准备庆祝活动。但首先请确保您已经配置了一些最终的东西。

10. 在 Linux 主机上设置 VPN 的 DNS 服务器

事实上,您可以连接到 VPN,这是个好消息,但这并不意味着一切都能正常运行。您很快就会尝试在 Linux 浏览器上打开 VPN 站点,并意识到主机名无法解析为 IP。例如,如果您尝试点击someservice.internal.mycompany.com,您将收到 DNS 解析错误。

为了解决这个问题,您需要在 Windows 框中连接 VPN,打开选项卡Details并复制您在其中看到的 DNS 服务器。然后您必须转到 Linux 机器并添加这两台服务器。一种方法是为nameserver您的 中的每个 dns 服务器添加一个条目/etc/resolv.conf,但也可以使用其他方法。

11. 在 Linux 主机上设置 VPN 路由

部署 DNS 服务器后,您可以将内部 VPN 域名解析为 IP。剩下的最后一件事是告诉你的 Linux 机器,为了到达这些 IP,它需要通过网关192.168.56.2,就像我们之前测试时所做的那样。

您可以通过键入 来打印 Windows 上所有 VPN 路由的列表route PRINT

然后,您可以使用该信息将相同的路由(或您需要的任何子集)添加到您的 Linux 机器中。

12. Windows 配置有时可能需要重新启动

由于某种原因,我从未弄清楚,如果我重新启动 Windows 客户机并尝试重新连接到 VPN,Linux 将无法访问它。我发现Windows的连接共享设置失效了。我使用的解决方法是:

  1. 从 Windows 连接到 VPN
  2. 取消共享 VPN 连接
  3. 重新共享连接

请随意提出在 Windows 计算机上保留共享配置的方法。



k01*_*mb0 5

在虚拟机上

  • 在以太网 1 上启用网络共享
  • 添加仅主机网络(以太网 3)
  • 为其分配(以太网 3)一个静态 IP

在主机上

  • 通过以太网 3 静态 IP 添加到您公司网络的路由

  • 路由 -p 添加 xxx.xxx.xxx.0 掩码 255.255.255.0 192.168.yyy.yyy 。其中 xxx - 是您的办公室网络 IP。yyy - 是您的本地虚拟机 IP (Ethernet3) (2认同)