使用带有伪造 MAC 地址的 iproute2“ip link”命令创建虚拟网络接口

使用带有伪造 MAC 地址的 iproute2“ip link”命令创建虚拟网络接口

如何创建类似于以下ifconfig命令的虚拟接口?

$ sudo ifconfig eth1 hw ether 00:01:02:aa:bb:cc  
SIOCSIFHWADDR: No such device  

这不管用。我想设置 MAC 地址来测试我的 DHCP 服务器的配置。

我如何iproute2使用 ip link 命令对该套件执行此操作?

$ sudo ip link add type veth  

这有效,但它会随机分配一个 MAC 地址。这仍然有用,但我想dhcpd用一些特定的 MAC 地址测试我的服务器,以查看它如何处理我设置的类别。

我当前的设置1

$ ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 60:eb:69:1b:a0:88 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.93/24 brd 172.16.0.255 scope global eth0
    inet6 fe80::62eb:69ff:fe1b:a088/64 scope link 
       valid_lft forever preferred_lft forever
7: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
8: veth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 3a:50:38:2e:24:c4 brd ff:ff:ff:ff:ff:ff

[1]:请注意,此设置不是执行上述命令的结果。特别是,由于存在,因此ip link add type veth会导致创建一对以这种方式编号的veth1@veth2/ 。veth2@veth1veth0

答案1

我想设置 MAC 地址来测试我的 DHCP 服务器的配置

有(至少?)两种方法可以实现此目的

最简单、最直接的,但风险很高,就是修改物理接口。但是要这样做你必须放下界面所以这不是最安全的方法,而且肯定远程操作风险极高!如果您可以物理访问主机或类似设备,那么这可能是一个选择。

更安全的方法是定义一个使用正确的 mac 地址链接物理接口。您始终可以使用与更改物理接口 mac 地址类似的命令来更改此 mac 地址。这很方便,例如,可以测试多个 IP/MAC 对,而无需创建/删除许多接口。

我说“更安全”是因为根据您网络上的安全措施,如果您的网络禁止在物理链路上使用不同的 mac 地址,您也有可能通过 macvlan 链路丢失连接。在某些情况下,您的主机所连接的网络设备可能会认为您正在破坏安全性并关闭该链路。

对于以下命令,您需要Linux 下的实用程序。

在远程主机上使用以下命令之前,请阅读以上文字!

要添加 macvlan 链接,您可以使用:

ip link add link eth0 type macvlan

接口将以第一个数字来命名,macvlanX例如X不存在该名称的接口。

vif0您可以在创建时使用类似以下名称命名接口(例如

ip link add name vif0 link eth0 type macvlan

有一个名为的接口vif0

一旦获得了接口,就可以00:11:22:33:44:55使用以下命令更改其 mac 地址(例如):

ip link set address 00:11:22:33:44:55 dev macvlan0

可以使用相同的命令来更改其他接口的 mac 地址。您可以使用这个命令来更改物理链路的 mac 地址。

当然,您可以一次性添加 macvlan 链接并设置其地址:

ip link add name vif0 address 00:11:22:33:44:55 link eth0 type macvlan

配置完 mac 地址后,不要忘记将接口设置为开启状态。接口名称为vif0

ip link set dev vif0 up

请注意,这些命令的某些部分是选项,可以按不同的顺序放置,其他部分是语法的一部分,需要放在正确的位置。此外,某些部分可以省略,只要不影响含义1。例如,在上述命令中,dev可以省略。

创建的 macvlan 的默认类型是 VEPA,它阻止物理接口和虚拟接口之间的直接通信。它应该适合此用例。其他模式可用,请参阅本 RedHat《Linux 虚拟网络接口简介》中有关 macvlan 的章节

希望它会有所帮助......其他人也路过这里。


dev1:例如,如果您对命名接口有一个(非常)糟糕的想法,则不能省略它。

答案2

你有没有尝试过...

ip link add type veth addr 00:01:02:aa:bb:cc

或者

ip link set dev veth0 addr 00:01:02:aa:bb:cc

答案3

创建 VLAN 接口 ip link add name ${VLAN 接口名称} link ${父接口名称} type vlan id ${tag} 示例: ip link add name eth0.110 link eth0 type vlan id 110

http://baturin.org/docs/iproute2/#Create%20a%20VLAN%20interface

相关内容