我在公司用VMware跑了个Linux虚拟机,虚拟用来测试抓包工具。机上结果IT部门第二天就来找我谈话,网行问我是不会被监不是在扫描内网。我一脸懵——虚拟机里的虚拟流量,他们怎么知道的机上?后来才搞清楚,虚拟机的网行网卡默认走的是NAT模式,所有数据包都要经过宿主机的不会被监那块物理网卡出去。对路由器、虚拟对防火墙、机上对公司的网行上网行为管理系统来说,虚拟机根本不存在的不会被监,它们只看到一台电脑在跑流量。虚拟
所以答案很简单:虚拟机上网行为,机上监控不监控,网行取决于流量从哪条路走。
NAT模式是最常见的默认设置。虚拟机藏在宿主机后面,对外只有一个IP,所有虚拟机的请求都伪装成宿主机的请求。这时候监控系统看到的是一台机器在访问各种网站,它分不清是Windows里的Chrome在逛淘宝,还是Linux里的curl在调API。但注意,分不清不代表看不到——流量内容、访问的域名、传输的数据量,全都在记录里。你要是用虚拟机去下载什么敏感文件,或者访问什么违规网站,监控系统照样能抓到,只是把账算在宿主机头上。
桥接模式就不一样了。虚拟机直接跟物理机平级,有自己的IP,在局域网里就是一个独立的设备。这时候监控系统看得清清楚楚:哪台设备叫什么名字、MAC地址多少、访问了哪些资源。公司要是启用了802.1X认证,虚拟机没装客户端,可能直接断网。就算没断网,流量审计系统也能把虚拟机的行为单独拎出来,跟宿主机完全分开记账。
还有一种情况——你用的是VirtualBox的“仅主机模式”或者VMware的“自定义网络”,虚拟机只能跟宿主机通信,压根出不了门。这时候监控系统反而看不见了,因为流量根本没离开这台物理机。但别高兴太早,宿主机自己装了安全软件的话,比如EDR,它可能会hook住虚拟机的网卡驱动,照样能读流量。我试过,某些企业版杀毒软件确实能抓到VMware虚拟网卡上的数据包,因为虚拟交换机是在内核里实现的。
再说个更隐蔽的。如果你在虚拟机里用VPN,流量先到宿主机,再走VPN隧道加密出去。监控系统看到的是宿主机连了一个VPN服务器,至于隧道里面跑的是什么,它不知道。但IT部门不傻,看到你频繁连VPN,本身就可能触发告警。更麻烦的是,有些公司会在宿主机上装DLP(数据防泄漏)软件,这种软件不光看网络,还看进程、看剪贴板、看文件操作。虚拟机里的操作在宿主机眼里就是几个进程在跑,DLP可能直接拦下你往U盘里拷数据的行为。
说到底,虚拟机不是隐身斗篷。它能隔离系统环境,但隔离不了网络流量。监控的粒度取决于你用的是哪种网络模式、公司部署了什么级别的安全设备、以及IT管理员有没有闲心去深挖。个人在家用虚拟机,运营商能看到你所有的明文流量,但运营商一般不关心你具体在虚拟机里干嘛。在公司用虚拟机,那就默认每一字节都被记录,只是记录得粗还是细的问题。
最后说个我自己的土办法——想知道虚拟机流量有没有被单独监控,很简单,在虚拟机里ping一下网关,然后在宿主机上抓包。如果能看到ICMP请求,说明流量确实经过宿主机网卡;如果抓不到,那可能是走了别的通道。但这个方法只对技术宅有用,普通人记住一句话就行:只要虚拟机要上网,就必然有流量经过某个物理设备,那个设备的主人想不想看你,全看他的心情和配置。