当 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。