Подключение к wifi iw
В этой статье я расскажу, как можно настроить WiFi с помощью wpa_supplicant, без всяких Xorg/X11 утилит. Это необходимо для того, чтобы базовые службы ОС исправно работали с минимальным набором технических средств удаленного доступа. Программа будет исполняться как служба, настройки сделаны правкой конфиг файлов.
По-быстрому, установить соединение с открытой точкой доступа можно таким образом.
Если же надо всерьез и надолго, то прошу внутрь.
Общие сведения о wpa_supplicant
Что из себя представляет wpa_supplicant?
- Кросс-платформенная открытая реализация стандарта IEEE 802.11 для Linux, *BSD, Windows, Mac OS X и прочих систем.
- Полная поддержка WPA2, WPA и более старых протоколов безопасности беспроводной LAN сети.
- Приложение пользовательского пространства, выполняющее функции саппликанта и SME оператора, исполняющего MLME инструкции.
- WPA и полностью IEEE 802.11i/RSN/WPA2.
- WPA-PSK и WPA2-PSK (pre-shared key) ("WPA-Personal").
- WPA вместе с EAP (т.е., сервером аутентификации RADIUS) ("WPA-Enterprise") управление ключами CCMP, TKIP, WEP (104/128 и 40/64 бит).
- Кэширование RSN, PMKSA: предварительную аутентификацию.
Как wpa_supplicant устанавливает связь с точкой доступа?
- Cетевой интерфейс должен исправно функционировать с установленным драйвером, прежде чем wpa_supplicant запустится.
- Wpa_supplicant запрашивает драйвер ядра сканировать доступные Basic Service Set (BSS).
- Wpa_supplicant производит выбор BSS в соответствии с настройками.
- Wpa_supplicant запрашивает драйвер ядра установить соединение с выбранной BSS.
- Для WPA-EAP: аутентификацию EAP производит встроенный IEEE 802.1X Supplicant, либо же внешний Xsupplicant с сервером аутентификации.
- Для WPA-EAP: получен мастер-ключ от IEEE 802.1X Supplicant.
- Для WPA-PSK wpa_supplicant использует пароль PSK в качестве мастер-ключа сессии.
- Wpa_supplicant производит с аутентификатором точки доступа 4-х этапное согласование [1] и групповое согласование ключей.
- Wpa_supplicant производит шифрование однонаправленных и широковещательных пакетов [2] , после чего начинается обычный обмен данными.
Главный и большой плюс wpa_supplicant — его юниксвейность, то есть соответствие принципу Unix Way, когда программа делает что-то одно, но делает это хорошо. В каком-то смысле wpa_supplicant также Gentoo Way. Она требует некоторого внимания и терпения вначале, но затем о ней можно напрочь забыть. После того как программа настроена и пущена в дело, она полностью выпадает из потока событий, превращаясь в пару строк из ps -ef . Она не сверкает и не мигает в системном трее, не оповещает о разведанных, подключенных и отключенных беспроводных сетях. Ее просто нет, пока вы сами ее не поищите.
Из минусов — сложность настройки и конфигурации. Много возни по сравнению с тырк-тырк-тырк в окне Network Manager , не говоря уже о WiFi подключении с любого Андроид устройства. Если вы собираетесь в поездку с Linux ноутбуком, то наверняка предпочтете более дружественный фронтенд настройки беспроводной сети, чтобы быстро подключаться к бесплатным точкам доступа WiFi в аэропорту, гостинице или в рабочей обстановке. Для домашнего же беспроводного интернета — самое то.
Установка
Если не выбирать графический фронтенд, то программа почти не тянет за собой никаких зависимостей. Для Gentoo Linux сгодится установка с выставленными флагами как показано.
Подключение без конфиг файла
Если вам нужно подключиться только один раз, то необходимости создавать файл конфигурации и вникать во все тонкости настройки, нет. Достаточно набрать несколько инструкций из командной строки.
Пример для открытой сети был показан в самом начале. Для закрытой WPA сети быстрое подключение выгладит так:
В начале надо запустить саму программу wpa_supplicant и сопутствующую wpa_cli .
Затем настройка из интерактивного интерфейса wpa_cli .
Для закрытой WPA2 сети:
В конце необходимо вручную запустить демон DHCP.
Подключение к Ad-Hoc сети
Никогда с такой не сталкивался, но готовым нужно быть ко всему. Подключение к открытой ad-hoc.
То же самое с помощью iw .
Настройка для домашней сети
Теперь самое интересное — настройка. Этот процесс задокументирован для Arch Wiki, Debian Wiki и Gentoo Wiki, но всех деталей там естественно нет.
Программа обычно ставится в директорию /etc/wpa_supplicant/ , и наша задача — правильно настроить конфигурационный файл wpa_supplicant.conf , и привязать его к автозапуску беспроводного сетевого интерфейса.
Начнем с wpa_supplicant.conf . Если вы подключаетесь из дома к WPA/WPA2, то скорее всего используете пароль для WiFi соединения, что соответствует режиму WPA-PSK ("WPA-Personal") . Мы не будет рассматривать варианты с WEP шифрованием, так как оно ненамного лучше открытой сети.
Возьмем типовой конфиг из документации. Например такой.
Первая строка необходима, без ctrl_interface программа даже не запустится. GROUP=wheel нужно для того, чтобы запускать из под обычного пользователя в графическом интерфейсе wpa_gui, но это не наш путь. Поэтому меняем на рутовый GROUP=0 .
Каждой сети в файле настроек должен соответствовать блок network <> . Покопавшись в исходниках, обнаружил нашел годное писание переменной ap_scan в файле config.h , а в мануале и руководстве пользователя ее описание очень скудное.
ap_scan — AP scanning/selection
By default, wpa_supplicant requests driver to perform AP scanning and then uses the scan results to select a suitable AP. Another alternative is to allow the driver to take care of AP scanning and selection and use wpa_supplicant just to process EAPOL frames based on IEEE 802.11 association information from the driver.
1: wpa_supplicant initiates scanning and AP selection (default).
0: Driver takes care of scanning, AP selection, and IEEE 802.11 association parameters (e.g., WPA IE generation); this mode can also be used with non-WPA drivers when using IEEE 802.1X mode;
do not try to associate with APs (i.e., external program needs to control association). This mode must also be used when using wired Ethernet drivers.
2: like 0, but associate with APs using security policy and SSID (but not BSSID); this can be used, e.g., with ndiswrapper and NDIS drivers to enable operation with hidden SSIDs and optimized roaming;
in this mode, the network blocks in the configuration are tried one by one until the driver reports successful association; each network block should have explicit security policy (i.e., only one
option in the lists) for key_mgmt, pairwise, group, proto variables.
Note: ap_scan=2 should not be used with the nl80211 driver interface (the current Linux interface). ap_scan=1 is optimized work working with nl80211. For finding networks using hidden SSID, scan_ssid=1 in the network block can be used with nl80211.
- bssid — The Basic Service Set Identifier (BSSID), физический адрес точки доступа.
- key_mgmt — Протоколы аутентификации.
- pairwise — Для WPA2 укажите CCMP, а для WPA — TKIP.
- proto — WPA/WPA2.
- psk — Хэш пароля PreShared Key.
group: list of accepted group (broadcast/multicast) ciphers for WPA
CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
WEP104 = WEP (Wired Equivalent Privacy) with 104-bit key
WEP40 = WEP (Wired Equivalent Privacy) with 40-bit key [IEEE 802.11]
If not set, this defaults to: CCMP TKIP WEP104 WEP40
pairwise: list of accepted pairwise (unicast) ciphers for WPA
CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
NONE = Use only Group Keys (deprecated, should not be included if APs support pairwise keys)
proto: list of accepted protocols
WPA = WPA/IEEE 802.11i/D3.0
RSN = WPA2/IEEE 802.11i (also WPA2 can be used as an alias for RSN)
If not set, this defaults to: WPA RSN
key_mgmt: list of accepted authenticated key management protocols
WPA-PSK = WPA pre-shared key (this requires 'psk' field)
WPA-EAP = WPA using EAP authentication (this can use an external program, e.g., Xsupplicant, for IEEE 802.1X EAP Authentication
IEEE8021X = IEEE 802.1X using EAP authentication and (optionally) dynamically generated WEP keys
NONE = WPA is not used; plaintext or static WEP could be used
If not set, this defaults to: WPA-PSK WPA-EAP
Создаем хэш пароля для psk :
Все готово, чтобы создать конфиг сети. Итоговый файл должен выглядеть как-то так.
Верные значения для bssid , group , proto и pairwise можно определить, сканируя беспроводную сеть.
Команда iwlist из набора Wireless Tools устарела, вместо нее сейчас iw .
Настройка 802.1X для офиса
Стандарт IEEE 802.1X определяет более строгую модель подключения к WiFi сети. Вместо psk пароля необходимо предъявить серверный сертификат.
- ca_cert — Абсолютный путь к CA-сертификату в формате PEM или DER, необходим для возможности подтверждения сертификата сервера.
- ca_path — Абсолютный путь к директории, где хранятся файлы CA-сертификатов (в формате PEM), которые вы хотите добавить в список доверенных.
- client_cert — Абсолютный путь к клиентскому сертификату в формате PEM или DER.
- eap — Разделенный пробелами список поддерживаемых методов EAP: MD5, MSCHAPV2, OTP, GTC, TLS, PEAP, или TTLS.
- identity — Идентификации EAP, например имя пользователя.
- password — Пароль EAP.
Так может выглядеть блок, настроенный для подключения к сети в режиме WPA-Enterprise с аутентификацией 802.1X PEAP, в котором требуется ввод данных учетной записи пользователя:
А это пример блока, настроенного для подключения к сети в режиме WPA-Enterprise с аутентификацией 802.1X EAP-TLS, в котором требуются серверный и клиентский сертификаты:
Привязка wpa_supplicant к сетевой карте
Для Gentoo Linux надо добавить 2 строки в /etc/conf.d/net .
Список поддерживаемых -D<driver> драйверов. Для современных чипов и версий ядра подойдет nl80211 . На старом железе может взлететь wext .
- nl80211 — New driver.
- wext — Linux wireless extensions (generic).
- wired — wpa_supplicant wired Ethernet driver.
- roboswitch — wpa_supplicant Broadcom switch driver.
- bsd — BSD 802.11 support (Atheros, etc.).
- ndis — Windows NDIS driver.
Сетевая карта wlan0 должна быть залинкована с lo0 .
Следует также добавить wpa_supplicant в автозапуск.
Пользователи Debian добавляют запись в файл /etc/network/interfaces .
Пользователи RedHat добавляют в /etc/sysconfig/wpa_supplicant
а в файл /etc/sysconfig/network-scripts/ifcfg-wlan0
Отладка
После того как wpa_supplicant успешно подключилась к точке доступа, в dmesg можно увидеть протокол установки соединения.
Если же вместо этого вы увидите ошибку:
то скорее всего, надо использовать драйвер wext вместо nl80211 . А с ошибкой:
наоборот, вместо wext надо подставить nl80211 .
В ситуации, когда вы не можете определить ошибку, запустите wpa_supllicant напрямую с ключем -dd .
iw — это новая утилита командной строки, основанная на nl80211, для беспроводных устройств. Она поддерживает все новые драйверы, которые были добавлены в ядро за последнее время. Старый инструмент iwconfing, который использует Wireless Extensions interface (интерфейс беспроводного расширения), является устаревшим и настоятельно рекомендуется переключиться на iw и nl80211.
Замена iwconfig на iw
Приведём несколько практических примеров iwconfig и их альтернативу с командой iw.
Получаем информацию о wlan0
Подключение к открытой сети
Если вы хотите установить канал:
теперь просто используйте
Подключение к защищённой сети
Для шифрования WPA/WPA2 вы должны использовать wpa_supplicant.
Для защиты WEP protection вы можете использовать
Обратите внимание, что
использует нумерацию ключей основанную на 1, а
iw
использует нумерацию ключей, основанную на 0, как стандарт 802.11.
Для перевода строки в шестнадцатеричные однобайтовые единицы можно использовать команду od -t x1. Пример:
Присоединение к IBSS (сеть ad-hoc)
Отключение от IBSS (сеть ad-hoc)
должно бы работать, но не всегда работает должным образом.
в iw это всегда будет срабатывать:
Примеры использования iw
В этой части мы рассмотрим самые ходовые примеры использования команды iw.
Справка по iw
в вашей командной строке и будут напечатаны команды, которые ею поддерживаются.
Узнаём возможности устройства
Используйте следующую команду, чтобы узнать возможности всех устройств, сюда относятся частотные характеристики (2.4 и 5), и информация о 802.11n:
Сканирование
Прослушивание событий
При отладке может быть полезным посмотреть фреймы auth/assoc/deauth/disassoc, для этого используйте
иногда также полезна информация о тайминге:
Получаем статус подключения
Чтобы определить, подключены ли вы к ТД или последнюю используемую величину TX, вы можете применить команду, показанную ниже.
Привет вывода, когда ассоциированы с устаревшей (не-802.11n) ТД:
Пример вывода, когда подключены к ТД по 802.11n:
Пример вывода, когда не подключены к ТД:
Это может случиться, если вы не подключены к ТД. Для подключения к ТД вы можете использовать iw connect, если подключение:
- Без шифрования
- Использует WEP для шифрования. Если вам нужно подключиться к ТД с требуемым шифрованием WPA или WPA2, тогда вы доложны использовать wpa_supplicant.
Установление базового подключения
Вы можете использовать iw для подключения к ТД напрямую только и если только АП:
- Без шифрования
- Использует для шифрования WEP. Тем не менее, следует отметить, что если вы отключились от ТД, что может происходить довольно часто в загруженном окружении, вам нужно заново ввести команду. Если вы не хотите делать это, вы можете просто использовать wpa_supplicant, который будет автоматически пытаться подключить вас, когда вы отключились.
Если вы выбрали самостоятельную работу с рассоединениями, то вы можете использовать iw connect как показано ниже.
Для подключения к ТД, у которой отключено шифрование, где SSID это foo:
Допустим у вас две ТД с SSID foo, и вы знаете, что та, к которой вы хотите подключиться, на частоте 2432, тогда вы можете указать частоту для использования:
Для подключения к ТД, которая использует WEP, вы можете использовать:
Получение статистики станции
Для получение информации о статистике станции, такой как количество байт tx/rx, последний битрейт TX (включая величину MCS), вы можете сделать:
Получение статистики станции в отношении пира
Если вы хотите получить статистику по конкретному пиру с которым ваша станция осуществляет связь, вы можете использовать следующее:
В выше приведённой STA (станции) <peer-MAC-address> - это MAC вашей ТД.
Изменение скорости передачи
iw поддерживает изменение битрейта TX, как устаревшего (legacy) варианта, так и скорости HT MCS. Это делается применение маски к разрешённым битрейтам, также позволено очищать маски.
Изменение устаревших (legacy) tx bitrates
Вы можете установить для передачи использование только конкретных устаревших скоростей. К примеру:
Здесь как включить то, что некоторые называют «Чистый G», при котором отключена ассоциация по 802.11b:
Изменение скорости tx HT MCS
Поддержка установки настроек для передачи используя MCS скорости заключается в возможности указать частоту и скорость MCS. Обратите внимание, что будет ли на самом деле устройство прислушиваться просьбам зависит от драйвера устройства и сотрудничества с прошивкой. К примеру:
Для очистки всех скоростей tx возвращения в нормальное состояние:
Установка мощности TX
Вы можете установить txpower используя имя интерфейса или соответствующее phy.
Сбережение энергии
Для включения сохранения энергии по умолчанию вы можете использовать:
Для драйверов mac80211 это означает включение Dynamic Power Save.
Чтобы узнать текущие настройки сбережения энергии используйте:
Добавление интерфейса с iw
Поддерживается несколько режимов. Эти режимы:
- monitor
- managed [также station]
- wds
- mesh [также mp]
- ibss [также adhoc]
Описание этих режимов можно найти на странице документации режимов.
К примеру, добавляем интерфейс в режиме монитора:
где вы можете заменить
на какой-то другой режим и
на имя интерфейса, и нужно заменить
наe PHY имя для вашего железа (обычно phy0 будет корректным именем, если вы не подключали «по горячему» или не перезагружали какие-либо модули.) Если ваш udev настроен неправильно, новосозданный виртуальный интерфейс может быть им сразу переименован, используйте
для вывода списков всех интерфейсов. Для создания нового интерфейса в управляемом режиме вам следует использовать:
Обратите внимание, что интерфейс автоматически переводится в режим ТД при использовании hostapd.
Если вы хотите создать интерфейс в режиме монитора, а он создаётся в управляемом режиме, то сразу после создания выполните команду:
Проверить можно так:
Изменение флагов монитора интерфейса
Вы можете настроить тип монитора интерфейса, который вы создаёте. Это очень полезно в целях отладки на конечных пользовательских системах:
Затем вы можете попросить пользователя использовать tcpdump для сессии:
Возможные флаги для интерфейса в режиме наблюдения
Можно указать следующие флаги:
Удаление интерфейсов с iw
Поддержка vif (множественных виртуальных интерфейсов)
О поддержке виртуальных vif смотрите отдельную страницу iw vif.
Обновление вашего регулирующего домена
Вы также теперь можете использовать wpa_supplicant для изменения вашего регулирующего домена, чтобы это сделать, просто добавьте, к примеру, запись “COUNTRY=US” в вашу конфигурацию.
В этом руководстве кратко объясняется, как подключиться к Wi-Fi из командной строки в дистрибутивах Linux на основе Debian и Debian 3 различными способами: с помощью nmcli, nmtui и wpa_supplicant. В дополнение к nmcli, nmtui и wpa_supplicant используются команды iwconfig, iwlist и dhclient, которые кратко объясняются в этом руководстве.
Обнаружение сетей с помощью Iwconfig
Перед тем как начать, нам нужно знать essid или имя сети, к которой мы хотим подключиться.
В этом руководстве показано, как использовать команду Iwconfig для сканирования доступных сетей. Iwconfig похож на команду ifconfig, но для управления беспроводными интерфейсами. Эта команда позволяет пользователю редактировать частоту или канал, изменять режим сетевого устройства (Ad-hoc, Managed, Master, Repeater, Monitor, Secondary), устанавливать ESSID и т. Д.
ПРИМЕЧАНИЕ. SSID / ESSID — это имена или идентификаторы сети или маршрутизатора.
Чтобы проверить, правильно ли обнаружена карта Wi-Fi, сначала выполните команду iwconfig, как показано на следующем снимке экрана:
Как вы можете видеть, выходные данные показывают интерфейс loopback (lo), карту Ethernet (enp2s0) и карту Wi-Fi wlp3s0, которые мы будем использовать для сканирования доступных сетей с помощью команды Iwlist.
Первая строка показывает поддержку стандартов 802.11 и показывает, что устройство не подключено. Вторая строка показывает, что карта Wi-Fi находится в управляемом режиме и не связана с точкой доступа.
Третья строка включает Retry Short Limit, который определяет количество попыток после неудачной передачи, и RTS Threshold, определяющий количество подтверждений до соединения, Fragment Thr показывает максимальный размер пакета, который отправит ваша карта.
Последние две строки показывают, что аутентификация отсутствует и управление питанием выключено.
Команда Iwlist предоставляет дополнительную информацию о беспроводных устройствах, в том числе о тех, которые не являются частью нашего компьютера. В этом случае мы просканируем доступные сети, добавив сканирование аргументов. На выходе будет отображен список точек доступа с некоторой информацией, такой как ESSID, качество сигнала, канал, режим и т.д.
Выполните следующую команду, чтобы распечатать список доступных сетей:
ПРИМЕЧАНИЕ. Замените wlp3s0 вашей беспроводной картой, отображаемой при выполнении команды iwconfig.
Как видите, в выходных данных показано несколько сетей, включая точку доступа LinuxHint, но формат неудобен для пользователя. Если вы хотите распечатать только ESSID или имена доступных сетей, опуская остальные, запустите:
Как вы можете видеть, вывод понятен и ограничен именами точек доступа (essid).
Подключение к Wi-Fi из командной строки с помощью nmcli
NMCLI — это интерфейс командной строки для NetworkManager, который можно использовать как альтернативу графическим менеджерам. NMCLI позволяет пользователю создавать, редактировать и удалять или включать и отключать соединения, а также отображать состояние устройства.
Следующий синтаксис показывает, как подключиться к сети LinuxHint (обнаруженной с помощью ранее использованной команды Iwlist) путем выполнения nmcli со следующими аргументами:
Где d wifi указывает беспроводное устройство, подключение LinuxHint указывает ессид и пароль морочита пароль.
ПРИМЕЧАНИЕ. Замените LinuxHint на ssid вашего маршрутизатора и morochita на ваш фактический пароль.
Подключение к wifi с консоли с помощью nmtui
Nmtui — это интерактивная альтернатива nmcli и Network Manager на основе curses при запуске консоли:
Первый экран позволяет нам редактировать существующее соединение, активировать новое соединение и редактировать наше имя хоста. Выберите второй вариант Активировать соединение и нажмите ENTER.
Nmtui покажет как проводные, так и беспроводные доступные сети. Выберите свою точку доступа и нажмите ENTER.
Примечание: для этого примера ESSID был изменен с LinuxHint на LinuxH1nt, чтобы показать шаг запроса пароля.
На следующем экране будет запрошен пароль, введите его и нажмите ENTER, чтобы продолжить.
И вы будете связаны.
Подключитесь к Wi-Fi с помощью wpa_supplicant
Wpa_supplicant — это соискатель, который разрешает согласование в процессе аутентификации. В отличие от nmcli и nmtui, wpa_supplicant по умолчанию не устанавливается в Debian.
Чтобы установить wpa_supplicant в системах на базе Debian, выполните:
Вам нужно отредактировать файл /etc/wpa_supplicant.conf, добавив essid и пароль вашей точки доступа, вы можете добиться этого, выполнив следующую команду:
wpa_passphrase LinuxHint morochita | sudo tee / etc / wpa_supplicant.confПРИМЕЧАНИЕ. Замените LinuxHint на ваш essid и morochita на ваш фактический пароль. Вы можете использовать кавычки для сетевых имен, содержащих пробелы.
После редактирования wpa_supplicant.conf вы можете подключиться, выполнив следующую команду, где -c указывает файл конфигурации, а -i указывает сетевой интерфейс:
sudo wpa_supplicant -c / etc / wpa_supplicant.conf -i wlp3s0
Как вы можете видеть с помощью iwconfig, теперь ваша беспроводная карта связана с точкой доступа.
Для подключения запустите команду dhclient, как показано на следующем снимке экрана, чтобы получить динамический IP-адрес:
ПРИМЕЧАНИЕ. Замените wlp3s0 своей беспроводной картой.
После запуска dhclient вы должны быть подключены к Интернету через соответствующую точку доступа.
Надеюсь, вы нашли это руководство полезным для подключения к Wi-Fi из командной строки в системах на основе Debian. Следите за LinuxHint, чтобы получить больше руководств и советов по Linux.
Этичный хакинг и тестирование на проникновение, информационная безопасность
Оглавление
Что такое dev и phy для команды iw
Программа airmon-ng для беспроводных адаптеров показывает такие данные как PHY и Interface.
Программа iw позволяет управлять сетевым адаптером обращаясь к нему либо как к устройству phy, либо как к интерфейсу dev. При этом набор команд разный.
PHY (аббревиатура от англ. Physical layer — физический уровень) — интегральная схема, предназначенная для выполнения функций физического уровня сетевой модели OSI.
Микросхемы PHY позволяют другим микросхемам канального уровня, называемым MAC, подключиться к физической среде передачи, такой как оптическое волокно или медный кабель.
То есть в Linux PHY — это номер, который устройству присвоил драйвер/фреймворк PHY для обращения к нему и настройки на канальном уровне.
Что касается dev (имя устройства, имя интерфейса), то это то условное имя присвоенное устройству системой. Имеются разные схемы наименования, поэтому в разных дистрибутивах Linux сетевые интерфейсы могут называться по-разному. При желании, имя сетевого интерфейса можно изменить.
Одновременное использование Wi-Fi адаптера в разных режимах
Казалось бы, ну и что? Через phy можно управлять настройками, значение которых без чтения специальной технической документации непонятно. Через имя интерфейса dev можно управлять более привычными настройками (перевести в режим монитора, переключиться на определённый канал и так далее).
Дело в том, что для беспроводных адаптеров сетевой интерфейс это не просто имя, идентифицирующее устройство. Интерфейсы бывают разных типов и для доступа к некоторым возможностям беспроводных адаптеров нужно добавлять интерфейсы. Более того, один Wi-Fi адаптер может иметь сразу несколько сетевых интерфейсов, выполняющих разные функции, например, комбинация интерфейсов в управляемом режиме и в режиме монитора, либо комбинация интерфейсов в управляемом режиме и в режиме Точки Доступа, при этом беспроводной адаптер будет одновременно выполнять сразу две функции! Причём разным интерфейсам одного Wi-Fi адаптера можно присвоить разные MAC адреса.
Смотрите также:
Выполните следующую команду для вывода полного списка возможностей всех ваших беспроводных интерфейсов:
Поищите следующие строки:
- software interface modes (can always be added) — программные режимы интерфейсов (всегда могут быть добавлены)
- valid interface combinations — возможные комбинации интерфейсов
Пример для первого Wi-Fi адаптера:
То есть вместо того, чтобы переводить интерфейс из управляемого режима в режим монитора или запускать на нём Точку Доступа, можно к уже имеющемуся добавить виртуальный интерфейс в режиме monitor или в режиме AP.
Можно добавить до четырёх AP интерфейсов.
Можно сделать аж до 8 интерфейсов AP, но все они могут использовать один канал.
Добавление интерфейса в режиме монитора
Предпочитаемый мной способ получить режим монитора — это перевести существующий беспроводной интерфейс из режима managed в monitor:
В результате Wi-Fi карта, пока она находится в режиме монитора, теряет способность подключаться к Точкам Доступа, то есть Интернет-подключение отсутствует.
С помощью добавления нового интерфейса эту проблему удаётся решить.
Добавление интерфейса в режиме монитора выполняется следующим образом:
В качестве ИНТЕРФЕЙС укажите имя существующего интерфейса, а в качестве НОВЫЙ_ИНТЕРФЕЙС можно указать произвольное имя.
При желании, вы можете назначить новому интерфейсу произвольный MAC-адрес:
Посмотрим, какие беспроводные интерфейсы имеются в системе:
Видим, что Wi-Fi карта wlp0s20f0u1 подключена к сети с именем Jenechka.
Добавим к wlp0s20f0u1 интерфейс с именем wlanmon в режиме монитора и установим на нём MAC-адрес:
Вновь посмотрим на наши интерфейсы:
Обратите внимание, что появился новый интерфейс wlanmon.
Запустим airodump-ng используя только что созданный виртуальный интерфейс:
А в другом окне запустим пинг, чтобы убедиться, что подключение к сети по-прежнему доступно:
Обратите внимание, что не смотря на то, что Wi-Fi адаптеру нужно находиться на одном канале для связи с ТД, тем не менее, при этом интерфейс в режиме монитора переключается по каналам.
Причём уже после остановки записи экрана, airodump-ng даже сумела поймать рукопожатие.
Как удалить виртуальный интерфейс
Для удаления виртуального интерфейса используйте команду:
Типы виртуальных интерфейсов
Выше были показаны примеры команды в которых мы указывали имя сетевого интерфейса:
Также можно добавить виртуальный интерфейс по имени PHY:
Наверное, это может быть полезным, если вы удалили все имеющиеся интерфейсы (если такое возможно).
Доступные типы интерфейсов:
Флаги используются только для monitor интерфейсов, валидные флаги:
mesh_id используется только для режима mesh.
Как в iw добавить AP интерфейс
Вы могли заметить, что в приведённом выше списке валидных типов интерфейсов отсутствует AP. Данный интерфейс с типом AP будет создан автоматически при создании Точки Доступа.
Для простоты, воспользуемся программой create_ap (по ссылке показано, как её установить).
К примеру, на интерфейсе wlo1 я хочу создать ТД с именем HackWare и паролем 12345678, в качестве источника Интернета должен использоваться интерфейс wlp0s20f0u1, тогда команда следующая:
Я могу подключиться к этой ТД и пользоваться Интернетом:
На компьютере же был создан новый интерфейс типа AP с именем ap0:
Как как одну Wi-Fi карту использовать в качестве клиента и Точки Доступа
Показанный выше способ подразумевает, что у вас два сетевых интерфейса — причём обязательно один из них должен быть Wi-Fi адаптером, а второй может быть как Wi-Fi адаптером, так и проводным соединением.
Предположим, что у меня отсутствует проводное соединение и имеется только один адаптер, можно ли одну Wi-Fi карту одновременно использовать для подключения к Точке Доступа и как Точку Доступа? Да, можно. Один сетевой интерфейс может одновременно работать в качестве клиента и в качестве ТД, то есть выполнять роль усилителя сигнала (беспроводной повторитель).
Начнём с того, что остановим NetworkManager, иначе в моём случае у меня постоянно возникала ошибка «RTNETLINK answers: Device or resource busy»:
Если у вас NetworkManager убран из автозагрузки, то начать нужно с активации беспроводного интерфейса:
Теперь нам нужно создать два виртуальных интерфейса в режиме managed с разными MAC-адресами:
Один из этих интерфейсов будет выполнять роль станции, а другой роль ТД.
Поскольку мы отключили NetworkManager, то теперь нам нужно подключиться к удалённой ТД вручную.
Создаём конфигурационный файл:
Если вы хотите, чтобы процесс wpa_supplicant ушёл в фон, то добавьте опцию -B:
Подключение требует некоторого времени:
Запускаем службу DHCP для автоматического получения IP адреса:
Смотрим на состояние интерфейсов:
Видим, что интерфейс wlan0_sta подключён к ТД — именно это нам и нужно.
Очень важно — посмотрите, на каком канале работает ТД и клиент. Этот канал обязательно нужно указать в следующей команде, иначе ничего не получится. В данном случае они работают на 8 канале.
Наконец, запускаем ТД с именем HackWare и паролем 12345678 на 8 канале:
Всё получилось, и у нашего усилителя Wi-Fi сигнала даже есть подключённый клиент:
Команды для показа имён сетевых интерфейсов
Небольшая памятка по командам для получении информации о доступных в системе сетевых интерфейсах.
Показать только беспроводные интерфейсы:
Вывод беспроводных интерфейсов вместе с их PHY, информации о драйвере и чипсете:
Вывод некоторой аппаратной информации:
Имена и описание интерфейсов:
Вывод всего, что напоминает сетевые интерфейсы (вместе с виртуальными):
Следующим образом можно посмотреть имена интерфейсов и оборудование:
Так можно вывести имена интерфейсов кроме виртуальных:
Обратите внимание, что создаваемые в этой инструкции интерфейсы в данном случае не считаются виртуальными, поскольку привязаны к физическому оборудованию.
Читайте также: