Network configuration (Русский)/Wireless (Русский)

From ArchWiki
Jump to navigation Jump to search
Состояние перевода: На этой странице представлен перевод статьи Network configuration/Wireless. Дата последней синхронизации: 09 декабря 2019. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Основную статью по настройке сети можно найти на странице Настройка сети.

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

В разделе #iw описана ручная настройка беспроводного интерфейса / локальной сети посредством утилиты iw. В статье Настройка сети#Сетевые менеджеры вы найдёте список программ (в том числе и с графическим интерфейсом), которые используются для автоматического управления сетевым интерфейсом. В них реализована поддержка сетевых профилей, что бывает удобно при частой смене беспроводных сетей (как это бывает, например, с ноутбуками).

Contents

Драйвер устройства

Стандартное ядро Arch Linux имеет модульную архитектуру, поэтому многие драйверы для аппаратного обеспечения расположены на жёстком диске и доступны как модули. При загрузке менеджер устройств udev определяет аппаратное обеспечение вашего компьютера и загружает соответствующие модули (драйверы), в результате чего создаётся сетевой интерфейс.

Некоторым беспроводным устройствам для работы помимо драйвера необходима ещё и прошивка. В пакете linux-firmware содержится большое количество образов прошивок, однако проприетаные прошивки в него не входят и должны устанавливаться отдельно. Подробное описание установки дано в разделе #Установка драйвера/прошивки.

Примечание: Если нужный модуль не был загружен менеджером udev при старте системы, просто загрузите его вручную. Иногда udev может загружать более одного драйвера для устройства, что приведёт к конфликту и помешает успешному конфигурированию. В этом случае запретите загрузку ненужного модуля.

Проверка состояния драйвера

Чтобы проверить, загрузился ли драйвер сетевой карты, посмотрите на вывод команд lspci -k или lsusb -v (в зависимости от того, подключена карта по шине PCI(e) или через USB-порт). Вы должны увидеть используемые драйверы ядра, например:

$ lspci -k
06:00.0 Network controller: Intel Corporation WiFi Link 5100
	Subsystem: Intel Corporation WiFi Link 5100 AGN
	Kernel driver in use: iwlwifi
	Kernel modules: iwlwifi
Примечание: Если ваша сетевая карта является USB-устройством, выполнение dmesg | grep usbcore должно выдать что-то похожее на usbcore: registered new interface driver rtl8187.

Также проверьте вывод команды ip link, чтобы убедиться, что сетевой интерфейс был создан; обычно название беспроводного интерфейса начинается с буквы "w", например, wlp2s1. Затем включите интерфейс командой

# ip link set интерфейс up

Например, если интерфейс называется wlan0, команда примет вид ip link set wlan0 up.

Если вы получили сообщение об ошибке SIOCSIFFLAGS: No such file or directory (Нет такого файла или каталога), то скорее всего для функционирования вашего беспроводного устройства необходима соответствующая прошивка.

Проверьте сообщения ядра на предмет загрузки прошивки:

$ dmesg | grep firmware
[   7.148259] iwlwifi 0000:02:00.0: loaded firmware version 39.30.4.1 build 35138 op_mode iwldvm

Если там нет интересующей вас информации, проверьте сообщения подробного вывода, относящиеся к определённому вами ранее модулю (в примере ниже iwlwifi):

$ dmesg | grep iwlwifi
[   12.342694] iwlwifi 0000:02:00.0: irq 44 for MSI/MSI-X
[   12.353466] iwlwifi 0000:02:00.0: loaded firmware version 39.31.5.1 build 35138 op_mode iwldvm
[   12.430317] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled
...
[   12.430341] iwlwifi 0000:02:00.0: Detected Intel(R) Corporation WiFi Link 5100 AGN, REV=0x6B

Если модуль ядра загрузился успешно и интерфейс запущен, можете пропустить следующий раздел.

Установка драйвера/прошивки

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

Если ваша беспроводная карта есть в одном из списков выше, перейдите в раздел #Решение проблем с драйверами и прошивками. В нём содержатся инструкции по установке драйверов и прошивок на некоторые редкие беспроводные карты. Затем проверьте состояние драйвера снова.

Если вашей беспроводной карты нет в списках, то скорее всего она поддерживается только в Windows (некоторые Broadcom, 3com и др.). В этом случае вы можете воспользоваться #ndiswrapper.

Утилиты

Управление беспроводными сетевыми интерфейсами, как и всеми прочими, осуществляется посредством входящей в пакет iproute2 утилиты ip.

Для настройки беспроводного соединения необходим определённый набор программ. Для этих целей подойдет либо сетевой менеджер, либо один из следующих пакетов:

Утилита Пакет WEXT nl80211 WEP WPA/WPA2 Archiso [1]
wireless_tools1 wireless_tools Да Нет Да Нет Да
iw iw Нет Да Да Нет Да
WPA supplicant wpa_supplicant Да Да Да Да Да
iwd iwd Нет Да Да Да Да
  1. Устарела.

Имейте в виду, что некоторые сетевые карты поддерживают только WEXT.

Сравнение iw и wireless_tools

Ниже представлено сравнение некоторых команд утилит iw и wireless_tools. Дополнительные примеры можно найти в статье о замене iwconfig на iw.

Команда iw Команда wireless_tools Описание
iw dev wlan0 link iwconfig wlan0 Получение состояния соединения.
iw dev wlan0 scan iwlist wlan0 scan Сканирование доступных точек доступа.
iw dev wlan0 set type ibss iwconfig wlan0 mode ad-hoc Установка режима работы ad-hoc.
iw dev wlan0 connect ваш_essid iwconfig wlan0 essid ваш_essid Подключение к открытой сети.
iw dev wlan0 connect ваш_essid 2432 iwconfig wlan0 essid ваш_essid freq 2432M Подключение к открытой сети с указанием канала.
iw dev wlan0 connect ваш_essid key 0:ваш_ключ iwconfig wlan0 essid ваш_essid key ваш_ключ Подключение к сети с WEP шифрованием шестнадцатеричным ключом.
iwconfig wlan0 essid ваш_essid key s:ваш_ключ Подключение к сети с WEP шифрованием ASCII-ключом.
iw dev wlan0 set power_save on iwconfig wlan0 power on Включение режима энергосбережения.

iw

Примечание:
  • Большая часть представленных ниже команд должна выполняться с правами root. При выполнении от лица обычного пользователя некоторые команды (например, iw list) завершат работу без ошибки, но сгенерированный ими вывод либо окажется некорректным, либо будет отсутствовать вовсе.
  • В зависимости от вашего аппаратного обеспечения и типа шифрования некоторые перечисленные ниже шаги могут оказаться не нужны. Некоторые сетевые карты требуют включения интерфейса и/или поиска точки доступа перед привязкой к ней и получением IP-адреса. Возможно, придётся немного поэкспериментировать. Например, пользователи с WPA/WPA2 могут попытаться активировать беспроводную сеть напрямую с шага #Соединение с точкой доступа.

В примерах ниже беспроводное устройство с названием интерфейс устанавливает соединение с точкой доступа Wi-Fi ваш_essid. Замените названия на свои.

Определение имени интерфейса

Совет: В официальной документации утилиты iw можно найти дополнительные примеры.

Чтобы узнать название беспроводного интерфейса, выполните:

$ iw dev

Название интерфейса будет указано после слова "Interface". Например, wlan0.

Определение состояния интерфейса

Чтобы проверить состояние соединения, выполните:

$ iw dev интерфейс link

Статистическую информацию (количество tx/rx байт, мощность сигнала и т.д.) можно получить, введя команду:

$ iw dev интерфейс station dump

Включение интерфейса

Совет: В большинстве случаев выполнять эти действия не требуется.

Некоторые карты требуют включения интерфейса перед использованием iw или wireless_tools.

# ip link set интерфейс up
Примечание: Если получена ошибка вида RTNETLINK answers: Operation not possible due to RF-kill, убедитесь, что аппаратный переключатель находится в положении on. Дополнительную информацию вы найдёте в разделе #Предостережения Rfkill.

Чтобы убедиться, что интерфейс включён, выполните:

$ ip link show интерфейс
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000 link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff

На включённое состояние интерфейса указывает слово UP в BROADCAST,MULTICAST,UP,LOWER_UP, а не надпись state DOWN.

Обнаружение точек доступа

Чтобы просмотреть список доступных точек доступа, выполните:

# iw dev интерфейс scan | less
Примечание: Если в результате появилось сообщение Interface does not support scanning (Интерфейс не поддерживает сканирование), то скорее всего вы забыли установить прошивку. В некоторых случаях это сообщение может появиться, если вы выполнили команду не от имении root.
Совет: В зависимости от местоположения вам может понадобиться настроить правильное имя управляющего домена, чтобы увидеть все доступные сети.

Обратите внимание на следующие поля:

  • SSID: название сети.
  • Signal: мощность беспроводного излучения в единицах dBm (например, от -100 до 0). Более близкие к нулю значения означают лучший сигнал. На основании отображаемой мощности можно получить представление о покрытии сети.
  • Security: напрямую не указывается; проверьте строку, которая начинается с capability. Если там содержится указание Privacy, например, capability: ESS Privacy ShortSlotTime (0x0411), то ваша сеть как-то защищена.
    • Если вы видите информационный блок RSN, то сеть защищена протоколом Robust Security Network, также известным как WPA2.
    • Если вы видите информационный блок WPA, то сеть защищена протоколом Wi-Fi Protected Access.
    • В блоках RSN и WPA может быть указана следующая информация:
      • Group cipher: принимает значения TKIP, CCMP, both, others.
      • Pairwise ciphers: принимает значения TKIP, CCMP, both, others. Может отличаться от значения в Group cipher.
      • Authentication suites: принимает значения PSK, 802.1x, others. Для домашнего маршрутизатора вы скорее всего обнаружите здесь значение PSK (то есть пароль). В университетах вероятнее всего будет сеть 802.1x, что требует логин и пароль. Тогда вам потребуется узнать, какое используется управление ключами (например, EAP), и какой способ инкапсуляции (например, PEAP). Подробную информацию можно найти в разделе #WPA2 Enterprise и статье Wikipedia:Authentication protocol.
    • Если вы не видите ни RSN, ни WPA, но есть раздел Privacy, то используется защитный протокол WEP.

Выбор режима работы

Возможно, будет необходимо выбрать подходящий режим работы беспроводной карты. Например, если вы хотите подключиться к сети ad-hoc, то нужно установить режим работы ibss:

# iw dev интерфейс set type ibss
Примечание: Смена режима работы на некоторых картах может потребовать отключения беспроводного интерфейса (ip link set интерфейс down).

Соединение с точкой доступа

Необходимо привязать устройство к точке доступа и ввести ключ в зависимости от типа шифрования:

  • Без шифрования
    # iw dev interface connect "ваш_essid"
  • WEP
    • С использованием шестнадцатеричного ключа (формат ключа определится автоматически, поскольку WEP-ключ имеет фиксированную длину):
      # iw dev интерфейс connect "ваш_essid" key 0:your_key
    • С использованием ASCII-ключа, указав третий ключ в качестве ключа по умолчанию (ключи нумеруются с нуля, всего возможно до четырёх ключей):
      # iw dev интерфейс connect "ваш_essid" key d:2:your_key

Вне зависимости от использованного способа, проверьте соединение:

# iw dev интерфейс link

Wi-Fi Protected Access

WPA2 Personal

WPA2 Personal, или WPA2-PSK — одна из реализаций технологии Wi-Fi Protected Access.

Выполнить вход в сеть WPA2 Personal можно посредством утилит WPA supplicant или iwd, а также с помощью сетевого менеджера. Если вы вошли в данную сеть впервые, то для создания нормально функционирующего соединения необходимо выполнить привязку IP-адреса(-ов) и маршрутов либо вручную, либо с помощью DHCP-клиента.

WPA2 Enterprise

WPA2 Enterprise — ещё одна реализация технологии Wi-Fi Protected Access. Она предлагает лучшую безопасность и управление ключами по сравнению с WPA2 Personal, а также дополнительную функциональность корпоративного типа вроде VLAN и NAP. Для работы этой технологии требуется внешний аутентификационный сервер, RADIUS, обрабатывающий попытки аутентификации пользователей. Это отличает Enterprise-режим от режима Personal, которому не требуется ничего кроме маршрутизатора или точки доступа с одним паролем для всех пользователей.

Корпоративный (Enterprise) режим осуществляет подключение пользователей к сети посредством имени пользователя и пароля и/или цифрового сертификата. Поскольку каждый пользователь обладает уникальным динамическим ключом шифрования, это также позволяет предотвратить отслеживание пользователей в беспроводной сети и усилить шифрование.

Ниже описана настройка сетевых клиентов, соединяющихся с беспроводной точкой доступа в режиме WPA2 Enterprise. Информацию о настройке самой точки доступа можно найти в статье Software access point#RADIUS.

Примечание: Корпоративный режим требует более сложной настройки клиента, в то время как режим Personal требует только введения пароля по запросу. Клиентам скорее всего придется установить CA-сертификат сервера (плюс сертификаты пользователей при использовании EAP-TLS), а затем вручную настроить безопасность и аутентификацию по протоколу 802.1X.

Сравнение протоколов сведено в таблицу.

Важно: Существует возможность использовать WPA2 Enterprise без проверки CA-сертификата сервера, однако использовать её не стоит. Без аутентификации точки доступа соединение может стать объектом атаки "человек посередине" ("man-in-the-middle"). Хотя "рукопожатия" обычно зашифрованы, передача пароля чаще всего производится открытым текстом или посредством ненадёжного протокола #MS-CHAPv2. В результате клиент может послать пароль чужой точке доступа, которая станет выполнять роль посредника (proxy) в соединении, прослушивая весь передаваемый через неё трафик.

eduroam

eduroam — международный роуминговый сервис на основе WPA2 Enterprise для лиц, занятых в сфере научно-исследовательской деятельности, высшего образования и дополнительного профессионального образования.

Примечание:
  • Перед применением любых настроек, предложенных в этом разделе, рекомендуется сначала проверить их со специалистами вашего учреждения. Предложенные здесь профили настроек предлагаются безо всяких гарантий на предмет работоспособности или соответствия каким-либо требованиям безопасности.
  • При хранении профилей соединения в незашифрованном виде рекомендуется оставить только доступ на чтение для root, выполнив команду # chmod 600 профиль.
Совет: Настройки для утилит NetworkManager и WPA supplicant можно сгенерировать с помощью eduroam Configuration Assistant Tool.

Ручная/автоматическая настройка

  • WPA supplicant настраивается напрямую в его файле настроек или посредством интерфейса; используется вместе с клиентом DHCP. Примеры настроек приведены в файле /usr/share/doc/wpa_supplicant/wpa_supplicant.conf.
  • NetworkManager может генерировать профили WPA2 Enterprise с помощью графических интерфейсов. Утилиты nmcli и mntui эту возможность не поддерживают, но работают с готовыми профилями.
  • ConnMan требует создания отдельного файла настроек перед соединением с беспроводной сетью. Подробности можно найти в руководстве connman-service.config(5) и в статье Connman#Connecting to eduroam.
  • netctl может использовать настройки WPA supplicant посредством блоков WPAConfigSection=. Детали вы найдёте в руководстве netctl.profile(5).
Важно: В настройках netctl особые правила использования кавычек: обратите внимание на раздел SPECIAL QUOTING RULES в netctl.profile(5).
Совет: Можно разрешить произвольный сертификат, добавив строку 'ca_cert="/path/to/special/certificate.cer"' в блоке WPAConfigSection.

Проблемы

MS-CHAPv2

Беспроводные сети WPA2-Enterprise, полагающиеся на аутентификацию MSCHAPv2 type-2 с использованием PEAP иногда требуют установки pptpclient помимо стандартного ppp. netctl, однако, работает "из коробки" без ppp-mppe. В любом случае, использование MSCHAPv2 не рекомендуется из-за ненадежности этого протокола, но другого варианта часто просто нет.

Советы и рекомендации

Соответствие регламентам

Регулятивный домен (regulatory domain) — страны, совместно использующие общий регламент радиосвязи, определённый одним из регулятивных органов (FCC в США, ETSI для стран Европы и т.д.). С помощью параметра regdomain драйвер беспроводной сетевой платы настраивается в соответствии с местными законами. Regdomain использует двухбуквенные коды стран в соответствии с ISO 3166-1 alpha-2. Например, regdomain для США обозначается "US", для России — "RU", и т.д.

Regdomain определяет доступность беспроводных каналов. Так, на частоте 2.4GHz разрешено использовать каналы 1-11 в США, 1-14 — в Японии, и каналы 1-13 в большей части остального мира. На частоте 5GHz правила доступа к каналам несколько сложнее. В Википедии можно найти подробную информацию о доступности каналов: [1], [2].

Принадлежность к домену также определяет предельное значение эквивалентной изотропно-излучаемой мощности (Equivalent Isotropically Radiated Power, EIRP) беспроводных устройств. Это значение определяет мощность сигнала и измеряется в единицах дБм или мВт. На частоте 2.4GHz максимальное значение мощности составляет 30дБм в США и Канаде, 20дБм в большинстве стран Европы, и 20-30дБм в остальном мире. На частоте 5GHz максимумы обычно выше. Допустимые значения мощности можно найти в этой базе данных (значения дБм во втором наборе скобок в каждой линии).

В некоторых случаях может быть полезно указать неверный regdomain — например, чтобы получить воможность осуществлять передачу через неиспользуемый канал, если остальные каналы перегружены, или чтобы повысить мощность и, как следствие, дальность передачи. Однако делать это не рекомендуется, поскольку это приведёт к нарушению местного законодательства и может нарушить работу других радио-устройстств.

Для настройки regdomain установите пакет crda и перезагрузитесь, чтобы перезапустить модуль cfg80211 и все относящиеся к нему драйвера. Проверьте лог загрузки, чтобы убедиться, что CRDA был запущен модулем cfg80211:

$ dmesg | grep cfg80211

Назначьте regdomain (например, для США):

# iw reg set US

И проверьте настройки:

$ iw reg get
Примечание: По умолчанию ваше устройство может быть настроено на "страну 00", которая означает условный "мировой домен" и содержит обобщённые настройки. Если изменить этот параметр не удаётся, то скорее всего причиной неправильная настройка CRDA.

В некоторых случаях настройку regdomain изменить не получится. В некоторых устройствах параметр домена зашит в прошивку/EEPROM, что ограничивает поведение устройства. В данном случае изменение домена в ПО может только ужесточить ограничения, но не ослабить их. Например, китайское (CN) устройство может быть настроено на домен US, но поднять максимум EIRP с 20дБм до разрешённого в США значения 30дБм не получится.

Чтобы проверить, задан ли домен в прошивке устройства Atheros, выполните команду:

$ dmesg | grep ath:

Для других чипсетов в качестве паттерна поиска можно указать "EEPROM", "regdomain" или просто название драйвера устройства.

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

$ iw list | grep -A 15 Frequencies:

Постоянная настройка выполняется с помощью раскомментирования нужного домена в файле /etc/conf.d/wireless-regdom.

WPA supplicant также может управлять доменом посредством строки country= в файле /etc/wpa_supplicant/wpa_supplicant.conf

В модуле ядра cfg80211 можно настроить домен, добавив опцию options cfg80211 ieee80211_regdom=EU. Это часть старой реализации технологии регулятивного домена.

Дополнительную информацию по настройке и использованию регулятивного домена можно найти в документации wireless.kernel.org.

Предостережения Rfkill

Во многих ноутбуках присутствует аппаратный переключатель (или кнопка) питания беспроводной карты, однако она может быть также заблокирована и ядром. Этим можно управлять через rfkill. Используйте rfkill, чтобы посмотреть текущий статус:

# rfkill list
0: phy0: Wireless LAN
	Soft blocked: yes
	Hard blocked: yes

Если карта заблокирована аппаратно (hard blocked), используйте переключатель (кнопку), чтобы разблокировать её. Если же карта заблокирована не аппаратно, a программно (soft blocked), используйте следующую команду:

# rfkill unblock wifi
Примечание: Возможно, при нажатии аппаратной кнопки карта из состояния hard-blocked и soft-unblocked перейдёт в состояние hard-unblocked и soft-blocked (т.е. бит soft-blocked внезапно поменяет значение). Это можно исправить, отрегулировав некоторые опции модуля ядра rfkill.

Включение/выключение беспроводных карт посредством аппаратных переключателей происходит с помощью модулей ядра. При выходе новых моделей сетевых карт их драйвера могут отсутствовать в последнем стабильном релизе ядра. В этом случае стоит поискать информацию в багтрекере ядра и сообщить название модели сопроводителю соответствующего модуля, если этого ещё никто не сделал.

По ссылке можно найти дополнительную информацию о Rfkill.

Энергосбережение

Смотрите раздел Энергосбережение#Сетевые интерфейсы.

Решение проблем

В этом разделе содержатся основные рекомендации по решению проблем, не связанных непосредственно с драйверами и прошивками. Для получения такой информации смотрите следующий раздел #Решение проблем с драйверами и прошивками.

Временный доступ к сети Интернет

Если с сетевой платой возникли проблемы и нужен доступ в сеть Интернет, например, чтобы загрузить определённое ПО или задать вопрос на форумах, можно раздать интернет на компьютер с Android-смартфона посредством USB-кабеля. В статье Android tethering#USB модем вы найдёте поднобную информацию по этому вопросу.

Просмотр логов

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

$ dmesg -w

непосредственно перед попыткой беспроводной привязки (association).

Если вы используете какую-то утилиту для управления сетью, то же самое можно сделать с помощью systemd:

# journalctl -f

Связанные с беспроводными устройствами ошибки часто сопровождаются словом deauthentication и кодом причины (reason), например:

wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)

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

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

Не удалось получить IP адрес

  • Если получение IP адреса неоднократно не удаётся при использовании клиента по умолчанию dhcpcd, попробуйте установить и использовать dhclient вместо него. Не забудьте выбрать dhclient как первичный DHCP клиент в вашем менеджере соединений!
  • Если вы можете получить IP для проводного интерфейса, но не можете для беспроводного, попробуйте отключить энергосберегающие функции вашей беспроводной карты:
# iwconfig wlan0 power off
  • Если вы получаете timeout ошибку из-за waiting for carrier проблемы, возможно вам понадобится установить канал в auto для конкретного устройства:
# iwconfig wlan0 channel auto

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

Не выполняется разрешение хоста по действительному IP-адресу

Если вы подключились к публичной беспроводной сети с работающим серсвисом Captive portal, убедитесь, что браузер отправляет запросы по протоколу HTTP, а не HTTPS, поскольку некоторые порталы работают только с HTTP. Если причина проблем не в этом, проверьте настройки разрешения доменных имён. Возможно, нужно просто использовать DNS-сервер, объявленный DHCP.

Включение RTS и порог фрагментации

Беспроводное аппаратное обеспечение по умолчанию не использует RTS и фрагментацию. Есть два способа повысить производительность (throughput) за счёт пропускной способности (bandwidth) (т.е. надёжность за счёт скорости). Это полезно в случае наличия беспроводного шума или создающих помехи соседних точек доступа, что приводит к задержкам и сбоям.

Фрагментация пакетов увеличивает производительность за счёт разбиения пакетов с размером, превышающим порог фрагментации. Максимальное значение (2346) фактически отключает фрагментацию, поскольку не существует пакетов большего размера. Минимальное значение (256) увеличивает производительность, но требует большей пропускной способности.

# iw phy0 set frag 512

RTS увеличивает производительность посредством выполнения рукопожатий с точкой доступа перед отправкой пакетов с размером выше порога RTS. Максимальное значение (2347) отключает RTS (т.к. пакеты не могут быть большего размера). Минимальный порог (0) включает RTS для всех пакетов, что в большинстве ситуаций несколько избыточно.

# iw phy0 set rts 500
Примечание: phy0 — название беспроводного устройства, которое можно узнать с помощью команды $ iw phy.

Внезапные отключения

Причина #1

Если в dmesg появилось сообщение wlan0: deauthenticating from MAC by local choice (reason=3) и произошёл разрыв Wi-Fi соединения, то причина скорее всего кроется в слишком агрессивных настройках энергосбережения вашей беспроводной карты. Попробуйте отключить энергосбережение (укажите опцию off вместо on).

Если у вашей карты нет энергосберегающего режима, проверьте настройки энергопотребления BIOS. Отключение управления энергопотреблением PCI-Express в BIOS на Lenovo W520 решило эту проблему.

Причина #2

Если происходят частые отключения и dmesg выдаёт сообщение вроде

ieee80211 phy0: wlan0: No probe response from AP xx:xx:xx:xx:xx:xx after 500ms, disconnecting

попробуйте изменить полосу пропускания канала на 20MHz на странице настроек вашего маршрутизатора.

Причина #3

В некоторых моделях ноутбуков (например, Thinkpad X200) аппаратный переключатель (или его соединение с материнской платой) из-за неудачной конструкции со временем может расшататься. В результате при случайных касаниях переключателя или перемещении ноутбука будут происходить аппаратные блокировки (hardblock) и разрывы соединения. Решить эту проблему программно нельзя, кроме случая, когда переключатель электрический — в БИОС есть настройка его отключения. Если переключатель механический (а чаще всего он именно такой), то существует несколько возможных решений, большинство из которых сводится к отключению переключателя: распаять точку соединения переключателя с материнской платой/беспроводной картой, приклеить или зафиксировать переключатель, подтянуть переключатель гайкой или удалить его насовсем.

Причина #4

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

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

Если это сработало, включите WPA/WPA2 снова, но с ограниченными настройками. Например:

  • Если маршрутизатор значительно старше вашей беспроводной карты, проверьте, функционирует ли он, выбрав работу только в беспроводном режиме.
  • Отключите смешанную аутентификацию (например, оставьте только WPA2 с AES, или только TKIP в случае старого маршрутизатора).
  • Попробуйте fixed или free режим канала вместо auto (возможно, неподалёку работает старый маршрутизатор, создающий помехи).
  • Отключите WPS.
  • Отключите полосу пропускания 40MHz (производительность упадёт, но зато уменьшится количество коллизий пакетов).
  • Если у маршрутизатора есть настройки качества обслуживания (Quality of Service, QoS), проверьте их полноту (например, WMM является одним из протоколов QoS; при неправильной работе ПО маршрутизатор может сообщать, что протокол работает, хотя соответствующая настройка не включена).

Wi-Fi-сеть не видна из-за несоответствия регулятивному домену

При соединении по беспроводной сети список используемых на вашей машине беспроводных каналов может не совпасть с перечнем разрешённых каналов в вашей стране. В результате не получится обнаружить некоторые Wi-Fi сети. Для решения этой проблемы необходимо настроить регулятивный домен (regulatory domain), как описано в разделе #Соответствие регламентам.

Решение проблем с драйверами и прошивками

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

Информацию о приёмах работы с модулями можно найти в статье Модули ядра.

Ralink/Mediatek

rt2x00

Единый драйвер для чипсетов Ralink, замещает драйвера rt2500, rt61, rt73 и другие. Входит в ядро Linux начиная с версии 2.6.24. Необходимо только загрузить нужный для вашей карты модуль — rt2400pci, rt2500pci, rt2500usb, rt61pci или rt73usb, а он уже автоматически подтянет соответствующие модули драйвера rt2x00.

Список поддерживаемых устройств можно найти на странице проекта.

Примечания
  • Начиная с версии ядра 3.0, rt2x00 включает также драйвера rt2800pci и rt2800usb.
  • Начиная с версии ядра 3.0 staging-версии драйверов rt2860sta и rt2870sta были заменены на mainline-драйвера rt2800pci и rt2800usb .
  • Некоторые устройства имеют широкий набор опций, настроить их можно с помощью входящей в пакет wireless_tools утилиты iwpriv.

rt3090

Для устройств с чипсетом rt3090 можно использовать драйвер rt2800pci, однако качественная работа не гарантирована (например, временами не удаётся получить скорость выше 2 Мбит/с).

rt3290

Чипсет rt3290 распознаётся модулем ядра rt2800pci, однако у некоторых могут возникнуть проблемы. В этом случае можно попробовать вернуться к проприетарным драйверам Ralink. [2]

rt3573

Чипсет 2012 года. Для стабильной работы могут потребоваться проприетарные драйвера Ralink, которые используются многими производителями беспроводного оборудования. [3]

rt5572

Чипсет 2012 года с поддержкой полосы пропускания 5GHz. Может потребоваться скомпилировать и установить проприетарные драйвера Ralink. Руководство по компиляции: [4].

mt7612u

Чипсет 2014 года, выпущенный под новым коммерческим именем Mediatek. Есть варианты чипсетов AC1200 или AC1300. Производитель предлагает драйвера для Linux на странице поддержки.

Realtek

Список чипсетов Realtek и их спецификации: [5].

rtl8192cu

Драйвер для этого чипсета включён в состав ядра, но иногда появляются проблема с установкой соединения (хотя сканирование активных сетей работает).

В драйвер 8192cu-dkmsAUR вошли многие исправления; установите его, если входящий в ядро дравер работает плохо.

rtl8723ae/rtl8723be

Модули rtl8723ae и rtl8723be входят в mainline-ядро Linux.

На картах с этими чипсетами возможны ошибки в работе функции энергосбережения. Это проявляется в случайных разрывах соединения, которые не обнаруживаются высокоуровневыми сетевыми менеджерами (netctl, NetworkManager). Обнаружить ошибку можно командами dmesg -w или journalctl -f, найдя сообщения, относящиеся к энергосбережению (powersave) и модулю rtl8723ae/rtl8723be. Если это ваш случай, используйте опцию ядра fwlps=0, чтобы предотвратить "засыпание" карты и разрывы соединения.

/etc/modprobe.d/rtl8723ae.conf
options rtl8723ae fwlps=0

или

/etc/modprobe.d/rtl8723be.conf
options rtl8723be fwlps=0

Если у вас проблемы с качеством сигнала, возможно, у вашего устройства работает только одна антенна, а программный автовыбор антенны не работает. Вы можете вручную выбрать рабочую антенну параметрами ядра ant_sel=1 или ant_sel=2. [6]

rtl88xxau

Чипсеты Realtek rtl8811au/rtl8812au/rtl8814au/rtl8821au разработаны для различных USB-адаптеров в диапазоне от AC600 до AC1900. Драйвера к ним содержатся в нескольких пакетах:

Чипсет Версия драйвера Пакет Примечания
rtl8811au, rtl8812au, rtl8814au and rtl8821au 5.6.4.1 rtl88xxau-aircrack-dkms-gitAUR Модули ядра aircrack-ng для чипсетов 8811au, 8812au, 8814au и 8821au с режимом мониторинга и поддержкой инъекций (injection support).
rtl8812au 5.2.20 rtl8812au-dkms-gitAUR Последний официальный драйвер Realtek, только для rtl8812au.
rtl8811au, rtl8812au and rtl8821au 5.1.5 rtl8821au-dkms-gitAUR Рекомендуются только для rtl8812au версий 5.6.4.1 или 5.2.20.
rtl8814au 4.3.21 rtl8814au-dkms-gitAUR Возможно, работает также и для rtl8813au. Предположительно обладает лучшей работоспособностью, чем rtl88xxau-aircrack-dkms-gitAUR

Воспользуйтесь DKMS чтобы убедиться, что установлены правильные заголовки ядра (kernel headers).

rtl8822bu

В пакет rtl8822bu-dkms-gitAUR входит модуль ядра для чипсета Realtek 8822bu, используемого в адаптерах Edimax EW7822ULC USB3 и Asus AC53 Nano USB 802.11ac.

rtl8xxxu

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

Некоторые драйвера могут быть уже добавлены в АУР, например rtl8723bu-gitAUR или rtl8723bu-git-dkmsAUR.

Atheros

Командой проекта MadWifi было создано три драйвера для устройств с чипсетом Atheros:

  • madwifi — устаревший драйвер. Не входит в состав ядра Linux начиная с версии 2.6.39.1. [7]
  • ath5k — более новый драйвер, заменивший madwifi. Довольно неплох, но отсутствует поддержка некоторых чипсетов (см. ниже).
  • ath9k — новейший из этих трёх драйверов, предназначен для последних чипсетов Atheros. Поддерживаются все платы с технологией 802.11n.

Также существуют другие драйвера для устройств Atheros, найти их можно в документации Linux Wireless.

ath5k

Полезные ссылки:

Если веб-страницы временами грузятся очень медленно, или если беспроводному устройству не удаётся получить динамический IP-адрес, попытайтесь переключиться с аппаратного шифрования на программное, загрузив модуль ath5k с опцией nohwcrypt=1. Подробнее см. Модули ядра#Настройка параметров модуля.

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

# echo none > /sys/class/leds/ath5k-phy0::tx/trigger
# echo none > /sys/class/leds/ath5k-phy0::rx/trigger

Альтернативное решение описано в этом багрепорте.

ath9k

Полезные ссылки:

Начиная с версии ядра 3.15.1 некоторые пользователи ощутили уменьшение полосы пропускания. В некоторых случаях проблема может быть решена добавлением одной строки в файл /etc/modprobe.d/ath9k.conf:

options ath9k nohwcrypt=1
Примечание: Проверьте командой lsmod название используемого модуля; измените название, если оно отличается от ath9k (например, ath9k_htc).

Если у вас проблемы со стабильностью соединения, можно попробовать установить пакет backports-patchedAUR. Связаться с разработчиками и обсудить изменения можно через почтовую рассылку.

Power saving

Linux Wireless утверждает, что динамическое энергосбережение включено для одноплатных Atheros ath9k новее версии AR9280, однако для некоторых устройств (например, AR9285) powertop всё же сообщает, что энергосбережение отключено. В этом случае включите его вручную.

На некоторых устройствах (например, AR9285) включение энергосбережения может привести к следующей ошибке:

# iw dev wlan0 set power_save on
command failed: Operation not supported (-95)

Для решения необходимо установить опцию ps_enable=1 для модуля ath9k:

/etc/modprobe.d/ath9k.conf
options ath9k ps_enable=1

Intel

ipw2100 and ipw2200

Эти модули полностью поддерживаются ядром, но для них необходима прошивка. В зависимости от вашего чипсета установите либо ipw2100-fw, либо ipw2200-fw, после чего перезапустите модуль.

Совет: Можно также назначить следующие параметры:
  • rtap_iface=1 — включить radiotap-интерфейс.
  • led=1 — включить LED-индикатор наличия/отсутствия беспроводного соединения.

iwlegacy

iwlegacy — драйвер для чипов Intel версий 3945 и 4965. Прошивки для них входят в пакет linux-firmware.

Менеджер устройств udev должен загрузить драйвер автоматически, в противном случае загрузите iwl3945 или iwl4965 вручную. Подробнее см. Модули ядра.

Если у вас проблемы с подключением к сети вообще, случайные сбои карты во время загрузки, или просто очень низкое качество связи, попробуйте выключить 802.11n:

/etc/modprobe.d/iwl4965.conf
options iwl4965 11n_disable=1

Если проблемы во время загрузки остались и вы используете драйвер Nouveau, попробуйте включить KMS, чтобы предотвратить конфликт оборудования. [8]

iwlwifi

iwlwifi — беспроводной драйвер для современных чипов Intel, таких как 5100AGN, 5300AGN и 5350AGN. Список поддерживаемых устройств: [9].

Прошивки входят в пакет linux-firmware. В пакете linux-firmware-iwlwifi-gitAUR могут содержаться последние обновления.

Если у вас проблемы с соединением вообще или качество связи очень низкое, попробуйте отключить 802.11n и включить программное шифрование:

/etc/modprobe.d/iwlwifi.conf
options iwlwifi 11n_disable=1 swcrypto=1

Если скорость исходящего соединения в режиме 802.11n слишком низкая, скажем, 20 Мбит/с, попробуйте включить агрегирование антенн:

/etc/modprobe.d/iwlwifi.conf
options iwlwifi 11n_disable=8

Название параметра 11n_disable не должно ввести вас в заблуждение — при установке его в значение 8 ничего не отключается, но запускается режим агрегации. [10], [11]

Если это не сработало, попробуйте отключить режим энергосбережения беспроводного адаптера.

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

Bluetooth Coexistence

Если у вас проблемы с подключением bluetooth-наушников и низкая скорость входящего соединения, попробуйте отключить режим Bluetooth Coexistence [12]:

/etc/modprobe.d/iwlwifi.conf
options iwlwifi bt_coex_active=0
Прошивка выводит трассировку стека

При проблемах драйвер может начать выводить трассировку стека и сообщения об ошибках:

dmesg
Microcode SW error detected.  Restarting 0x2000000.

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

Отключение мерцания LED-индикатора

Примечание: Работает с драйверами iwlegacy и iwlwifi.

Настройка модуля по умолчанию — мигание LED при работе. Некоторые находят это неприятным. Чтобы настроить постоянное свечение индикатора при работе Wi-Fi, можно использовать временные файлы:

/etc/tmpfiles.d/phy0-led.conf
w /sys/class/leds/phy0-led/trigger - - - - phy0radio

Чтобы изменения заработали, выполните systemd-tmpfiles --create phy0-led.conf или перезагрузитесь.

Чтобы посмотреть все возможные триггеры LED-индикатора выполните

# cat /sys/class/leds/phy0-led/trigger
Совет: Если у вас нет файла /sys/class/leds/phy0-led, попробуйте параметр led_mode="1". Он должен работать для драйверов iwlwifi и iwlegacy.

Broadcom

Изучите статью Broadcom wireless.

Other drivers/devices

Tenda w322u

Для этой карты Tenda подходят рекомендации для rt2870sta. См. #rt2x00.

orinoco

Драйвера входят в пакет ядра и должны быть уже установлены.

Среди чипсетов Orinoco есть чипы Hermes II. Для них можно использовать драйвер wlags49_h2_cs вместо orinoco_cs, если нужна поддержка WPA. Чтобы использовать драйвер, сначала установите запрет загрузки orinoco_cs.

prism54

Драйвер p54 входит в ядро, но вам придётся загрузить прошивку карты с сайта и установить её в каталог /usr/lib/firmware.

Примечание: Есть также старый драйвер prism54, который может конфликтовать с более новыми драйверами (p54pci или p54usb). Убедитесь, что установлен запрет загрузки prism54.

ACX100/111

Важно: Драйвера для этих устройств не работают с последними версиями ядра.

Пакеты: tiacx tiacx-firmware (удалены из официальных репозиториев и AUR)

См. также официальную wiki[dead link 2018-09-23].

zd1211rw

zd1211rw — драйвер для ZyDAS ZD1211 802.11b/g USB WLAN чипсетов. В настоящее время включен в ядро. Список поддерживаемого оборудования можно найти здесь. Предварительно придётся установить файлы прошивки из пакета zd1211-firmwareAUR.

hostap_cs

Host AP — драйвер Linux для беспроводных карт на основе чипсета Intersil's Prism2/2.5/3. Драйвер включён в ядро Linux.

ndiswrapper

Ndiswrapper — скрипт-обёртка, который позволяет использовать некоторые драйвера Windows для Linux. Вам потребуются файлы .inf и .sys из драйвера Windows.

Важно: Убедитесь, что драйвера соответствуют вашей архитектуре (x86 или x86-64).
Совет: Если вам нужно извлечь эти файлы из файла *.exe, то можно воспользоваться пакетом cabextract.

Чтобы настроить ndiswrapper, выполните следующие шаги:

1. Установите пакет ndiswrapper-dkms.

2. Установите драйвер в каталог /etc/ndiswrapper/*:

# ndiswrapper -i filename.inf

3. Просмотрите список установленных драйверов ndiswrapper:

$ ndiswrapper -l

4. Сохраните настройки ndiswrapper в файл /etc/modprobe.d/ndiswrapper.conf:

# ndiswrapper -m
# depmod -a

После установки ndiswrapper необходимо настроить автоматическую загрузку модуля при запуске системы.

Наконец, нужно добавить ndiswrapper в Linux ядро и убедиться, что он работает:

# modprobe ndiswrapper
# iwconfig

В списке интерфейсов должен появиться беспроводной интерфейс wlan0. В случае каких-либо проблем полезную информацию можно найти на страницах ndiswrapper howto и ndiswrapper FAQ.

backports-patched

Пакет backports-patchedAUR содержит драйвера из новых версий ядра, предназначенные для бэкпортирования (backport) в системах со старым ядром. Проект стартовал в 2007 году и в разные периоды назывался compat-wireless, compat-drivers и (в настоящее время) backports.

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

Смотрите также