Virtualbox 仅主机网络路由被 Pulse Secure VPN 客户端抢占

Virtualbox 仅主机网络路由被 Pulse Secure VPN 客户端抢占

当 VPN 开启时,Virtualbox 无法接受来自主机操作系统的传入连接。因此,当 Pulse Secure VPN 保持连接时,我无法使用 http/ssh/rdp 客户端从主机操作系统访问客户操作系统。

主机操作系统:OSX High Sierra。我的理解是 VPN 客户端不应该抢占私有 IPv4 地址空间中的路由。有什么解决方法可以解决这个问题吗?

答案1

我最终创建了一个脚本来启动我的虚拟机。限制在于,您必须在 VPN 关闭时启动虚拟机,因为 Pulse Secure 会阻止创建所需的路由。

为了方便起见,我将这个脚本设为停靠命令 -

#!/bin/bash

# visudo as root, add your_username ALL = (ALL) NOPASSWD:ALL

# vboxmanage list vms

guestip="192.168.86.3"
guestmac="8:0:27:22:4c:27"
vmname="WIN_ENT_10_64B"

# if the VM is running, leave it alone in peace:
vboxmanage showvminfo $vmname |grep "running (since"
[ "$?" -eq "0" ] && exit

# hide terminal window:
osascript -e 'tell application "Finder" to set visible of process "Terminal" to false'

# shutdown vbox network:
while [ -n "`netstat -rnf inet |grep $guestip`" ]; do
  sudo ifconfig vboxnet0 down
  sleep 1
done

# start VM and wait:
vboxmanage startvm $vmname --type separate
while [ -z "`netstat -rnf inet |grep $guestip`" ]; do
  sleep 1
done

# delete original route:
sudo route -n delete ${guestip%.*}.0

# create a network singularity in routing table:
sudo route -n add $guestip/32 -interface vboxnet0

# create the host on the network:
sudo arp -s $guestip $guestmac

osascript -e 'tell application "Terminal" to quit' &

该脚本假定您可以在没有密码的情况下使用 sudo。

guestip在客户操作系统中手动配置“仅主机接口”(通常为 #2)。在 VirtualBox 中创建“仅主机网络适配器”时,默认情况下会启用 DHCP。出于一致性原因,我禁用了 DHCP 并在客户操作系统中手动分配静态 IP(此处为 192.168.86.3,网络掩码为 255.255.255.0 或 CIDR /24,DNS 留空)。

guestmac是客户操作系统中 IP 为 192.168.86.3 的网络接口的 MAC 地址。不要将其与 VirtualBox 配置中的“仅主机网络适配器”的 MAC 地址混淆。在我们的例子中,后者配置为 192.168.86.1/24(下面的 MAC a:0:27:0:0:0)。

脚本完成后(终端应用程序从 Dock 中消失),预期输出netstat -rnf inet应包含类似条目:

192.168.86.3       8:0:27:22:4c:27    UHLS            3     4884 vboxnet
192.168.86.3/32    a:0:27:0:0:0       ULSc            0        0 vboxnet

这些条目将在 VPN 连接/断开连接后继续存在,并允许您无论 VPN 状态如何都本地访问您的 VM。

相关内容