背景

刚刚公司处理废品时以20块收购了一台电脑,I7三代CPU,算是一个老家伙了,于是拿着台主机来搭建甜糖CDN服务来赚取电费来着,由于X86主机系统甜糖不能直接安装,所以我就想到在虚拟机中部署,刚好电脑已安装好windows10系统,所以虚拟机系统就用了Hyper-V,安装好虚拟机后还需要用到docker服务,在网上找了很教程后,终于找到一个称心如意的教程了,可是搭建了很多回,最终跑的docker服务还是不能ping通外网(Hyper-V环境下),然后我又尝试在我的另外一台电脑上的VMware虚拟机上尝试搭建这个docker甜糖服务,没想到居然成功了。

对比了两种方式的搭建环境,只是用了不同的虚拟机环境,而网络用的也是一样的,连使用的命令都一模一样的。在网上搜索的大量的信息后,我得到了网卡的混杂模式这个概念(下面会说),原来Hyper-V混杂模式默认关闭的,如果不开启,而虚拟机里的系统的虚拟机或者docker服务是无法获取IP地址的。

百科:混杂模式

混杂模式(英语:promiscuous mode)是电脑网络中的术语。是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。

一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。网卡的混杂模式一般在网络管理员分析网络数据作为网络故障诊断手段时用到,同时这个模式也被网络黑客利用来作为网络数据窃听的入口。在Linux操作系统中设置网卡混杂模式时需要管理员权限。在Windows操作系统和Linux操作系统中都有使用混杂模式的抓包工具,比如著名的开源软件Wireshark

Hyper-V 中“混杂模式”的概念是 MAC Spoofing(MAC 地址欺骗)。在正常的 L2 网络中,一个网卡设备只会接收目标 MAC 地址是自己的数据包,混杂模式允许监听整个网络的数据包。基于这个模式,可以很好地实现虚拟网卡网络桥(Virtual Adapter Bridging)。混杂模式在 VMWare / VirtualBox / Hyper-V 中默认关闭(打开会是网络不安全),但是在特定模式下需要手动打开。

Hyper-V开启混杂模式命令

Get-VM -Name 虚拟机名称 | Get-VMNetworkAdapter | Where-Object { $_.MacAddress -eq "无连接符的MAC地址" } | Set-VMNetworkAdapter -MacAddressSpoofing On

下面这个是例子:

Get-VM -Name ttnode | Get-VMNetworkAdapter | Where-Object { $_.MacAddress -eq "00155D08DC02" } | Set-VMNetworkAdapter -MacAddressSpoofing On

ttnode:Hyper-V中的虚拟机名称

00155D08DC02:虚拟机ttnode网卡的无连接符的MAC地址

最后修改:2021 年 04 月 25 日
如果觉得我的文章对你有用,请随意赞赏