Источники:
- https://wireless.wiki.kernel.org/en/users/documentation/iw
- https://wireless.wiki.kernel.org/en/users/documentation/iw/replace-iwconfig
iw — это новая утилита командной строки, основанная на nl80211, для беспроводных устройств. Она поддерживает все новые драйверы, которые были добавлены в ядро за последнее время. Старый инструмент iwconfing, который использует Wireless Extensions interface (интерфейс беспроводного расширения), является устаревшим и настоятельно рекомендуется переключиться на iw и nl80211.
Замена iwconfig на iw
Приведём несколько практических примеров iwconfig и их альтернативу с командой iw.
Получаем информацию о wlan0
iwconfig wlan0
заменяется на
iw dev wlan0 link
Подключение к открытой сети
iwconfig wlan0 essid foo
заменяется на
iw wlan0 connect foo
Если вы хотите установить канал:
iwconfig wlan0 essid foo freq 2432M -или- iwconfig wlan0 freq 2432M iwconfig wlan0 essid foo
теперь просто используйте
iw wlan0 connect foo 2432
Подключение к защищённой сети
Для шифрования WPA/WPA2 вы должны использовать wpa_supplicant.
Для защиты WEP protection вы можете использовать
iw wlan0 connect foo keys 0:abcde d:1:0011223344
вместо
iwconfig wlan0 key s:abcde iwconfig wlan0 key '[2]0011223344' iwconfig wlan0 key '[2]' iwconfig wlan0 essid foo
Обратите внимание, что
iwconfig
использует нумерацию ключей основанную на 1, а
iw
использует нумерацию ключей, основанную на 0, как стандарт 802.11.
Для перевода строки в шестнадцатеричные однобайтовые единицы можно использовать команду od -t x1. Пример:
echo abcde | od -t x1 0000000 61 62 63 64 65 0a 0000006
Присоединение к IBSS (сеть ad-hoc)
iwconfig wlan0 mode ad-hoc iwconfig wlan0 essid foo-adhoc
в iw:
iw wlan0 set type ibss iw wlan0 ibss join foo-adhoc 2412
Отключение от IBSS (сеть ad-hoc)
iwconfig wlan0 essid off
должно бы работать, но не всегда работает должным образом.
в iw это всегда будет срабатывать:
iw wlan0 ibss leave
Примеры использования iw
В этой части мы рассмотрим самые ходовые примеры использования команды iw.
Справка по iw
Просто наберите
iw help
в вашей командной строке и будут напечатаны команды, которые ею поддерживаются.
Узнаём возможности устройства
Используйте следующую команду, чтобы узнать возможности всех устройств, сюда относятся частотные характеристики (2.4 и 5), и информация о 802.11n:
iw list
Сканирование
iw dev wlan0 scan
Прослушивание событий
Просто используйте
iw event
При отладке может быть полезным посмотреть фреймы auth/assoc/deauth/disassoc, для этого используйте
iw event -f
иногда также полезна информация о тайминге:
iw event -t
Получаем статус подключения
Чтобы определить, подключены ли вы к ТД или последнюю используемую величину TX, вы можете применить команду, показанную ниже.
Привет вывода, когда ассоциированы с устаревшей (не-802.11n) ТД:
iw dev wlan0 link Connected to 04:21:b0:e8:c8:8b (on wlan0) SSID: attwifi freq: 2437 RX: 2272 bytes (18 packets) TX: 232 bytes (3 packets) signal: -57 dBm tx bitrate: 36.0 MBit/s
Пример вывода, когда подключены к ТД по 802.11n:
iw dev wlan0 link Connected to 68:7f:74:3b:b0:01 (on wlan0) SSID: tesla-5g-bcm freq: 5745 RX: 30206 bytes (201 packets) TX: 4084 bytes (23 packets) signal: -31 dBm tx bitrate: 300.0 MBit/s MCS 15 40Mhz short GI
Пример вывода, когда не подключены к ТД:
iw dev wlan0 link Not connected.
Это может случиться, если вы не подключены к ТД. Для подключения к ТД вы можете использовать iw connect, если подключение:
- Без шифрования
- Использует WEP для шифрования. Если вам нужно подключиться к ТД с требуемым шифрованием WPA или WPA2, тогда вы доложны использовать wpa_supplicant.
Установление базового подключения
Вы можете использовать iw для подключения к ТД напрямую только и если только АП:
- Без шифрования
- Использует для шифрования WEP. Тем не менее, следует отметить, что если вы отключились от ТД, что может происходить довольно часто в загруженном окружении, вам нужно заново ввести команду. Если вы не хотите делать это, вы можете просто использовать wpa_supplicant, который будет автоматически пытаться подключить вас, когда вы отключились.
Если вы выбрали самостоятельную работу с рассоединениями, то вы можете использовать iw connect как показано ниже.
Для подключения к ТД, у которой отключено шифрование, где SSID это foo:
iw wlan0 connect foo
Допустим у вас две ТД с SSID foo, и вы знаете, что та, к которой вы хотите подключиться, на частоте 2432, тогда вы можете указать частоту для использования:
iw wlan0 connect foo 2432
Для подключения к ТД, которая использует WEP, вы можете использовать:
iw wlan0 connect foo keys 0:abcde d:1:0011223344
Получение статистики станции
Для получение информации о статистике станции, такой как количество байт tx/rx, последний битрейт TX (включая величину MCS), вы можете сделать:
$ iw dev wlan1 station dump Station 12:34:56:78:9a:bc (on wlan0) inactive time: 304 ms rx bytes: 18816 rx packets: 75 tx bytes: 5386 tx packets: 21 signal: -29 dBm tx bitrate: 54.0 MBit/s
Получение статистики станции в отношении пира
Если вы хотите получить статистику по конкретному пиру с которым ваша станция осуществляет связь, вы можете использовать следующее:
sudo iw dev wlan1 station get <peer-MAC-address>
В выше приведённой STA (станции) <peer-MAC-address> - это MAC вашей ТД.
Изменение скорости передачи
iw поддерживает изменение битрейта TX, как устаревшего (legacy) варианта, так и скорости HT MCS. Это делается применение маски к разрешённым битрейтам, также позволено очищать маски.
Изменение устаревших (legacy) tx bitrates
Вы можете установить для передачи использование только конкретных устаревших скоростей. К примеру:
iw wlan0 set bitrates legacy-2.4 12 18 24
Здесь как включить то, что некоторые называют «Чистый G», при котором отключена ассоциация по 802.11b:
iw wlan0 set bitrates legacy-2.4 6 12 24
Изменение скорости tx HT MCS
Поддержка установки настроек для передачи используя MCS скорости заключается в возможности указать частоту и скорость MCS. Обратите внимание, что будет ли на самом деле устройство прислушиваться просьбам зависит от драйвера устройства и сотрудничества с прошивкой. К примеру:
iw dev wlan0 set bitrates mcs-5 4 iw dev wlan0 set bitrates mcs-2.4 10
Для очистки всех скоростей tx возвращения в нормальное состояние:
iw dev wlan0 set bitrates mcs-2.4 iw dev wlan0 set bitrates mcs-5
Установка мощности TX
Вы можете установить txpower используя имя интерфейса или соответствующее phy.
iw dev <devname> set txpower <auto|fixed|limit> [] iw phy <phyname> set txpower <auto|fixed|limit> [ ]
Сбережение энергии
Для включения сохранения энергии по умолчанию вы можете использовать:
sudo iw dev wlan0 set power_save on
Для драйверов mac80211 это означает включение Dynamic Power Save.
Чтобы узнать текущие настройки сбережения энергии используйте:
iw dev wlan0 get power_save
Добавление интерфейса с iw
Поддерживается несколько режимов. Эти режимы:
- monitor
- managed [также station]
- wds
- mesh [также mp]
- ibss [также adhoc]
Описание этих режимов можно найти на странице документации режимов.
К примеру, добавляем интерфейс в режиме монитора:
iw phy phy0 interface add moni0 type monitor
где вы можете заменить
monitor
на какой-то другой режим и
moni0
на имя интерфейса, и нужно заменить
phy0
наe PHY имя для вашего железа (обычно phy0 будет корректным именем, если вы не подключали «по горячему» или не перезагружали какие-либо модули.) Если ваш udev настроен неправильно, новосозданный виртуальный интерфейс может быть им сразу переименован, используйте
ip link
для вывода списков всех интерфейсов. Для создания нового интерфейса в управляемом режиме вам следует использовать:
iw phy phy0 interface add wlan10 type managed
Обратите внимание, что интерфейс автоматически переводится в режим ТД при использовании hostapd.
Если вы хотите создать интерфейс в режиме монитора, а он создаётся в управляемом режиме, то сразу после создания выполните команду:
ip link set moni0 down iw moni0 set monitor control ip link set moni0 up
Проверить можно так:
iw dev
Изменение флагов монитора интерфейса
Вы можете настроить тип монитора интерфейса, который вы создаёте. Это очень полезно в целях отладки на конечных пользовательских системах:
iw dev wlan0 interface add fish0 type monitor flags none
Затем вы можете попросить пользователя использовать tcpdump для сессии:
tcpdump -i fish0 -s 65000 -p -U -w /tmp/fishing.dump
Возможные флаги для интерфейса в режиме наблюдения
Можно указать следующие флаги:
- none
- fcsfail
- plcpfail
- control
- otherbss
- cook
Удаление интерфейсов с iw
Используйте
iw dev moni0 del
Поддержка vif (множественных виртуальных интерфейсов)
О поддержке виртуальных vif смотрите отдельную страницу iw vif.
Обновление вашего регулирующего домена
Команда следующая:
iw reg set alpha2
Где “alpha2” - это код страны ISO/IEC 3166 alpha2.
Вы также теперь можете использовать wpa_supplicant для изменения вашего регулирующего домена, чтобы это сделать, просто добавьте, к примеру, запись “COUNTRY=US” в вашу конфигурацию.
Связанные статьи:
- Нерекомендуемые сетевые команды Linux и их замена (93.6%)
- Решение проблемы «bash: ifconfig: команда не найдена» (60.9%)
- Как запретить NetworkManager управлять определённым интерфейсом? (РЕШЕНО) (56.4%)
- Почему в Wi-Fi на 5 ГГц недоступны каналы между 64 и 100? (РЕШЕНО) (56.4%)
- Фильтры tcpdump и pcap. Фильтры захвата Wireshark (54.7%)
- Как установить драйвер для W-Fi для карт с чипсетом RTL8814AU (Alfa AWUS1900) (RANDOM - 1.7%)