1. 程式人生 > 其它 >Linux 下 dummy 網路介面的作用

Linux 下 dummy 網路介面的作用

dummy 網絡卡的作用

dummy網絡卡 (dummy network interface)用於在斷網的環境下,假裝網路可以通,仍然可以通過類似 192.168.1.1 這樣的IP 訪問服務。因為斷網環境下只有本地環回地址127.0.0.1能被核心解析,因此如果想要解析 192.168.1.1 這種IP,就要將其設定為 dummy型別。

建立 dummy 網絡卡

比如我們這裡為 169.254.20.10 和 10.96.0.10 建立dummy 型別的網絡卡 (這裡對 IP 沒有要求,可以不是私有 IP),使用如下命令:

$ sudo ip link add nodelocaldns type dummy
$ sudo ip addr add 169.254.20.10 dev nodelocaldns
$ sudo ip addr add 10.96.0.10 dev nodelocaldns

結果如下圖所示:

建立網絡卡後,就可以本地 ping 通了。

$ ping 169.254.20.10
PING 215.254.2.10 (215.254.2.10) 56(84) bytes of data.
64 bytes from 215.254.2.10: icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from 215.254.2.10: icmp_seq=2 ttl=64 time=0.058 ms

$ ping 10.96.0.10
PING 10.96.0.10 (10.96.0.10) 56(84) bytes of data.
64 bytes from 10.96.0.10: icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from 10.96.0.10: icmp_seq=2 ttl=64 time=0.050 ms

刪除 dummy 網絡卡

$ sudo ip link delete nodelocaldns

dummy 網絡卡的實際應用

dummy 介面的工作方式和 loopback 介面類似,但是你可以建立任意多的 dummy 介面。它提供路由資料包的功能,但實際上又不進行轉發。dummy 介面主要有兩個用途:

  • 用於主機內的程式通訊
  • 由於 dummy 介面總是 up(除非顯式將管理狀態設定為 down),在擁有多個物理介面的網路上,可以將 service 地址設定為 loopback 介面或 dummy 介面的地址,這樣 service 地址不會因為物理介面的狀態而受影響。

例如,考慮膝上型電腦vlite,它目前一直與任何網路斷開連線。vlite上的應用程式現在可能想要向同一主機上的另一個應用程式傳送一些資料。在/etc/hosts中查詢vlite會得到一個ip地址 191.72.1.65,因此應用程式嘗試傳送到這個地址。由於本地環回介面(127.0.0.1) 是當前機器上唯一活動的介面,核心不知道 191.72.1.65 這個地址實際上就是指 vlite 它自己! 因此,核心會丟棄這個資料包,並嚮應用程式返回一個錯誤。這就是 dummy 網絡卡可以介入的地方。它通過簡單地充當另一個環回介面來解決這個困境。在vlite的情況下,只需給它一個地址191.72.1.65,並新增一個指向它的主機路由。然後,191.72.1.65的每個資料報將在本地傳遞。

參考文章

dummy網絡卡 - 人艱不拆_zmc - 部落格園 (cnblogs.com)
The Dummy Interface (tldp.org)