创建macvlan虚拟网卡并修改MAC地址

· 880 words · 2 minute read

从物理网卡eth0创建macvlan0

sudo ip link add link eth0 name macvlan0 type macvlan mode bridge

设置一个固定的mac地址

sudo ip link set dev macvlan0 address 12:34:56:78:3B:2D

分配ip地址

sudo dhclient macvlan0

激活网卡

sudo ip link set dev macvlan0 up

查看macvlan0是否已经获得ip地址,是否处于激活状态

 ip link show macvlan0

可以随机产生mac地址

 macchanger -r macvlan0 

注意:如果使用macchanger 更换了mac地址以后,必须使用diclient重新分配ip

以上这些操作重启电脑就没了, 如果需要长久使用macvlan可以写成配置文件,

创建一个叫做 macvlan0的文件,输入如下代码:

auto macvlan0
iface macvlan0 inet dhcp
    pre-up ip link add link eth0 macvlan0 type macvlan mode bridge
    post-down ip link delete macvlan0
hwaddress ether 12:34:56:78:3B:2D

然后将macvlan0复制到/etc/network/interfaces.d/下边

cp macvlan0 /etc/network/interfaces.d/

重启网络,

systemctl restart networking

如果重启完网络以后物理网卡eth0也没有ip的话使用dhclient获取一下,或者重启电脑也行

sudo dhclient -r eth0
sudo dhclient -r macvlan0

macvlan和macvtap的区别是什么? 🔗

macvlan和macvtap都是Linux内核驱动程序,可用于创建与底层物理接口不同的MAC地址的虚拟网络接口。然而,它们有不同的行为和用例。

macvlan创建一个新的虚拟网络接口,其MAC地址与物理接口不同,且唯一。这个新接口可以在“桥接”模式或“私有”模式下运行。在“桥接”模式下,虚拟接口可以与底层接口在同一物理网段上的其他设备通信。在“私有”模式下,虚拟接口只能与主机系统通信。

Macvtap还创建了一个新的虚拟网络接口,但它是为虚拟机设计的。macvtap可以在“直通”或“VEPA”模式下运行。在“直通”模式下,虚拟机可以绕过主机操作系统的网络堆栈,直接访问底层物理接口。在“VEPA”模式中,虚拟机的流量在被转发到物理接口之前通过主机操作系统的网络堆栈发送。

对于PPPoE拨号连接,macvlan和macvtap都可以,但一般来说macvlan是更好的选择。这是因为PPPoE通常用于将单个设备连接到互联网,因此一个只能与主机系统通信的“专用”macvlan接口就足够了。此外,macvlan是比macvtap更简单、使用更广泛的驱动程序,更容易被PPPoE客户端和服务器支持。