Интерфейс Wi-Fi работает, но показывает тип соединения Ethernet

Интерфейс Wi-Fi работает, но показывает тип соединения Ethernet

Я использую Archlinux и у меня настроен рабочий интерфейс Wi-Fi с помощью netctl:

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.

Почему это может происходить?

Компьютер — Lenovo Thinkpad X220, использующий модули iwlwifi и iwldvm для беспроводного сетевого взаимодействия.

решение1

Это нормально. По умолчанию Wi-Fiявляетсяпредназначен для обеспечения уровня MAC, совместимого с Ethernet (ну, совместимого с 802.3). Из IEEE 802.11-2016 (бесплатно через IEEE GET):

4.2.5 Взаимодействие с другими уровнями IEEE 802®

Стандарт IEEE Std 802.11 необходим для того, чтобы на более высоких уровнях [управление логическим каналом (LLC)] он отображался как универсальная локальная сеть IEEE 802.

Поэтому нормально, что протоколы более высокого уровня обрабатывают Wi-Fi как Ethernet, а ОС прозрачно переписывает заголовок L2 в кадр данных. Это даже позволяет точкам доступа (например, вашему домашнему маршрутизатору) прозрачно соединять Wi-Fi с Ethernet без дополнительных усилий.

Для доступа к функциям, специфичным для Wi-Fi (например, аутентификация WPA с помощью wpa_supplicant), Linux предоставляет API Netlink (nl80211), а также устаревшие ioctl WEXT. Смотрите исходный код iw, wpa_supplicant, и iwdдля примеров – или, на самом деле, подумайте, можете ли вы сделать то, что хотите, используя собственный API wpa_supplicant.


Для отправки и получениянастоящийКадры 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 поддерживают инъекцию пакетов или даже режим мониторинга в целом. (Вам повезет больше с устройствами «SoftMAC», такими как ath9k, чем с «FullMAC», поскольку они обрабатывают все в прошивке. Я до сих пор не понял, как заставить мой iwlwifi отображать кадры маяка.)

Связанный контент