Wifi 介面可以工作,但顯示乙太網路連結類型

Wifi 介面可以工作,但顯示乙太網路連結類型

我正在運行 Archlinux 並使用 netctl 設定了一個可用的 Wifi 介面:

Description='Automatically generated profile by wifi-menu'
Interface=wlp3s0
Connection=wireless
Security=wpa
ESSID=ZyXEL3C58C2
IP=dhcp
Key=XXXXXXXXXXXX

但是,當我運行時ip link,連結類型顯示為 link/ether:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether f0:de:f1:d4:7e:89 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 10:0b:a9:c0:3b:80 brd ff:ff:ff:ff:ff:ff

這通常不是問題,但我正在嘗試編寫對不同連結類型敏感的網路軟體,並且系統返回link/ether而不是預期的link/iee802.11.

為什麼會發生這種情況?

電腦是聯想Thinkpad X220,使用iwlwifi和iwldvm模組進行無線連網。

答案1

這很正常。預設情況下,Wi-Fi旨在提供乙太網路相容(當然,802.3 相容)MAC 層。來自 IEEE 802.11-2016(透過 IEEE GET 免費):

4.2.5 與其他 IEEE 802® 層的交互

IEEE Std 802.11 需要在更高層[邏輯連結控制 (LLC)] 中顯示為通用 IEEE 802 LAN。

因此,高層協定將 Wi-Fi 視為乙太網路並且作業系統透明地將 L2 標頭重寫為資料幀是正常的。這甚至允許 AP(例如您的家用路由器)無需額外工作即可透明地將 Wi-Fi 橋接到乙太網路。

為了存取 Wi-Fi 特定功能(例如,透過 wpa_supplicant 進行 WPA 驗證),Linux 提供了 Netlink API (nl80211) 以及過時的 WEXT ioctl。請參閱iwwpa_supplicant、 和的原始程式碼iwd以取得範例 - 或者事實上,請考慮是否可以使用 wpa_supplicant 自己的 API 執行您想要的操作。


發送和接收真實的802.11幀,為介面啟用監控模式:

iw phy phy0 interface add mon0 type monitor
iw dev mon0 set monitor control otherbss
iw dev mon0 set channel 11
ip link set mon0 up

結果:

8: mon0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ieee802.11/radiotap 48:5d:60:e8:65:8f brd ff:ff:ff:ff:ff:ff

aircrack-ng 文檔一種可能的資料包注入工具。

注意不是全部WLAN 適配器通常支援封包注入,甚至監控模式。 (使用諸如 ath9k 之類的“SoftMAC”設備會比“FullMAC”設備有更好的運氣,因為它們處理韌體中的所有內容。我仍然沒有弄清楚如何讓我的 iwlwifi 顯示信標幀。)

相關內容