@ Карта сайта News Автора!

Bog BOS: hardware:  Беспроводные локальные сети IEEE 802.11 (Wi-Fi, Radio Ethernet, WLAN)

Последнее изменение файла: 2018.01.20
Скопировано с www.bog.pp.ru: 2024.11.21

Bog BOS: hardware: Беспроводные локальные сети IEEE 802.11 (Wi-Fi, Radio Ethernet, WLAN)

Стандарт беспроводных локальных сетей IEEE 802.11 (Wi-Fi) основывается на технологии расширенного спектра (узкий радиосигнал в широкой полосе, иногда быстро перемещающийся) с использованием нелицензируемый (не в этой стране) или лицензируемый на упрощенных условиях частотный диапазон радиоволн или инфракрасные волны (в пределах комнаты). В любом случае мощность радиопередатчика не превышает 1 Вт, а область действия - 100 метров в помещении с картонными стенками и 500 метров на открытой местности. Впрочем, использование направленных антенн (усилителей) позволяет увеличить радиус покрытия до десятков километров, а применение ретрансляторов расширяет область действия еще больше. Узкий радиосигнал обеспечивает энергетическую эффективность, а широкая полоса - защиту от помех.

Регуляторы: ITU-R, CEPT, Государственная комиссия по радиочастотам.

Институты стандартизации: IEEE (принимает стандарты 802), Wi-Fi альянс (1999, Wireless Ethernet Compatibility Alliance, WECA, сертификация продуктов 802.11).

Требуется предварительное ознакомление с моделью локальной сети IEEE 802

Топология и архитектура локальной сети 802.11

Элементарной единицей сети является станция - устройство, физический и MAC-уровень, которого соответствует стандарту IEEE 802.11. Станции объединяются в базовый набор услуг (basic service set - BSS). Все станции BSS реализуют одинаковый протокол MAC и конкурируют за доступ к разделяемой среде передачи. Протокол MAC может быть распределенным или управляться централизованно. Доступом всех станций к среде для передачи PDU (Protocol Data Unit) управляет одна координационная функция. BSS может быть изолированым (одноячеечная конфигурация). Распределительная система (DS, Distribution System) соединяет несколько BSS в расширенный набор услуг ESS (Extended Service Set). ESS представляется единой логической локальной сетью на уровне LLC (LLC одинаков для всего семейства протоколов IEEE 802). Точка доступа (AP, базовая станция, мост) - станция, которая обеспечивает доступ соотнесенных с ней станций к распределительной системе. Распределительная система может быть реализована в виде беспроводной сети, проводной сети или коммутатора. Станция может входить в несколько BSS. Имя сети - SSID (Service Set Identification), BSSID - MAC адрес точки доступа, ESSID. Подключение и отключение станции к BSS может производиться динамически. Станции могут мигрировать между точками доступа (IEEE 802.11f, 2003, Inter Access Point Protocol, IAAP), а могут отключаться от одной точки доступа и подключаться к другой. Станции могут взаимодействовать друг с другом без использования точки доступа (IBSS, Independent BSS, Ad Hoc, Peer to Peer; есть еще несовместимый режим Lucent demo ad-hoc mode), в этом случае некому заниматься аутентификацией. Две точки доступа могут объединять две подсети в единое целое - мост (bridge, IEEE 802.11c). Для увеличения расстояния, покрываемого такой объединяющей беспроводной сетью, можно использовать дополнительное устройство с двумя точками доступа, соединёнными между собой, посередине "пролёта" - повторитель (repeater). Для информирования станций о допустимых частотах, мощнности передатчика и прочих ограничениях регулирующих органов точка доступа использует стандарт IEEE 802.11d. IEEE 802.11e позволяет согласовать качество обслуживания (QoS), в основном для телефонов VoIP. WMM (Wi-Fi multimedia) - красивое название для 802.11e. Автоматический выбор канала и достаточной мощности передотчика описывается в IEEE 802.11h.

MSDU (модуль данных службы MAC) - блок данных, передаваемых пользователем уровня MAC для доставки (обычно это PDU LLC). Станция оказывает следующие услуги IEEE 802.11:

Распределительная система оказывает следующие услуги IEEE 802.11:

Точка доступа (и станции в режиме ad hoc) регулярно рассылает "маячки" (beacon, бакен) - кадры, содержащие информацию о поддерживаемых скоростях, номере канала, наличии WEP и может быть SSID. Они же обеспечивают синхронизацию времени (imer synchronization function, TSF). В настройках точки доступа можно запретить рассылку "маячков" или, по крайней мере, включение в них SSID. В этом случае станция перед подключением должны послать пробный запрос, содержаший требуемый SSID и скорость передачи, на что точка доступа при совпадении SSID возвращает скорость передачи, канал и SSID.

Точка доступа может быть совмещена с коммутатором или маршрутизатором. Станция для подключения компьютера к беспроводной сети Wi-Fi выполняется в виде PC Card (PCMCIA, CardBus, ExpressCard), карты PCI или mini-PCI (зачастую представляют собой переходник PC Card) или USB устройства (в материнскую плату Asus P5K Deluxe оказалось впаяна(!) USB станция Realtek RTL8187_Wireless). Станции также встраиваются в PDA, коммуникаторы (например, Nokia E90) и даже игрушки (Nintendo Wii). Удобнее всего USB устройство - его можно вынести туда, где качество сигнала лучше.

Станция иметь встроенную или внешнюю антенну (антенны). Наличие 2 антенн позволяет во время приёма преамбулы определить какая из них принимает сигнал лучше и использовать именно её. Сравнение и переключение производится аппаратно, драйвер должен только дать разрешение на использование. При передаче драйвер должен явно определить какую антенну использовать. Антенны работают по очереди, так что не стоит пытаться использовать 2 направленные в разные стороны узконаправленные антенны.

Уровень MAC

Для управления доступом к среде передачи используется двухуровневый протокол доступа DFWMAC (distributed foundation wireless MAC), обеспечивающий базовый распределенный механизм управления доступом (DCF - distributed coordination function) и необязательный надстроенный над ним механизм централизованного управления (PCF - point coordination function).

DCF использует простой алгоритм CSMA без обнаружения коллизий (CSMA/CA) - прослушивание среды перед передачей в течение межкадрового промежутка IFS. Если при этом будет услышан запрос (RTS) от другой станции, то из него извлекается продолжительность предстоящего обмена и добровольного молчания. Предусмотрены 3 значения IFS для обеспечения приоритетного доступа к среде: SIFS (short IFS) - короткий интервал для немедленной реакции (ACK, CTS, очередная часть фрагментированного пакета, ответ на запрос PCF), PIFS (PCF IFS) - средний интервал для обеспечения приоритета централизованного управления PCF, DIFS (DCF IFS) - самый длинный интервал при использовании DCF, EIFS (Extend IFS) - ещё более длинный интервал (?). Все интервалы дискретны: 50 мкс для модуляции FHSS, 20 мкс - для DSSS.

PCF реализован с помощью опросов (poll), производимых центральным координатором (точкой доступа). Некоторая часть временного интервала (суперкадра) резервируется для "неорганизованных" станций, использующих DCF. На практике применяется редко.

Управление энергопотреблением:

Формат кадра MAC (максимальный размер - 2346 байт)

Физический уровень

Стандартами предусмотрены следующие среды передачи

BPSK - двухуровневая фазовая модуляция. 0 - представляется сигналом одной фазы, 1 - другой.

DBPSK - дифференциальная двухуровневая фазовая модуляция. 1 - представляется в виде смены фазы сигнала, 0 - сохранением фазы сигнала.

QPSK - четырехуровневая фазовая модуляция. Каждый сигнал представляет 2 бита.

DQPSK - дифференциальная четырехуровневая фазовая модуляция.

GFSK - гауссова частотная манипуляция, для кодирования используются отклонения от текущей несущей частоты.

PPM - фазо-импульсная модуляция, группа из 4 бит (2 бит) данных отображается в один из 16 (4) символов PPM, причем символ представляет собой строку из 15 (3) нулей и 1 единицы (модуляция интенсивности).

QAM - квадратурная амплитудная модуляция. 2 независимых сигнала передаются на одной частоте с использованием амплитудной модуляции (4-уровневой для 16-QAM, 8-уровневой для 64-QAM), но со сдвигом фазы 90°.

FHSS - расширение спектра со скачкообразной перестройкой частоты, модулированный одним из способов (ASK, FSK, PSK или их модификация) узкополосный аналоговый сигнал модулируется еще раз на частоте из большого набора частот, лежащих в широкой полосе; через определенный интервал времени опорная частота изменяется; последовательность опорных частот задается псевдослучайной последовательностью, известной как передатчику, так и приемнику (код расширения, расширяющая последовательность). На переключение частоты требуется немалое время, что сильно ограничивает скорость передачи.

DSSS - расширение спектра методом прямой последовательности, каждому исходному биту ставится в соответствие несколько битов передаваемого сигнала. Одним из способов преобразования является применение операции XOR для битов данных и битовой последовательности кода расширения (например, псевдослучайной), подаваемой с большей частотой. Использование в качестве кода расширения кодов Баркера длиной 11 (специально подобранная последовательность) увеличивает устойчивость к интерференции и многолучевому распространению.

OFDM - одновременно используется несколько несущих сигналов на различных частотах, каждый сигнал передает часть битов. Позволяет бороться с селективным замиранием и межсимвольной интерференцией во многолучевой среде.

На физическом уровне имеется логика выбора скорости и модуляции в зависимости от обстановки автоматически или вручную. Понижение скорости обычно увеличивает шанс каждого бита дойти неповрежденным, но увеличивает время передачи всего пакета и увеличивает вероятность коллизий. Так как протокол рассчитан на скорость 1 Mbps (задержки, RTS/CTS, кодирование заголовков), то на больших скоростях доля накладных расходов возрастает.

Не стоит обольщаться большой "теоретической" скоростью передачи данных. На близких расстояниях (1 метр) достигается 50% от заявленной скорости. С увеличением расстояния скорость очень быстро падает.

Перед каждым пакетом добавляется 144 бита преамбулы (128 бит для синхронизации, 16 бит - начало кадра) и 48 бит заголовка физического уровня PHY (скорость передачи, размер пакета данных, контрольная сумма). Преамбула и заголовок PHY всегда передаются на скорости 1Mbps. Имеется вариант укороченной преамбулы (72 бита), несовместимой с очень старым оборудованием (первоначальный 802.11). В современной сети её можно использовать без опасений (96 мкс на пакет вместо 192 мкс).

Радиосигнал

Сигналы в интересующем нас диапазоне (300 МГц - 30 ГГц) распространяются по эффективной линии прямой видимости. Радиогоризонт дальше оптического горизонта из-за небольшого искривления линии распространения радиоволн вдоль поверхности земли. Поправочный коэффициент приблизительно равен sqrt(4/3), т.е. максимальное расстояние между антеннами в чистом поле (в метрах) рассчитывается как 3570*K*(sqrt(h1)+sqrt(h2)). Огибания земной поверхности - нет, отражения от ионосферы - нет (т.е. космические шумы есть). Имеется атмосферное поглощение (кислород - 30-60 ГГц - и водяной пар - 15-22 ГГц). При частоте выше 10 ГГц происходит также затухание во время дождя и тумана. Под прямой видимостью понимается не только отсутствие препятствий на пути луча, но и свободный коридор немалого диаметра вокруг луча (зона Френеля?).

Затухание сигнала для изотропной антенны в свободном пространстве (т.е. без учета поглощения в атмосфере и дождя ;) пропорционально квадрату расстояния и квадрату частоты сигнала (т.к. затухание зависит от частоты, то амплитуда принимаемого сигнала искажается). Если выражать затухание в децибелах, то L =20 * lg (4pi*расстояние/длина_волны) дБ (3 дБ - в 2 раза, 6 дБ - в 4 раза, 10 дБ - в 10 раз). Для неизотропных антенн необходимо поделить на произведение коэффициентов усиления антенн. При увеличении частоты затухание изотропной антенны усиливается, но и коэффициент усиления параболической или рупорной антенны тоже увеличивается.

Мощность теплового шума пропорциональна ширине полосы сигнала (белый шум). При комнатной температуре равен -204 дБВт/Гц (мощность в дБВт равна 10*lg(мощность_Вт)). Дополнительно необходимо учитывать интермодуляционный шум , перекрестные помехи (доминируют в нелицензируемом диапазоне), импульсные помехи, отраженные от препятствий (зданий или земли, воды) или преломленные (в атмосфере или на углах препятствий) копии сигнала (приходят с различными запаздываниями).

Максимальная мощность передатчика в диапазоне 2.4 ГГц, допускаемая FCC (США) для DSSS и FHSS равна 1 Вт; ETSI (Европейский Союз) допускает не более 100 мВт. Данный диапазон был выделен в США в безлицензионное использование потому что телекоммуникационные коипании все равно отказывались его использовать из-за помех от СВЧ печей.

Чувствительность приемника измеряется в dBm (чем меньше, тем лучше) при условии потери не более 3% 400-байтных пакетов в канале с Гауссовым распределением помех. Зависит от метода модуляции. Типичными значениями являются -79 дБ для 11 Мб/с и -89 дБ для 1 Мб/с. Мощность передатчика измеряется в ваттах или dBm (1 mW = 0 dBm, 1 W = 30 dBm, 100 mW = 20 dBm). Типичным значенияем для массового обрудования является 15 dBm (31 мВ). Максимально допустимое ослабление сигнала определяется как разность мощности передатчика и чувствительности приемника (в dBm). Для расчета дальности необходимо добавить коэффициенты усиления приемной и передающей антенн и вычесть ослабление сигнала в антенных кабелях (хороший кабель - 0.25 дБ/м) и разъемах (1 дБ на разъем).

Антенны

Ширина луча (по уровню половинной мощности) - это угол, в пределах которого излучаемая мощность составляет не меньше половины мощности, которая излучается в преимущественном направлении. Коэффициент усиления есть отношение мощности сигнала, излучаемого в преимущественном направлении данной антенной, к мощности сигнала изотропной антенны. Результат в децибелах (dBi) получается так - 10*ln(коэффициент)/ln(10) (3 дБ - в 2 раза). Название характеристики вводит в заблуждение, так как в действительности выходная мощность антенны равна входной мощности. Мощность не усиливается, а перераспределяется по направлениям.

Типы антенн:

Популярным разъемом в последнее время становится реверсивный SMA-разъем (RP-SMA), хотя может понадобится кабель-переходник (длина и характеристики имеют значение) между антенной и антенным гнездом платы или точки доступа. Также указывается поляризация и сопротивление (50 Ohms). Электрическое поле параллельно антенне. Вертикальная поляризация - электрическое поле перпендикулярно земле, горизонтальная - параллельно.

SWR (КСВ, Коэффициент стоячей волны): характерезует степень согласования антенны и фидера (также говорят о согласовании выхода передатчика и фидера). На практике всегда часть передаваемой энергии отражается и возвращается в передатчик. Отраженная энергия ухудшает работу передатчика и может его повредить. SWR=(Wпад+Wотр)/(Wпад-Wотр). В идеале КСВ=1, значения до 1,5 считаются приемлемым.

Устройство может иметь несколько антенн и в каждый момет времени выбирать сигнал лучшего качества из возможных или использовать одну антенну для передачи, вторую для приема.

Из реального опыта направленных антенн на 15db хватает для организации устойчивого соединения 11Мб на расстояниях 1.5-2км. С парой антенн 21db устойчиво работает на расстоянии 4-5км. Любое препятствие (даже прямая видимость в створ между домами) сводит уровень сигнала до недопустимо низких значений.

Безопасность

Конфиденциальность и целостность данных при передаче обеспечиватся аутентификацией присоединения станции к точке доступа и шифрованием передаваемых данных. Радиосигнал легко доступен любому постороннему в зоне приёма, поэтому требования к аутентификации и шифрования значительно усилены по сравнению с проводными сетями. Доступность сервиса не обеспечивается ничем.

Алгоритм шифрования кадра WEP: станция присоединяет к общему секретному ключу длиной 40 бит или 104 бита псевдослучайный 24-битный вектор инициализации (IV), получая таким образом начальное число генератора псевдослучайных чисел алгоритма шифрования RC4 (PRNG); генератор порождает псевдослучайную последовательность бит, равную по длине кадру MAC; выполняется побитовая операция XOR между полученной последовательностью и кадром MAC; получателю посылается IV и результат XOR. Вектор инициализации периодически меняется (для каждого кадра MAC?). Метод получения IV стандартом не определён. Заголовок не шифруется. Секретный ключ может задаваться в настройках шестнадцатеричным числом, строкой или преобразуемой в шестнадцатеричное число парольной фразой. Станция может хранить до 4 ключей.

Режимы аутентификации:

Так выглядит хорошо защищённая сеть:

iwlist ath0 scan
ath0      Scan completed :
          Cell 01 - Address: xx:xx:xx:xx:xx:xx
                    ESSID:""
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Quality=63/70  Signal level=-32 dBm  Noise level=-95 dBm
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Extra:bcn_int=100
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK

А так выглядит плохо защищённая сеть (но далеко ;):

          Cell 02 - Address: 
                    ESSID:"ZyXEL"
                    Mode:Master
                    Frequency:2.412 GHz (Channel 1)
                    Quality=8/70  Signal level=-87 dBm  Noise level=-95 dBm
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Extra:bcn_int=100

Бизнес сеть (разнообразие достаточно защищённых вариантов, 802.1X):

          Cell 03 - Address: 
                    ESSID:"бизнес"
                    Mode:Master
                    Channel:10
                    Frequency:2.457 GHz
                    Quality=30/64  Signal level=9/65  
                    Encryption key:on
                    IE: WPA Version 1
                        Group Cipher : TKIP 
                        Pairwise Ciphers (2) : TKIP CCMP 
                        Authentication Suites (1) : 802.1X  
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP 
                        Pairwise Ciphers (2) : TKIP CCMP 
                        Authentication Suites (1) : 802.1X  
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              12 Mb/s; 24 Mb/s; 36 Mb/s; 9 Mb/s; 18 Mb/s
                              48 Mb/s; 54 Mb/s
                    Extra:tsf=0000004527570110

Атака на WEP по известному тексту. Каждый пакет содержит немного известной информации, например, заголовок 802.2 SNAP. Подслушав пакет и зная исходные и зашифрованные значения некоторых полей, можно с некоторой вероятностью предположить ключ - шифрование делается XOR-ом с кодирующей последовательностью, часть которой становится доступной непосредственно. Небольшая длина ключа и IV делает возможным полный перебор. Набрав достаточно много пакетов, можно увеличить вероятность почти до 1. Перехват сеанса аутентификации легального клиента сразу даёт большой пример текста в открытом и зашифрованном виде.

Имитация клиента или точки доступа.

Атака man-in-the-middle.

DoS легко достигается глушением сигнала, нарушением протокола обмена или выдачей фальшивых управляющих кадров. Например, повторное проигрывание кадра разрыва ассоциации.

Нелегальная точка доступа, подключённая к сети сотрудником или злоумышленником, ставит под удар всю сеть.

Какая-то информация (например, SSID и MAC-адреса участников) видны даже при использовании WPA2.

Инфраструктура для Wi-Fi в Linux

Имеется несколько несовместимых реализаций (framework) стека 802.11 в ядре Linux (к тому же некоторые драйверы приносят свой стек).

Реализация стека wlan и утилиты управления wlanctl и wlancfg.

Реализация стека wlan-ng и утилиты управления wlanctl-ng и wlancfg.

Интерфейс Wireless Extensions for Linux API и набор утилит управления wireless-tools (1997, ядро 2.0.30).

Реализация стека ieee80211 (модули ядра).

Реализация стека ieee80211/mac80211 (ранее называлась d80211, поставляется с ядра 2.6.22) [насколько удалось понять] состоит из:

ieee80211/mac80211 поддерживает режимы работы беспроводного интерфейса:

При работе стека mac80211 для каждой карты создаётся главный интерфейс wmasterX и необходимое число (по одному для каждого режима) дополнительных интерфейсов wlanX (udev может вмешаться в наименование устройств). wmasterX используется только слоем mac80211 (обещают скрыть его с глаз). wlanX принимает Ethernet кадр, дополняет его заголовком 802.11 и передаёт в wmasterX, которй передаёт его аппаратному драйверу. Для настройки и управления необходимо использовать интерфейс wlanX.

Для успешной работы Wi-Fi карты требуется наличие драйвера, соответствующего встроенной в ядро реализации стека беспроводной сети, или очумелые ручки изготовителя дистрибутива, сумевшего приспособить его под этот стек (или сделать несколько переключаемых стеков).

Проверить на чём построена купленная PCI/mini-PCI или CardBus карта можно с помощью lspci, карта PCMCIA - [pc]cardctl ident, карта USB - lsusb или /proc/bus/usb/devices.

ndiswrapper плюс средства "выдирания" прошивки и заливки её в устройство ("ndiswrapper -i имя-файла.inf") иногда позволяют использовать драйвера от MS Windows.

Если драйвер ieee80211/mac80211 заработал, то в системе появится новый сетевой интерфейс (обычно wlan0), с которым можно работать как с обычным ethernet интерфейсом (ifconfig, ip). Вместо wlan0 в других реализациях стека интерфейс может называться wifi0, ath0 (для драйвера madwifi) или просто ethN,

radiotap - стандарт захвата и вставки фреймов протокола 802.11. Поддерживается в Linux 802.11 стеках ieee80211 и mac80211, FreeBSD, OpenBSD и NetBSD. wireshark умеет декодировать заголовки radiotap. При захвате драйвер вкладывает фрейм 802.11 как PDU в кадр raditap и передаёт libpcap. В заголовках кадра radiotap записывается дополнительная информация о физическом уровне: номер антенны, частота сигнала, способ кодирования (CCK, OFDM, CCK-OFDM, GFSK) и параметры, есть ли фрагментация, использовался ли WEP, короткая преамбула, ошибки FCS, уровень сигнала (dB от некторого фиксированного значения), уровень шума (dB от некторого фиксированного значения), качество сигнала, скорость передачи, мощность передатчика, FCS. Формат заголовка является расширяемым. Приложение использует radiotap для передачи драйверу стека 802.11 аналогичной информации при передаче.

Внешние утилиты, требуемые для реализации 802.1x, 802.11i, WPA/WPA2:

Графические утилиты, упрощающие управление:

Программное обеспечение, необходимое для работы в режиме точки доступа:

LG LW2100P 802.11b PCI

Чипсет Prism (Harris Semiconductor AKA Intersil).

LG LW2100P представляет собой PCI адаптер беспроводной сети IEEE 802.11b, основанный на наборе микросхем Harris Semiconductor (Intersil) Prism 2.5 Wavelan, rev 01 (1260:3873). Поддерживает только модуляцию DSSS (?), WEP 40 и 104 бит, протокол доступа к среде - CSMA/CA (DCF и PCF) c ACK (RTS/CTS не поддерживается?). Короткая преамбула не поддерживается. CCAMode: csonly (?). Модуляция PBCC не поддерживается. Присоединение антенны - обратный SMA разъем. Прилагаемая антенна - штырь с неизвестными характеристиками (2 dB?). Мощность передатчика - 15 dBm (31 mW), изменять нельзя. Чувствительность приемника: -80 dBm. Никаких PCMCIA переходников.

prism2.5/3 chipsets do not support PCI power management ident: nic h/w: id=0x8013 1.0.0 # Prism2.5 PCI rev. 1.0.0 ident: pri f/w: id=0x15 1.0.5 # primary firmware 1.0.5, WEP исправлен в 1.4.0 ident: sta f/w: id=0x1f 1.3.4 # secondary firmware 1.3.4

Драйвер prism2

Драйыер для карт на чипсетах prism2.5/3 для стека wlan-ng (kernel-wlan-ng, kernel-wlan-ng-modules, kernel-wlan-ng-pci). Модули ядра: prism2_pci, p80211. Модуль нельзя выгружать (второй раз он инициализируется с ошибкой), обещают что в 0.2.1 исправили (pre15).

Загрузка модуля:

p80211: A Prism2.5 PCI device found, phymem:0xdc002000, irq:10, mem:0xe1ba1000
ifconfig: wlan0     Link encap:Ethernet  HWaddr 00:40:5A:04:23:6E
init_module: prism2_pci.o: 0.2.0 Loaded
init_module: dev_info is: prism2_pci
PCI: Found IRQ 10 for device 02:04.0
A Prism2.5 PCI device found, phymem:0xdc002000, irq:10, mem:0xe0948000
ident: nic h/w: id=0x8013 1.0.0 # Prism2.5 PCI rev. 1.0.0
ident: pri f/w: id=0x15 1.0.5   # primary firmware 1.0.5, WEP исправлен в 1.4.0
ident: sta f/w: id=0x1f 1.3.4   # secondary firmware 1.3.4
MFI:SUP:role=0x00:id=0x01:var=0x01:b/t=1/1
CFI:SUP:role=0x00:id=0x02:var=0x02:b/t=1/1
PRI:SUP:role=0x00:id=0x03:var=0x01:b/t=1/3
STA:SUP:role=0x00:id=0x04:var=0x01:b/t=1/9
PRI-CFI:ACT:role=0x01:id=0x02:var=0x02:b/t=1/1
STA-CFI:ACT:role=0x01:id=0x02:var=0x02:b/t=1/1
STA-MFI:ACT:role=0x01:id=0x01:var=0x01:b/t=1/1
Prism2 card SN: 99SA01000000

Рукоятка управления: /proc/net/p80211/wlan0/wlandev. prism2dl - загрузка прошивки, где? и где сама прошивка?

Драйвер orinoco

Для карт на чипсете Orinoco/Hermes (Lucent AKA Agere), хотя карты под именем Orinoco выпускали десятки фирм и не все они использую "правильный" (Hermes) чипсет (читайте сагу Jean Tourrilhes).

В состав дистрибутива RH 8.0 входит драйвер для беспроводных карт на чипсетах Orinoco и Prism (модули hermes, orinoco 0.11b (есть 0.13e: смена MAC адреса), orinoco_pci, orinoco_cs для PCMCIA, orinoco_plx для PCMCIA через PLX9052/WL11000). Конфигурация и сбор статистики через Wireless Extensions API. Сканирование через Wireless Extensions API (нужны заплатки). Мониторинг - нужны заплатки.

BroadComm

В дополнение к драйверу bcm43xx необходимо иметь прошивку в /lib/firmware. Делал из BCLWL5.SYS с помощью bcm43xx-fwcutter (одноименный пакет в репозитарии extra).

USB Realtek RTL8187

В состав материнской платы ASUS P5K Deluxe входит намертво припаянная (!) USB станция на чипе Realtek RTL8187

T:  Bus=07 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  3 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0bda ProdID=8187 Rev= 1.00
S:  Manufacturer=Manufacturer_Realtek_RTL8187_
S:  Product=RTL8187_Wireless
S:  SerialNumber=MAC-адрес 
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA

Модуль ядра rtl8187 для стека mac80211 поддерживает карты на чипах Realtek RTL8180 (?), RTL8185, RTL8187 (не RTL8187B!). Несовместим с модулем ieee80211/без-mac80211 (необходимо выгрузить его перед загрузкой rtl8187).

kernel: phy0: hwaddr MAC-адрес, rtl8187 V1 + rtl8225z2
kernel: usbcore: registered new interface driver rtl8187

Кроме модуля ядра, отвечающего за аппаратный интерфейс с оборудованием, необходимы: eeprom_93cx6 (http://rt2x00.serialmonkey.com).

Изготовитель чипсетов предлагает свою версию.

Драйвер madwifi (Atheros)

madwifi - "внесистемный" (тянет с собой стек net80211 из NetBSD) Linux драйвер для карт на чипах Atheros (ar5210, ar5211, ar5212). Поддерживает почти все устройства (PCI, MiniPCI и Cardbus) на чипсетах Atheros, кроме USB. Состоит из открытой части и бинарного модуля HAL (hardware abstraction layer, аппаратно-зависимый уровень). Поддерживает особенности (улучшения протокола) чипсетов Atheros: посылка цепочки фреймов (bursting), Fast Frames, аппаратное прозрачное сжатие (LZ), транки (Turbo Mode), увеличение чувствительности приёмника до -105dBm и набор скоростей 3, 2, 1, 0.5 и 0.25 MBps (eXtended Range, XR), IEEE 802.11e (QoS, распределённый режим EDCA), автоматическое управление мощностью передатчика и частоты (IEEE 802.11h). Позволяет сканировать без разрыва ассоциации (но передатчик всё-таки один). Версия 0.9.4 (13 февраля 2008. до r3476, в котором разобрались с проблемами с несколькими VAP одновременно). В будущем предполагается переход на ath5k и OpenHAL.

Взял из репозитария livna. Пакет kmod-madwifi содержит модули ядра - ath_hal (аппаратно-зависимая часть), ath_pci (аппаратно независимая часть работы с чипами Atheros), различные алгоритмы подстройки скорости (ath_rate_amrr, ath_rate_minstrel, ath_rate_onoe, ath_rate_sample), wlan (конечный автомат 802.11 и реализация протокола), wlan_acl (ACL по MAC адресам), модули поддержки шифрования (wlan_ccmp, wlan_tkip, wlan_wep, wlan_xauth, wlan_auth, wlan_radius), wlan_scan_ap, wlan_scan_sta. При установке блокирует загрузку системного модуля ath5k (/etc/modprobe.d/blacklist-ath5k). Параметры: /proc/sys/net/ath0/. /proc/sys/dev/wifi0/, /sys/module/ath_pci/parameters/, /sys/class/net/ath0/. Пакет madwifi содержит утилиты управления и диагностики. Базовое управление возможно утилитами из пакета wireless-tools (драйвер совместим с Wireless Extensions API).

Карта CardBus (PC Card) D-Link DWL-G650

kernel: pccard: CardBus card inserted into slot 1
kernel: wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
kernel: wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
kernel: wifi0: H/W encryption support: WEP AES AES_CCM TKIP
kernel: wifi0: mac 5.6 phy 4.1 radio 1.7
kernel: wifi0: Use hw queue 1 for WME_AC_BE traffic
kernel: wifi0: Use hw queue 0 for WME_AC_BK traffic
kernel: wifi0: Use hw queue 2 for WME_AC_VI traffic
kernel: wifi0: Use hw queue 3 for WME_AC_VO traffic
kernel: wifi0: Use hw queue 8 for CAB traffic
kernel: wifi0: Use hw queue 9 for beacons
kernel: wifi0: Atheros 5212: mem=0x50000000, irq=10

lspci -v
04:00.0 Ethernet controller: Atheros Communications Inc. AR5212/AR5213 Multiprotocol MAC/baseband processor (rev 01)
        Subsystem: D-Link System Inc D-link DWL-G650 (Rev B3,B5) Wireless cardbus adapter
        Flags: bus master, medium devsel, latency 168, IRQ 10
        Memory at 50000000 (32-bit, non-prefetchable) [size=64K]
        Capabilities: [44] Power Management version 2
        Kernel driver in use: ath_pci
        Kernel modules: ath_pci, ath5k

ifconfig
ath0      Link encap:Ethernet  HWaddr 
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
wifi0     Link encap:UNSPEC  HWaddr 
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:199 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:10 

Уровень шума всегда показывается как -96dBm. Параметр качество соединения (Link Quality) показывает в числителе средний SNR (он же RSSI), в знаменателе ?. Чип может работать хоть при SNR=2 на малых скоростях, но SNR меньше 10 будет вызывать проблемы. SNR более 20 должно быть достаточно для обычной работы. SNR более 40 достаточно для режима 108 Mbps.

Параметры модуля ath_pci (/proc/sys/dev/ath/):

Область (группа стран) с похожими правилами: sysctl -a | grep regdomain (48 - ETSI).

Код страны (уточнение правил) по умолчанию можно узнать: sysctl -a | grep country. Код России - 643. Поменять страну при загрузке модуля можно только, если желаемая страна находится в том регионе, который записан в EEPROM. Кстати, в Японии (код 392) на 1 разрешённый канал больше. А в Корее2 (411) вдвое больше каналов.

Алгоритмы подстройки скорости (большая скорость передачи может приводить к большим потерям):

Особенностью реализации является режим VAP (Virtual AP), который позволяет одновременную работу нескольких виртуальных точек доступа и работу в режиме станции на одной карте. Все VAP разделяют один аппаратный передатчик, поэтому имеют одинаковый радиоканал и прочие физические характеристики. Несколько VAP на одном устройстве работают неустойчиво, так что можно применять только в случае крайней необходимости. Для работы с VAP создаётся устройство (интерфейс wifiX), для работы со станцией - athX. Устройством athX можно управлять утилитами из набора wireless-tools. Для управления VAP (wifiX) используется утилита wlanconfig, к нему неприменимы ifconfig и iwconfig. При загрузке драйвера автоматически создаёт VAP в режиме станции (/etc/modprobe.d/madwifi: autocreate=sta, для отключения надо написать autocreate=none). Поддерживаемые режимы работы:

Создание VAP (nounit - не увеличивать номер athX, bssid - создавать новый MAC):

wlanconfig имя-VAP create [nounit] wlandev базовое-устройство wlanmode режим [bssid|-bssid] [nosbeacon]

Удаление VAP:

wlanconfig имя-VAP destroy

Посмотреть соседей, состояние, возможности:

wlanconfig ath1 list

ADDR               AID CHAN RATE RSSI  DBM IDLE  TXSEQ  RXSEQ CAPS ACAPS ERP    STATE     MODE
xx:xx:xx:xx:xx:xx    1    6  36M   64  -31    0     28  34912 EPs          4        1   Normal RSN

wlanconfig ath1 list scan
SSID            BSSID              CHAN RATE  S:N   INT CAPS
XXXXXXXX        xx:xx:xx:xx:xx:xx    6   54M 64:0   100 EPs  RSN

wlanconfig ath1 list chan # возможные каналы

Channel   1 : 2412  Mhz 11g          Channel   8 : 2447  Mhz 11g          
Channel   2 : 2417  Mhz 11g          Channel   9 : 2452  Mhz 11g          
Channel   3 : 2422  Mhz 11g          Channel  10 : 2457  Mhz 11g          
Channel   4 : 2427  Mhz 11g          Channel  11 : 2462  Mhz 11g          
Channel   5 : 2432  Mhz 11g          Channel  12 : 2467  Mhz 11g          
Channel   6 : 2437  Mhz 11g          Channel  13 : 2472  Mhz 11g          
Channel   7 : 2442  Mhz 11g   

wlanconfig ath1 list active # активные каналы

Channel   1 : 2412  Mhz 11g          Channel   8 : 2447  Mhz 11g          
Channel   2 : 2417  Mhz 11g          Channel   9 : 2452  Mhz 11g          
Channel   3 : 2422  Mhz 11g          Channel  10 : 2457  Mhz 11g          
Channel   4 : 2427  Mhz 11g          Channel  11 : 2462  Mhz 11g          
Channel   5 : 2432  Mhz 11g          Channel  12 : 2467  Mhz 11g          
Channel   6 : 2437  Mhz 11g          Channel  13 : 2472  Mhz 11g          
Channel   7 : 2442  Mhz 11g

wlanconfig ath1 list caps

ath1=6782e00f<WEP,TKIP,AES,AES_CCM,TXPMGT,SHSLOT,SHPREAMBLE,TKIPMIC,WPA1,WPA2,BURST,WME>

wlanconfig ath1 list wme

        AC_BE cwmin  4 cwmax 10 aifs  2 txopLimit 2048
              cwmin  4 cwmax 10 aifs  2 txopLimit 2048
        AC_BK cwmin  4 cwmax 10 aifs  7 txopLimit   0
              cwmin  4 cwmax 10 aifs  7 txopLimit   0
        AC_VI cwmin  3 cwmax  4 aifs  1 txopLimit 3008
              cwmin  3 cwmax  4 aifs  2 txopLimit 3008
        AC_VO cwmin  2 cwmax  3 aifs  1 txopLimit 1504
              cwmin  2 cwmax  3 aifs  2 txopLimit 1504

Поменять режим нельзя, можно удалить VPA и создать новую (или добавить новую)

ifconfig ath0 down
wlanconfig ath0 destroy
wlanconfig ath0 create wlandev wifi0 wlanmode режим

# или (заметьте отсутствие цифры у ath)

wlanconfig ath create wlandev wifi0 wlanmode режим

Создание точки доступа в "отвязанном" режиме, зашита WEP:

wlanconfig ath0 create wlandev wifi0 wlanmode ap
iwconfig ath0 mode Master
iwconfig ath0 essid имя-сети [channel номер-канала] key ключ-26-цифр
iwconfig ath0 key open
ifconfig ath0 arp broadcast 192.168.171.255 netmask 255.255.255.0 192.168.171.1
[ip neigh add 192.168.171.2 lladdr 00:1a:89:f2:85:ea nud permanent dev ath0]
# либо на каждой станции настроить сеть вручную (адрес, маска, шлюз - 192.168.171.1, DNS), 
# либо на этом компьютере поднять DHCP и DNS
# включить маршрутизацию, если необходимо соединение дальше
echo 1 > /proc/sys/net/ipv4/ip_forward
# обратный маршрут на внешнем шлюзе
# обязательно назвать iptables зелёным червяком

Создание точки доступа в режиме моста для подключения беспроводных устройств к общему шлюзу (выходу в Интернет), к которому данный компьютер подключен через eth0 (в данном варианте не требуются дополнительные настройки ни на этом компьютере, ни на станциях - шлюз делает за нас всю работу), зашита WEP:

# создание точки доступа
wlanconfig ath0 create wlandev wifi0 wlanmode ap
iwconfig ath0 mode Master
iwconfig ath0 essid имя-сети [channel номер-канала|auto] key ключ-26-цифр
iwconfig ath0 key open
iwpriv ath0 bgscan 0 # не надо терять время на сканирование
iwpriv ath0 hide_ssid 1 # проходимцы пройдут мимо
iwpriv ath0 dtim_period ? # какой?
iwpriv ath0 doth 0 # мы дорогу не уступакем
iwpriv ath0 doth_pwrtgt 36 # 2*dBm
iwpriv ath0 ff 0 # не все станции это понимают
iwpriv ath0 burst 0 # не все станции это понимают
iwpriv ath0 dropunencrypted 1 # незашифрованные пакеты выкидывать сразу
athctrl [-i wifi0] -d метров # расстояние

# выключение eth0, если он был запущен ранее
#  kill - отключение dhclient
ip addr flush dev eth0
ifconfig eth0 down

# создание моста (требуется пакет bridge-utils - утилита brctl)
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 ath0
#brctl setfd br0 1 # разобраться с STP

# запуск и получение адресов
ifconfig ath0 up
ip -6 addr flush dev ath0
ifconfig eth0 up
ip -6 addr flush dev eth0
ifconfig br0 up
dhclient br0

Создание точки доступа и станции, (только в этом порядке!), компьютер через станцию может быть подключен к внешнему шлюзу одним из приведённых выше вариантов

wlanconfig ath0 create wlandev wifi0 wlanmode ap
wlanconfig ath1 create wlandev wifi0 wlanmode sta nosbeacon
iwconfig ath1 essid имя-клиентской-сети
# организация аутентификации для станции (iwconfig/wpa_supplicant)
ifconfig ath1 up
# подождать ассоциации, т.к. канал задаётся внешней точкой доступа
iwconfig ath0 essid имя-внешней-сети
# организация аутентификации для точки доступа (iwconfig, hostapd)
ifconfig ath0 up

Создание точки доступа и станции для получения повторителя с помощью одного устройства, компьютер через станцию может быть подключен к внешнему шлюзу одним из приведённых выше вариантов

wlanconfig ath0 create wlandev wifi0 wlanmode ap
wlanconfig ath1 create wlandev wifi0 wlanmode sta nosbeacon
iwconfig ath1 essid имя-сети
iwpriw ath1 wds 1
# организация аутентификации для станции (iwconfig/wpa_supplicant)
ifconfig ath1 up
# подождать ассоциации, т.к. канал задаётся внешней точкой доступа
iwconfig ath0 essid имя-сети
iwpriw ath0 wds 1
# организация аутентификации для точки доступа (iwconfig, hostapd)
ifconfig ath0 up

# создание моста (требуется пакет bridge-utils - утилита brctl)
brctl addbr br0
brctl addif br0 ath0
brctl addif br0 ath1
#brctl setfd br0 1 # разобраться с STP
ifconfig br0 up
dhclient br0

Создание 2 точек доступа с одним MAC

wlanconfig ath0 create wlandev wifi0 wlanmode ap -bssid
wlanconfig ath1 create wlandev wifi0 wlanmode ap -bssid

Создание станции Ad-Hoc (не должно быть других станций):

wlanconfig ath0 create wlandev wifi0 wlanmode adhoc
iwpriv ath0 mode 3
iwconfig ath0 mode ad-hoc
iwconfig ath0 essid имя-сети
iwconfig ath0 key s:ключ # WEP лучше, чем ничего
ifconfig ath0 arp broadcast 192.168.171.255 netmask 255.255.255.0 192.168.171.102
[route add default gw адрес-шлюза]
[vim /etc/resolv.conf]

Поддерживаемые стандарты безопасности:

Нестандартные команды устройства, выдаваемые с помощью iwpriv (почти для каждой команды установки параметра есть соответсвующая команда чтения параметра, начинаюаяся с "get_", возможно укороченная до 15 символов):

Управление антеннами в /proc/sys/dev/wifi0 (diversity, rxantenna, txantenna). Антенны нумеруются с 1. 0 - автоматический выбор, если ответ лучше принимается с другой антенны, то и передача переключается на неё.

Ограничение списка используемых каналов:

athchans [-i интерфейс] от-до

Утилита athctrl помогает настроить устройство (-i) на работу на указанном расстоянии (-d метров) от другого устройства, подбирая параметры передачи, ожидания и приёма (slottime, acktimeout, ctstimeout). Желательно установить одинаковые значения на всех станциях сети. Устарела - пытается писать в /proc/sys/dev/ath0 вместо /proc/sys/dev/wifi0/.

Утилита athkey позволяет добавлять и удалять (-d) ключи, хранящиеся в устройстве (-i интерфейс). Указывается индекс ключа (от 1 до 4), тип шифрования (wep, tkip, ocb, ccm, aes, ckip, none) и значение ключа (шестнадцатеричные цифры, 0x).

Утилиты получения статистики и отладки:

wlanctl-ng для стека wlan-ng

wlanctl-ng mibs (более 300 параметров, по большей части нереализованных и дублирующих друг друга)
wlanctl-ng wlan0 dot11req_mibget mibattribute=p80211_ifstate
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11CurrentChannel
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11StationID
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11PrivacyOptionImplemented
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11PowerManagementMode
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11DesiredSSID
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11DesiredBSSType
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11AuthenticationAlgorithm1
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11MACAddress
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11ReceivedFragmentCount
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11PHYType
wlanctl-ng wlan0 dot11req_mibget mibattribute=dot11NumberSupportedPowerLevels
wlanctl-ng wlan0 dot11req_mibget mibattribute=p2CreateIBSS
wlanctl-ng wlan0 dot11req_mibget mibattribute=p2PromiscuousMode
wlanctl-ng wlan0 dot11req_mibget mibattribute=p2NICSerialNumber
wlanctl-ng wlan0 dot11req_mibget mibattribute=p2ChannelList
wlanctl-ng wlan0 dot11req_mibget mibattribute=p2CurrentSSID
wlanctl-ng wlan0 dot11req_mibget mibattribute=p2CurrentBSSID
wlanctl-ng wlan0 dot11req_mibget mibattribute=p2CommsQuality
wlanctl-ng wlan0 dot11req_mibget mibattribute=p2CurrentTxRate
wlanctl-ng wlan0 dot11req_mibget mibattribute=p2SupportedDataRates

wlanctl-ng wlan0 dot11req_mibset mibattribute=p2LogEvents=true

wlanctl-ng commands

wlanctl-ng wlan0 dot11req_reset setdefaultmib=true
wlanctl-ng wlan0 dot11req_start ssid=test bsstype=any beaconperiod=? dtimperiod=? dschannel=12 cfpollable=true cfpollreq=false basicrate1=3 operationalrate1=3
wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
wlanctl-ng wlan0 lnxreq_autojoin ssid=default authtype=opensystem
wlanctl-ng wlan0 lnxreq_commsquality

wlancfg show wlan0 all

wireless-tools и Wireless Extensions

Wireless Extensions for Linux API предложен в 1997 году Jean Tourrilhes и предоставляет собой описание API ядра Linux для работы с беспроводными сетями (расширение к API по работе с сетью). Затрагивает утилиты управления устройствами беспроводных сетей (wireless-tools), ядро и драйверы.

Файл /proc/net/wireless предоставляет возможность получать статистику о текущих соединениях (нет соединения - нет статистики), пример:

Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
 wlan0: 0000    0     0     0        0      0      0      0      0        0

Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
  ath0: 0000    0.  -87.  -87.  1288238      0      0      0      0        0

Значения параметров:

Набор wireless-tools состоит из утилит:

Утилита iwlist позволяет узнать какие значения параметров поддерживает устройство:

Пример использования:

iwlist wlan0 scan

          Cell 03 - Address: 
                    ESSID:"бизнес"
                    Mode:Master
                    Channel:10
                    Frequency:2.457 GHz
                    Quality=30/64  Signal level=9/65  
                    Encryption key:on
                    IE: WPA Version 1
                        Group Cipher : TKIP 
                        Pairwise Ciphers (2) : TKIP CCMP 
                        Authentication Suites (1) : 802.1X  
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP 
                        Pairwise Ciphers (2) : TKIP CCMP 
                        Authentication Suites (1) : 802.1X  
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              12 Mb/s; 24 Mb/s; 36 Mb/s; 9 Mb/s; 18 Mb/s
                              48 Mb/s; 54 Mb/s
                    Extra:tsf=0000004527570110

iwlist key

wlan0     2 key sizes : 40, 104bits
          4 keys available :
                [1]: off
                [2]: off
                [3]: off
                [4]: off
          Current Transmit Key: [1]
          Authentication capabilities :
                WPA
                WPA2
                CIPHER TKIP
                CIPHER CCMP

ath0      3 key sizes : 40, 104, 128bits
          4 keys available :
                [1]: 1234-5678-9ABC-DEF0-1234-5678-9A (104 bits)
                [2]: off
                [3]: off
                [4]: off
          Current Transmit Key: [1]
          Security mode:open


iwlist power

ath0      Supported modes :
                        o Receive all packets (unicast & multicast)
                        o Receive Unicast only (discard multicast)
                        o Receive Multicast only (discard unicast)
          Fixed period  ;  min period:1.024ms
                           max period:67.1078s
          Fixed timeout ;  min timeout:1.024ms
                           max timeout:1.024s
          Current mode:off

iwlist txpower

ath0      8 available transmit-powers :
          0 dBm         (1 mW)
          6 dBm         (3 mW)
          8 dBm         (6 mW)
          10 dBm        (10 mW)
          12 dBm        (15 mW)
          14 dBm        (25 mW)
          16 dBm        (39 mW)
          18 dBm        (63 mW)
          Current Tx-Power:18 dBm       (63 mW)

iwlist event

ath0      Wireless Events supported :
          0x8B04 : Set Frequency/Channel (kernel generated)
          0x8B06 : Set Mode (kernel generated)
          0x8B15 : New Access Point/Cell address - roaming
          0x8B19 : Scan request completed
          0x8B1A : Set ESSID (kernel generated)
          0x8B2A : Set Encoding (kernel generated)
          0x8C02 : Custom driver event
          0x8C03 : Registered node
          0x8C04 : Expired node

iwlist auth

ath0      Authentication capabilities :
                WPA
                WPA2
                CIPHER-TKIP
                CIPHER-CCMP
          Current WPA version :
                disabled
          Current Key management :
                802.1x
                PSK
          Current Pairwise cipher :
                WEP-104
          Current Pairwise cipher :
                TKIP
          Current TKIP countermeasures : no
          Current Drop unencrypted : no
          Current Roaming control : no
          Current Privacy invoked : no

Утилита iwconfig позволяет посмотреть текущие настройки всех беспроводных устройств (вызов без параметров), посмотреть текущие настройки конкретного устройства (необходимо указать имя беспроводного интерфейса) или изменить один или несколько параметров, задав имя интерфейса, команду и параметр (не все драйверы поддерживают все параметры; предварительно необходимо выключить интерфейс (ifconfig down)):

Пример iwconfig без параметров:

wlan0     IEEE 802.11g  ESSID:"xxx"
          Mode:Managed  Frequency:2.452 GHz  Access Point: xxx
          Retry min limit:7   RTS thr:off   Fragment thr=2346 B   
          Encryption key:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

ath0      IEEE 802.11g  ESSID:""  Nickname:""
          Mode:Managed  Channel:0  Access Point: Not-Associated   
          Bit Rate:0 kb/s   Tx-Power:18 dBm   Sensitivity=1/1  
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=0/70  Signal level=-86 dBm  Noise level=-86 dBm
          Rx invalid nwid:1295194  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Подключение к точке доступа без WEP/WPA

iwlist wlan0 scan
ifconfig wlan0 down
iwconfig wlan0 mode Managed
iwconfig wlan0 essid имя-сети
iwconfig wlan0 channel auto
iwconfig wlan0 rate auto
iwconfig wlan0 key off
iwconfig wlan0 ap {any | MAC-точки-доступа}
ifconfig wlan0 up arp netmask 255.255.255.0 broadcast x.y.z.255 захваченный-адрес

восстановление ассоциации
iwconfig wlan0 ap {any | MAC-точки-доступа}

Утилита iwevent позволяет мониторить события, генерируемые драйвером (установление ассоциации, переключение частоты и т.д.; список см. по "iwlist event"):

12:19:19.642012   kis0     Set Frequency=2.422 GHz (Channel 3)
12:19:20.160170   kis0     Set Frequency=2.452 GHz (Channel 9)
...
12:20:52.074417   wlan0    Scan request completed
...

Утилита iwgetid выдаёт параметры текущей ассоциации (само наличие ассоциации не обещается, т.е. все параметры, включая MAC могут быть правильными, а ассоциации может не быть!):

Утилита iwpriv позволяет использовать нестандартные возможности драйвера. Вызов "iwpriv имя-интерфейса" выдаёт список поддерживаемых возможностей. Ключ "--all" вызывает выполнение всех команд без аргументов (предполагается, что это команды чтения).

Утилита iwspy выдаёт статистику о качестве связи с указанными адресами. Требуется наличие ассоциации. Изменяется при каждом пакете.

iw

iw - утилита для управления стеком mac80211. Недоделано.

Создание интерфейса в режиме мониторинга:

iw dev wmaster0 interface add moni0 type monitor

wpa_supplicant

wpa_supplicant 0.6.3 - пакет, обеспечивающий функционал WPA, WPA2 (IEEE 802.11i / RSN) и IEEE 802.1X для станции (для точки доступа соответствующий функционал реализован в hostapd). Поддерживаемые ОС: Linux, BSD, Mac OS X, MS Windows. В состав пакета входит сервис wpa_supplicant, утилиты управления wpa_cli (текстовая) и wpa_gui (QT), От драйвера требуется поддержка Linux Wireless Extensions v19 с расширением WPA/WPA2 (Host AP, Linuxant, Hermes, madwifi, ndiswrapper, ipw2100. ipw2200). Поддерживаемые стандарты:

Поддерживаемые варианты EAP (в файле eap_testing.txt имеется матрица совместимости с десятком комерческих RADIUS серверов):

Роль wpa_supplicant в процессе аутентификации и управлении ключами:

  1. wpa_supplicant запрошивает сканирование BSS у драйвера
  2. wpa_supplicant выбирает один из BSS
  3. wpa_supplicant запрашивает у драйвера ассоциацию с выбранным BSS
  4. получение главного ключа
  5. wpa_supplicant согласует набор ключей с аутентификатором (точкой доступа)
  6. wpa_supplicant создаёт набор ключей для дальнейшего обмена данными

wpa_supplicant может использовать OpenSSL для защиты ключевой информации в wpa_supplicant.conf.

В состав Fedora 9 входят пакеты wpa_supplicant и wpa_supplicant-gui.

Сборка 0.6.3 под FC6:

wpa_supplicant запускается как обычный сервис (chkcongig, service), ключи берутся из /etc/sysconfig/wpa_supplicant (INTERFACES, DRIVERS, OTHER_ARGS="-u -f /var/log/wpa_supplicant.log"). Всгда в фоновом (-B) режиме и файлом настройки /etc/wpa_supplicant/wpa_supplicant.conf. Журнал записывается в /var/log/wpa_supplicant.log, настройки для чистки в /etc/logrotate.d/wpa_supplicant. Демон wpa_supplicant требует наличия интерфейса до запуска. Реагирует на сигнал HUP перечитыванием конфигурационных файлов. Ключи запуска:

Утилита wpa_passphrase необходима для включения в wpa_supplicant.conf зашифрованных паролей. Она вычисляет PSK из SSID и парольной фразы. Получившийся 256-битный PSK надо записать в wpa_supplicant.conf.

Конфигурационный файл wpa_supplicant.conf (нигде явно не описан!) состоит из глобальных параметров (по одному на строке, комментарий начинается с '#') и блоков описаний возможных сетей (по одному блоку на SSID). wpa_supplicant выбирает наиболее подходящую сеть самостоятельно по порядку описания, уровню защиты и уровню сигнала. Все имена файлов - абсолютные. wpa_supplicant поднимает интерфейс, но об адресах и маршрутах необходимо озаботиться самостоятельно (например, DHCP). Описание блока начинается со строки "network={" и завершается строкой "}". Глобальные параметры:

Формат описания блока сети авторы предлагают посмотреть в примерах. Некоторые параметры:

Если wpa_supplicant не находит в своём конфигурационном файле пароля или подобной информации, то он посылает запрос всем активным клиентам вида "CTRL-REQ-тип-идентификатор:текст", где тип определяет чего хотят от оператора - IDENTITY, PASSWORD млм OTP (one-time-password). Оператор может предоставить недостающую информацию командами identity, password или otp.

Какой-то добрый человек пометил /usr/sbin/wpa_supplicant как system_u:object_r:NetworkManager_exec_t:s0, которому отказал в праве записывать в /tmp, в результате к нему нельзя подключиться, пришлось восстанвливать справедливость:

setfattr -n security.selinux -v "system_u:object_r:bin_t:s0\000" /usr/sbin/wpa_supplicant

Текстовая утилита управления wpa_cli, ключи:

Графическая утилита управления wpa_gui (QT, ключи -p и -i) представляет базовые возможности посмотреть статуст и ввести пароль.

Пример настройки WPA2-PSK (madwifi или rtl8187)

hostapd - аутентификатор IEEE 802.1X, WPA, WPA2 и EAP

hostapd 0.5.10 - пакет, обеспечивающий функционал IEEE 802.1X, WPA, WPA2 и EAP аутентификатора, RADIUS клиента и EAP сервера для точки доступа и RADIUS сервера для сервера аутентификации (для станции соответствующий функционал реализован в wpa_supplicant). Поддерживаемые ОС: Linux (драйвера Host AP, madwifi, Prism54) и FreeBSD (net80211). В состав пакета входит сервис hostapd, утилита управления hostapd_cli (текстовая), Поддерживаемые стандарты:

Поддерживаемые варианты EAP (в файле eap_testing.txt имеется матрица совместимости с десятком комерческих RADIUS серверов):

Сборка 0.5.10 под Fedora 9:

Конфигурационный файл, по обычаю, имеет имя /etc/hostapd.conf, описание даётся в виде примера в поставке. Имя конфигурационного файла передаётся сервису в качестве параметра. Если необходимо поддерживать несколько станций в одном компьютере, то необходимо составить несколько конфигурационных файлов и передать их имена в качестве параметров. Необходимо скопировать образец в /etc/ и отредактировать его.

Встроенный IEEE 802.1X сервер (опции ieee8021x и minimal_eap) предназначен только для тестирования (почему?), для реальной эксплуатации желательно применять внешний RADIUS сервер (авторы рекомендуют FreeRADIUS), описываемый параметрами auth_server_addr, auth_server_port, auth_server_shared_secret, ieee8021x, own_ip_addr. Встроенный сервер может работать RADIUS сервером для других аутентификаторов.

Пример настройки для режима WPA2-PSK с драйвером madwifi и использованием моста:

# описание устройства
interface=ath0
bridge=br0
driver=madwifi
# уровень информационных сообщений на syslog и stdout
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
debug=0
# информация о состоянии создаётся по SIGUSR1
dump_file=/tmp/hostapd.dump
# каталог для управляющих сокетов
ctrl_interface=/var/run/hostapd
# параметры 802.11
ssid=имя-сети
hw_mode=g
#channel=0
...
# ACL по MAC адресам станций (для madwifi не работает)
# 0 - принимать, если не занесена в /etc/hostapd.deny (параметр accept_mac_file)
# 1 - не принимать, если не занесена в /etc/hostapd.accept (параметр deny_mac_file)
# 2 - проверять по hostapd.deny и hostapd.accept, про не найденные спрашивать RADIUS сервер
macaddr_acl=режим
# 802.1x разрешает только аутентификацию открытых систем
auth_algs=1
# 0 - обслуживать пробы без указания SSID
# 1 - не посылать SSID в маячках и выбрасывать пробы без своего SSID
# 2 - аналогично, но указывать длину SSID в маячках
ignore_broadcast_ssid=0
...
# отключаю WMM, иначе аутентификация вываливается по истечению времени за 1 мс
wme_enabled=0
...
ieee8021x=0
# не использовать встроенный EAP сервер
eap_server=0
# не использовать внешний RADIUS сервер
own_ip_addr=127.0.0.1
# не изображать из себя RADIUS сервер
#radius_server_clients=
# настройки WPA2-PSK
wpa=2
# задание PSK
wpa_psk=64 шестнадцатеричные цифры
#  или
wpa_passphrase=от 8 до 63 символов, которые преобразуются в PSK с использованием SSID
#  или (файл в каждой строчке содержит MAC адрес (0 - для всех), пробел, PSK или парольную фразу)
wpa_psk_file=/etc/hostapd.wpa_psk
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP

Пример настройки для режима WPA2-EAP (встроенный сервер EAP, EAP-TLS) с драйвером madwifi и использованием моста (на каждую станцию необходимо установить сертификат центра сертификации (root) для проверки подлинности клиентом сервера аутентификации и сертификат клиента с правами sign для проверки клиента сервером аутентификации):

# описание устройства
interface=ath0
bridge=br0
driver=madwifi
# уровень информационных сообщений на syslog и stdout
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
debug=0
# информация о состоянии создаётся по SIGUSR1
dump_file=/tmp/hostapd.dump
# каталог для управляющих сокетов
ctrl_interface=/var/run/hostapd
# параметры 802.11
ssid=имя-сети
hw_mode=g
#channel=0
...
# 802.1x разрешает только аутентификацию открытых систем
auth_algs=1
# 0 - обслуживать пробы без указания SSID
# 1 - не посылать SSID в маячках и выбрасывать пробы без своего SSID
# 2 - аналогично, но указывать длину SSID в маячках
ignore_broadcast_ssid=0
...
# отключаю WMM, иначе аутентификация вываливается по истечению времени за 1 мс
wme_enabled=0
...
ieee8021x=1

eapol_version=1 или 2?
eap_message=identity-сервера

# использовать встроенный EAP сервер
eap_server=1
# список пользователей, на каждой строке через пробел
#  имя (identity) в кавычках, 
#    может быть символ '*' для анонимной аутентификации первой фазы EAP-PEAP или EAP-TTLS
#    может быть символ '*' для приёма сертификата с любым CN в методе EAP-TLS
#  методы EAP через запятую
#  пароль в кавычках 
#    не требуется для EAP-TLS, EAP-SIM, EAP-AKA и первой фазы EAP-PEAP или EAP-TTLS
#    для MSCHAP и MSCHAPv4 можно в виде hash:цифры (NtPasswordHash)
#  флаг в виде "[2]
#    указывает, что в строке описываются параметры второй фазй аутентификации,
#    если используется двухслойная аутентификация EAP-PEAP или EAP-TTLS
eap_user_file=/etc/hostapd.eap_user
# сертификат центра сертификации
ca_cert=/etc/hostapd.ca
# сертификат сервера
server_cert=/etc/hostapd.crt
# открытый ключ сервера (права доступа!)
private_key=/etc/hostapd.key

check_crl=по необходимости

# не использовать внешний RADIUS сервер
own_ip_addr=127.0.0.1
# не изображать из себя RADIUS сервер
#radius_server_clients=
# настройки WPA2-PSK
wpa=2
# не задавать PSK
#wpa_psk=64 шестнадцатеричные цифры
#wpa_passphrase=от 8 до 63 символов, которые преобразуются в PSK с использованием SSID
#wpa_psk_file=/etc/hostapd.wpa_psk
wpa_key_mgmt=WPA-EAP
wpa_pairwise=CCMP

Создание точки доступа в режиме моста для подключения беспроводных устройств к общему шлюзу (выходу в Интернет), к которому данный компьютер подключен через eth0 (в данном варианте не требуются дополнительные настройки ни на этом компьютере, ни на станциях - шлюз делает за нас всю работу), зашита WPA2-PSK:

# создание точки доступа
wlanconfig ath0 create wlandev wifi0 wlanmode ap
iwconfig ath0 mode Master
iwconfig ath0 essid "имя сети"
iwconfig ath0 key open
iwpriv ath0 bgscan 0 # не надо терять время на сканирование
#iwpriv ath0 hide_ssid 1 # проходимцы пройдут мимо
iwpriv ath0 doth 0 # мы дорогу не уступакем
iwpriv ath0 doth_pwrtgt 36 # 2*dBm
iwpriv ath0 ff 0 # не все станции это понимают
iwpriv ath0 burst 0 # не все станции это понимают
iwpriv ath0 dropunencrypted 1 # незашифрованные пакеты выкидывать сразу
athctrl -d метров # расстояние

# выключение eth0, если он был запущен ранее
#  kill - отключение dhclient
ip addr flush dev eth0
ifconfig eth0 down

# создание моста (требуется пакет bridge-utils - утилита brctl)
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 ath0
#brctl setfd br0 1 # разобраться с STP

# запуск и получение адресов
ifconfig ath0 up
ip -6 addr flush dev ath0
ifconfig eth0 up
ip -6 addr flush dev eth0
ifconfig br0 up
dhclient br0

hostapd -B /etc/hostapd.conf

# не забыть обозвать iptables зелёным червяком (пакеты из br0 в br0)

Ключи hostapd:

Утилита hostapd_cli позволяет управлять hostapd (текстовый интерфейс). Ключи запуска:

Команды hostapd_cli:

Проблемы при одновременной работе wpa_supplicant и hostapd: клиенты птаются ассоциироваться повторно. что ведёт к потере аутентификации.

Сканеры, анализаторы трафика и средства взлома

wellenreiter - сканер Wi-Fi сети (GTK/Perl, поддержка карт Prism2 , Lucent и Cisco, заброшен в 2003).

kismet - сканирование, захват пакетов.

WEPCrack - программа на perl, позволяет получать WEP ключ (40 и 104 бита) из достаточного количества собранных (libpcap) зашифрованных пакетов.

AirSnort - программа с графическим интерфейсом (GTK), позволяет собирать (или брать собранные libpcap) пакеты со слабыми IV, чтобы получать WEP ключ (40 и 104 бита). Предположительно требуется от 5 до 10 миллионов пакетов.

aircrack-ng (ptw - взлом WEP за несколько минут; словарная атака на WAP).

coWPAtty (словарная атака на WPA).

Mognet - анализатор трафика (Java).

Kismet

Kismet

Пакеты kismet и kismet-extra (утилита gpsmap) имеются в репозитарии Fedora (версия 4 в FC6 и версия 5 в F9).

Пакет kismet (2008-05-R1):

Ручная сборка (обязательно иметь системный libpcap-devel, раньше прикладывался к kismet):

Начальная настройка и запуск:

Накопленные SSID и прочее складываются в /var/lib/kismet/, а также в ~/.kismet.

Ключи сервера: