我经历了 k010mb0 的步骤,反复试验,最后我让我的仅限 Windows 的 VPN 可以在 virtualbox 来宾 Windows 10 上工作,并且还可以从我的 Linux (Ubuntu) 主机访问它。
我只会尝试进一步详细说明。我假设你已经在你的 Linux 主机上安装了 virtualbox,你已经创建了一个来宾虚拟机并且你已经在上面安装了 Windows 10。
1.为您的 virtualbox 来宾 Windows 设置 NAT 网络适配器
这是必需的,这样您的 Windows 来宾虚拟机才能访问 Internet。为了做到这一点,你打开 virtualbox,你的虚拟机处于 stoped 状态,点击你的 Windows 虚拟机,点击设置按钮,然后从左侧列表导航到“网络” .然后你需要像这样配置:
您在此处看到选项变灰的原因是因为我当前正在运行我的 virtualbox,但是,如前所述,您应该在 VM 停止的情况下执行此操作。
2.在主机上设置仅主机网络
此步骤是特定于主机的,而不是特定于客人的。这就是为什么您从 virtualbox 的全局设置菜单而不是访客的设置创建此网络的原因(稍后将配置访客)。
转到您的虚拟机管理器窗口,单击File -> Host Network Manager... Ctrl+H。您可能会看到一个包含空网络列表和一些按钮的屏幕,其中有一个Create 按钮。点击它,您将获得您的第一个网络:
请注意,除了您可以保留原样的 IP 设置外,还有一个选项卡用于在这个新网络上配置 DHCP。此 DHCP 用于在来宾虚拟机上分配新网络子网的 IP。您可以保留默认设置,因为我们将在客户操作系统上手动设置网络设置。
3.在您的来宾虚拟机上启用仅主机网络
现在我们的主机 (Linux) 上有一个新的网络接口,我们可以回到来宾虚拟机,再次处于 stopped 状态,并添加一个新的网络适配器,这次指向我们新创建的仅主机网络。
从 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 4)共享我们的 VPN 连接(在我的情况下为Ethernet 3)。为此,请单击来自Network and Sharing Center 的Ethernet 3 连接(参见上一步),转到Properties,然后点击Sharing 标签:
单击Allow other network users to connect...,然后选择您的仅主机连接。就我而言,那是Ethernet 4。执行此操作后,您将收到以下警告:
这实际上表明我们的Ethernet 4 IP 设置将被弄乱,但没关系,我们会在之后解决这个问题。点击此处Yes。
7.修复仅主机 IP 设置
如上一步所述,Windows 为我们的仅主机接口设置了一个任意 IP 地址:192.168.137.1。然而,在我们的主机端(Linux),我们配置了一个192.168.56.xxx 网络。如果我们保留这些设置,Linux 和 Windows 将无法通信。
让我们从Internet & Network Center 转到Ethernet 4,点击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
如果您没有收到 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
现在我们已经验证了我们的 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
这里有几点需要注意:
- 我们在
via 中使用了Windows IP 192.168.56.2。 不是 Linux IP 192.168.56.1
- 在此特定示例中,网络掩码为
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
如果您看到与上述类似的 ping 响应,则可以准备庆祝活动。但首先要确保你已经配置了一些最终的东西。
10.在 Linux 主机上设置 VPN 的 DNS 服务器
您可以连接到您的 VPN 是个好消息,但这并不能让一切都正常运行。您很快就会尝试在您的 Linux 浏览器上打开一个 VPN 站点,并意识到主机名无法解析为 IP。例如,如果您尝试点击 someservice.internal.mycompany.com,则会收到 DNS 解析错误。
为了解决这个问题,您需要在 Windows 框中进行 VPN 连接,打开 Details 选项卡并复制您在此处看到的 DNS 服务器。然后你必须去你的 Linux 机器并添加这两个服务器。一种方法是在 /etc/resolv.conf 中为每个 dns 服务器添加一个 nameserver 条目,但也可以使用其他方法。
11.在 Linux 主机上设置 VPN 的路由
拥有 DNS 服务器可让您将内部 VPN 域名解析为 IP。剩下的最后一件事是告诉您的 Linux 机器,为了访问这些 IP,它需要通过 192.168.56.2 网关,就像我们之前为测试所做的那样。
您可以通过键入route PRINT 在 Windows 上打印所有 VPN 路由的列表。
然后您可以使用该信息将相同的路由(或您需要的任何子集)添加到您的 Linux 机器。