Интерфейс Wifi работает, но показывает тип Ethernet Link

371
Josh Taylor

Я использую Archlinux и у меня есть работающая настройка интерфейса Wifi с помощью 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

1 ответ на вопрос

1
grawity

Это нормально. По умолчанию, Wi-Fi имеет в виду, чтобы обеспечить Ethernet-совместимые (хорошо, 802,3-совместимый) MAC слой. От 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 отображать кадры маяка.)

Похожие вопросы