使用 iproute2“ip link”命令和欺騙的 MAC 位址建立虛擬網路介面

使用 iproute2“ip link”命令和欺騙的 MAC 位址建立虛擬網路介面

如何建立類似以下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@veth1以這種方式編號,因為veth0存在。

答案1

我想設定 MAC 位址來測試 DHCP 伺服器的配置

有(至少?)兩種方法可以實現這一目標

最簡單直接的,但風險很高的方式,就是修改的實體介面。然而這樣做你必須把介面放下所以這不是最安全的方法,而且肯定是遠端操作的風險很高!如果您可以實際存取主機或類似的設備,那麼它可以是一個選項。

更安全的方法是定義一個使用正確的 mac 位址連結到您的實體介面。您始終可以使用與變更實體介面 mac 位址類似的命令來變更此 mac 位址。例如,這可以方便地測試多個 IP/MAC 對,而無需建立/刪除許多介面。

我說「更安全」是因為根據網路上的安全措施,如果您的網路禁止在實體連結上使用不同的 mac 位址,您也有可能因 macvlan 連結而失去連線。在某些情況下,您的主機連接到的網路設備可能會認為您正在調整安全性並關閉連結。

對於以下命令,您需要Linux下的utils。

在遠端主機上使用以下命令之前,請閱讀上面的文字!

要添加 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 位址後,不要忘記將介面設定為 up。介面名為vif0

ip link set dev vif0 up

請注意,這些命令的某些部分是選項,可以按不同的順序放置,其他部分是語法的一部分,需要放置在正確的位置。此外,在不損害含義的情況下,可以省略某些部分1。以上面的命令為例,dev可以省略。

創建的 macvlan 預設類型是 VEPA,它阻止實體介面和虛擬介面之間的直接通訊。它應該適合這個用例。其他模式可用,請參見RedHat《Linux 虛擬網路介面簡介》中有關 macvlan 的章節

希望它會有所幫助... ...其他人路過這裡。


1:如果您有(非常)糟糕的主意來命名接口,dev則不能省略它。

答案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%20介面

相關內容