Networking
WSL2 中的多個虛擬網路介面
在我的 WSL 實例中,
ip addr
輸出如下所示:ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 62:7d:94:c7:52:0b brd ff:ff:ff:ff:ff:ff 3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether aa:20:18:64:a4:89 brd ff:ff:ff:ff:ff:ff 4: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000 link/ipip 0.0.0.0 brd 0.0.0.0 5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000 link/sit 0.0.0.0 brd 0.0.0.0 6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:15:5d:f7:c6:4d brd ff:ff:ff:ff:ff:ff inet 172.25.42.162/20 brd 172.25.47.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::215:5dff:fef7:c64d/64 scope link valid_lft forever preferred_lft forever
這些都是什麼。我知道什麼
lo
和eth0
是什麼。但是其他人是什麼,我應該怎麼做呢?
我該怎麼辦?
借用複仇者聯盟的一句話:終局之戰—— “我們通過不處理來處理它。” 換句話說,不用擔心這些介面。它們是無害的,您可能不需要它們。下面更詳細。
這些都是什麼?
我無論如何都不是核心專家,但據我所知,其中大部分都是由 Linux 核心模組創建的非常標準的介面。我將在這裡猜測微軟選擇將它們編譯而不是從配置中刪除它們有兩個可能的原因:
- 兼容性——可能有一些應用程序假設它們存在,並且至少存在它們可以使 WSL 體驗更流暢。
- 開發人員使用——由於 WSL 是為 Linux 開發人員設計的,因此提供這些介面來測試某些應用程序可能很有用。
介面本身:
bond0
用於將多個介面綁定在一起以提高鏈路速度或故障轉移,這在 WSL 中都不太可能適用。也就是說,理論上可以使用 Hyper-V(如果您有 Windows Pro 或更高版本)創建一個額外的虛擬 NIC,然後可以綁定該 NIC。雖然我們大多數人不太可能遇到這種案例,但某些開發人員可能需要測試該功能。dummy0
根據此 Redhat doc,通常也用於測試目的。sit0
用於通過 IPv4 轉發 IPv6 數據包(有關詳細資訊,請參閱此答案)。同樣,我們大多數人都不會遇到的事情。您可以看到所有這三個模組都在 Microsoft WSL核心配置中啟用(sit、bond和dummy)。
tunl
: 我的系統上沒有 tunl 介面,所以我相信它是在 WSLinit
過程中創建的。init
負責(以及許多其他任務)啟動 WSL 網路介面,不幸的是它是一個黑匣子(據我所知,微軟尚未發布原始碼)。也許您的系統上有一個 VPN 導致該介面被init
.如果你真的想要,你能擺脫它們嗎?很可能,但這需要使用上面連結的原始碼建構您自己的 Linux 核心。就個人而言,我將採用“不處理它”的方法。儘管如此,如果我們願意,我們可以自定義和編譯自己的 WSL 核心這一事實,恕我直言,非常了不起。