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

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

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

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

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

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

Стандартное ядро 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, чтобы убедиться, что сетевой интерфейс был создан; обычно название беспроводного интерфейса начинается с букв «wl», например, wlan0 или wlp2s0. Затем включите интерфейс командой

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

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

Примечание:
  • Если вы получили ошибку RTNETLINK answers: Operation not possible due to RF-kill ("действие невозможно из-за RF-kill"), убедитесь, что аппаратный переключатель находится в положении вкл. Подробнее см. #Предостережения Rfkill.
  • Если вы получили сообщение об ошибке 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

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

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

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

Имейте в виду, что в продуктах некоторых производителей могут попадаться разные чипы даже в продуктах с одинаковым идентификатором. Значимыми являются только usb-id (для устройств USB) или pci-id (для устройств PCI).

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

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

Утилиты

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

Управление беспроводным соединением может осуществляться с помощью сетевого менеджера, который будет использовать wpa_supplicant или iwd для аутентификации беспроводного соединения, либо с помощью wpa_supplicant или iwd напрямую. Для настройки на более низком уровне, а также при использовании устаревшего драйвера или устаревшего метода аутентификации существуют iw и устаревший wireless_tools.

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

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

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

Ниже представлено сравнение некоторых команд утилит iw и wireless_tools. Дополнительные примеры можно найти в статье о замене iwconfig на iw[устаревшая ссылка 2024-10-12 ⓘ].

Команда 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).
Примечание: При попытке сменить режим интерфейса на AP (iw интерфейс set type ap) iw может вернуть ошибку вида
You need to run a management daemon, e.g. hostapd,
see https://wireless.wiki.kernel.org/en/users/documentation/hostapd
for more information on how to do that.
Для обхода этой ошибки нужно использовать тип __ap (iw интерфейс set type __ap).

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

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

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

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

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

Аутентификация

Есть два основных варианта для аутентификации Wi-Fi в Linux: wpa_supplicant и iwd.

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. В результате клиент может послать пароль чужой точке доступа, которая станет выполнять роль посредника, прослушивая весь передаваемый через неё трафик.

MS-CHAPv2

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

eduroam

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

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

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

Примечание: В настройках netctl особые правила использования кавычек: см. netctl.profile(5) § SPECIAL QUOTING RULES.
Совет: Можно разрешить произвольный сертификат, добавив строку 'ca_cert="/path/to/special/certificate.cer"' в блоке WPAConfigSection.

WPA3 Personal

WPA3 Personal, или WPA3-SAE — один из режимов Wi-Fi Protected Access.

И wpa_supplicant, и iwd поддерживают WPA3 Personal.

WPA3 Enterprise

WPA3 Enterprise — один из режимов Wi-Fi Protected Access.

wpa_supplicant (с версии 2:2.10-8) поддерживает WPA3 Enterprise. Смотрите FS#65314.

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

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

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

Regdomain определяет доступность беспроводных каналов. Так, на частоте 2.4GHz разрешено использовать каналы 1-11 в США, 1-14 — в Японии, и каналы 1-13 в большей части остального мира. На частоте 5GHz правила доступа к каналам несколько сложнее. В Википедии можно найти подробную информацию о доступности каналов: Wikipedia:List of WLAN channels, Wikipedia:ru:Wi-Fi#Разрешённые частоты.

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

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

Если установлен пакет wireless-regdb, ядро будет загружать базу данных напрямую. Для прямой загрузки ядро, в целях безопасности, должно иметь включенную настройку CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS, чтобы обеспечить криптографическую проверку базы данных. Она включена для стандартного ядра Arch, но если вы используете альтернативное ядро или компилируете его сами, то проверьте это. Более подробную информацию можно найти в этом руководстве.

Для настройки regdomain установите пакет wireless-regdb и перезагрузитесь, затем отредактируйте /etc/conf.d/wireless-regdom, раскомментировав нужный домен.

Чтобы временно назначить regdomain (например, для США):

# iw reg set US

Узнать текущий регуляторный домен:

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

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

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

# dmesg | grep ath:

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

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

$ iw list | grep -A 15 Frequencies:

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

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

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

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

$ rfkill
ID TYPE      DEVICE      SOFT      HARD
 0 bluetooth hci0   unblocked unblocked
 1 wlan      phy0   unblocked unblocked

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

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

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

Смотрите также дополнительную информацию о Rfkill: [2].

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

Смотрите раздел Управление питанием#Сетевые интерфейсы.

GitHub-репозиторий от morrownr

В GitHub-репозитории USB-WiFi от morrownr содержится различная информация о различных Wi-Fi адаптерах и чипсетах, включая тесты производительности, информацию о драйверах и общую информацию. Также репозиторий содержит информацию о PCIe-адаптерах. Рекомендуется к просмотру, особенно если вы не уверены, какой адаптер быстрее, дешевле или лучше совместим с Linux.

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

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

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

Если с сетевой платой возникли проблемы и нужен доступ в интернет, например, чтобы загрузить определённое ПО или задать вопрос на форумах, можно раздать интернет на компьютер с 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 для проводного интерфейса, но не можете для беспроводного, попробуйте отключить #Энергосбережение вашей беспроводной карты (укажите off вместо on).
  • Если вы получаете timeout ошибку из-за waiting for carrier проблемы, возможно вам понадобится установить канал в auto для конкретного устройства:
# iwconfig wlan0 channel auto

Перед изменением канала убедитесь, что беспроводной интерфейс отключен (down). После смены канала включите его снова (up).

Не выполняется разрешение хоста по действительному 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

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

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

Причина №2

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

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.
  • Измените канал(-ы) 5 GHz на канал non-DFS (Dynamic Frequency Selection). Соединения, установленные по такому каналу, могут пострадать от помех, создаваемых находящимся неподалёку погодным радаром.
  • На стороне клиента попробуйте отключить 5 GHz и оставить только 2.4 GHz вместо автоматического выбора (это уменьшит пропускную способность, но может повысить стабильность на расстоянии).
  • Отключите полосу пропускания 40MHz (производительность упадёт, но зато уменьшится количество коллизий пакетов) параметром cfg80211.cfg80211_disable_40mhz_24ghz=1.
  • Если у маршрутизатора есть настройки качества обслуживания (Quality of Service, QoS), проверьте их полноту (например, WMM является одним из протоколов QoS; при неправильной работе ПО маршрутизатор может сообщать, что протокол работает, хотя соответствующая настройка не включена).

Причина №5

У некоторых беспроводных сетевых адаптеров (например, Qualcomm Atheros AR9485) бывают случайные разрывы связи с DMA-ошибкой:

# journalctl -xb
ath: phy0: DMA failed to stop in 10 ms AR_CR=0x00000024 AR_DIAG_SW=0x02000020 DMADBG_7=0x0000a400
wlp1s0: authenticate with 56:e7:ee:7b:55:bc
wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 1/3)
wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 2/3)
wlp1s0: send auth to 56:e7:ee:7b:55:bc (try 3/3)
wlp1s0: authentication with 56:e7:ee:7b:55:bc timed out

Обходное решение — отключить Intel IOMMU driver (DMA), добавив intel_iommu=off в параметры ядра [3].

Примечание: IOMMU-драйвер от Intel нужен для некоторых продвинутых возможностей виртуальных машин вроде PCI pass-through.

Причина №6

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

Создайте файл /etc/modprobe.d/iwlmvm.conf, если он отсутствует, и добавьте в него следующую строку:

/etc/modprobe.d/iwlmvm.conf
options iwlmvm power_scheme=1

Параметр power_scheme, установленный в значение 1, задаёт iwlmvm режим «Всегда активен». Все возможные значения:

Значение Описание
1 Всегда активен
2 Промежуточный режим
3 Экономный режим

Это решение было обнаружено в обсуждении на форуме: [4].

Причина №7

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

# iw dev интерфейс set power_save off

Можно также создать правило udev, которое будет делать это при каждой загрузке системы, смотрите #Энергосбережение.

Причина №8

Если при подключении к mesh-сети (например, WiFi6) наблюдаются постоянные перебои, а в журнале имеются сообщения вида:

# journalctl -b
kernel: wlan0: disconnect from AP aa:bb:cc:dd:ee:ff for new auth to 11:22:33:44:55:66

Это проблемы с роумингом. В зависимости от способа подключения и рассматриваемой проблемы можно:

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 [5].
  • Некоторые устройства имеют широкий набор опций, настроить их можно с помощью входящей в пакет wireless_tools утилиты iwpriv. Документацию можно найти в tar-архиве с исходниками от Ralink.

rt3090

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

rt3290

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

rt3573

Чипсет 2012 года. Для стабильной работы могут потребоваться проприетарные драйвера Ralink, которые используются многими производителями беспроводного оборудования. Тема на форуме: Belkin N750 DB wireless usb adapter.

mt7612u

Чипсет 2014 года, выпущенный под новым коммерческим именем Mediatek. Есть варианты чипсетов AC1200 или AC1300. Производитель предлагает драйвера для Linux на странице поддержки[устаревшая ссылка 2024-10-19 ⓘ]. В ядро версии 5.5 был добавлен драйвер mt76.

Realtek

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

rtl8192cu

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

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

rtl8723ae/rtl8723be

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

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

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

rtl88xxau

Чипсеты Realtek rtl8811au/rtl8812au/rtl8814au/rtl8821au разработаны для различных USB-адаптеров в диапазоне от AC600 до AC1900. Драйвера к ним содержатся в нескольких пакетах, перечисленных ниже; все они требуют DKMS (пакет dkms и заголовочные файлы ядра).

Чипсет Пакет Примечания
rtl8811au, rtl8812au, rtl8821au rtl88xxau-aircrack-dkms-gitAUR Модули ядра aircrack-ng для чипсетов 8811au, 8812au и 8821au с режимом мониторинга и поддержкой инъекций.
rtl8812au rtl8812au-dkms-gitAUR Последний официальный драйвер Realtek, только для rtl8812au.
rtl8811au, rtl8821au rtl8821au-dkms-gitAUR Новейшая версия драйверов для rtl8821au.
rtl8814au rtl8814au-dkms-gitAUR Возможно, работает также и для rtl8813au.

rtl8811cu/rtl8821cu

Пакет rtl8821cu-dkms-gitAUR содержит модуль ядра для чипсетов Realtek 8811cu и 8821cu.

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

Если даже с загруженным модулем 8821cu интерфейс не работает, попробуйте вручную задать параметр модуля ядра rtw_RFE_type [8][9], например rtw_RFE_type=0x26. Другие значения тоже могут работать.

rtl8821ce

Пакет rtl8821ce-dkms-gitAUR содержит модуль ядра для чипсета Realtek 8821ce ноутбука Asus X543UA.

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

Примечание: Сообщалось [10], что стандартный модуль rtl8821ce, предоставляемый компанией Realtek, не работает в Linux ≥ 5.9. Версия из AUR более предпочтительна. Смотрите сообщение на GitHub. С помощью lspci -k проверьте, используется ли стандартный драйвер (rtw88_8821ce). Если да, то заблокируйте его и перезагрузитесь.

rtl8822bu

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

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

rtl8xxxu

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

Некоторые драйвера могут быть уже добавлены в AUR, например, rtl8723bu-dkms-gitAUR.

RTW88

Недавно был опубликован набор патчей для модуля ядра RTW88, который, вероятно, однажды войдёт в mainline.

Ядра, настроенные и скомпилированные с этим набором патчей, будут поддерживать большинство устройств на чипе RTW88. Ядра linux-zen и linux-zen-gitAUR уже используют эти патчи, и в этих пакетах есть собранный модуль.

Драйвер поддерживает 882BE, 8822BU, 8822CE, 8822CU, 8723DE, 8723DU, 8821CE и 8821CU.

RTW89

Модуль RTW89 был добавлен в состав ядра и обеспечивает поддержку новых беспроводных чипсетов Realtek.

Этот драйвер поддерживает 8852AE, 8851BE, 8852BE и 8852CE.

Atheros

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

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

Также существуют другие драйвера для устройств Atheros, найти их можно в документации Linux Wireless[устаревшая ссылка 2024-10-12 ⓘ].

ath5k

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

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

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

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

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

ath9k

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

Начиная с версии ядра 3.15.1 некоторые пользователи ощутили уменьшение полосы пропускания. В некоторых случаях проблему может решить параметр модуля ядра nohwcrypt=1 для модуля ath9k.

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

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

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

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

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

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

Для решения добавьте параметр модуля ядра ps_enable=1 для модуля ath9k.

Intel

iwlegacy

iwlegacy[устаревшая ссылка 2024-10-12 ⓘ] — драйвер для чипов Intel версий 3945 и 4965. Прошивки для них входят в пакет linux-firmware.

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

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

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

iwlwifi

iwlwifi — беспроводной драйвер для современных чипов Intel, таких как 5100AGN, 5300AGN и 5350AGN (полный список поддерживаемых устройств). Пакет linux-firmware содержит ряд прошивок, а в пакете linux-firmware-iwlwifi-gitAUR[ссылка недействительна: package not found] можно найти некоторые последние обновления.

Если у вас проблемы с соединением вообще или качество связи очень низкое, попробуйте отключить 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 ничего не отключается, но запускается режим агрегации. [12], [13]

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

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

Если ваша точка доступа 802.11ax (WiFi 6) имеет проблемы с обнаружением маяков или надёжностью соединения, то изучите следующую статью Intel.

Примечание: Параметр 11n_disable=0 также прекратит работу 802.11ac; соединения будут устанавливаться только по медленным протоколам (802.11a в полосе 5GHz или 802.11b/g в полосе 2.4 GHz).
Bluetooth Coexistence

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

/etc/modprobe.d/iwlwifi.conf
options iwlwifi bt_coex_active=0
Примечание: Начиная с версии ядра 5.8, параметры bt_coex_active и sw_crypto были отключены для устройств, обрабатываемых модулем ядра iwlmvm. Для более старых устройств, обрабатываемых другим модулем iwldvm, эти параметры по-прежнему включены.
Проблемы с прошивкой

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

# dmesg
Microcode SW error detected.  Restarting 0x2000000.

Кроме того, могут возникать различные проблемы (например, проблемы с подключением на частоте 5 GHz, случайные обрывы, отсутствие соединения при возобновлении работы).

Чтобы убедиться, что проблема именно в прошивке, выполните откат пакета linux-firmware.

Если откат помог, переименуйте файлы проблемных драйверов, чтобы вместо них загружались более старые версии (это позволит обновлять пакет linux-firmware, поскольку он нужен и для других устройств тоже):

# for i in {64..73} ; do mv /usr/lib/firmware/iwlwifi-ty-a0-gf-a0-$i.ucode.xz /usr/lib/firmware/iwlwifi-ty-a0-gf-a0-$i.ucode.xz.bak ; done

Чтобы не приходилось повторять это при каждом обновлении, используйте массив NoExtract в pacman.conf, указав маску для ненужных файлов, чтобы предотвратить их установку. Смотрите pacman (Русский)#Запрет на установку файлов.

Адаптер не обнаруживается после загрузки Windows

Если WiFi адаптер не обнаруживается после работы в Windows, это может быть связано с функцией быстрого запуска Windows (Fast Startup), которая включена по умолчанию. Попробуйте отключить Fast Startup. Смотрите также iwlwifi kernel driver wiki.

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

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

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

/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.

Другие драйверы/устройства

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.

zd1211rw

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

hostap_cs

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

Примечание: Сделайте запрет загрузки модуля orinico_cs, от него могут быть проблемы.

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:

# modprobe ndiswrapper
# iwconfig

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

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