Wi-Fi в Linux: Полезные памятки для юзеров

Wi-Fi в Linux: Полезные памятки для юзеров

overlamer1



Проблемы и ошибки Wi-Fi в Linux

Эта статья представляет собой сборник проблем Wi-Fi, с которыми вы можете столкнуться в Linux. Охвачены вопросы как тестирования безопасности беспроводных сетей, так и подключения к Wi-Fi.


Рецепты популярных действий с Wi-Fi в Linux

Как узнать имя беспроводного интерфейса

iw dev


Имя интерфейса в строке «Interface»:


Если вы получили ошибку:

bash: iw: команда не найдена


То выполните данную команду с sudo:

sudo iw dev


Как остановить программы, которые мешают аудиту безопасности Wi-Fi

Настоятельно рекомендуется перед переводом Wi-Fi интерфейса в режим монитора выполнить следующие две команды:

sudo systemctl stop NetworkManager

sudo airmon-ng check kill

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

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

sudo systemctl start NetworkManager


Как перевести карту в режим монитора перед началом аудита безопасности Wi-Fi в Linux

sudo ip link set <ИНТЕРФЕЙС> down

sudo iw <ИНТЕРФЕЙС> set monitor control

sudo ip link set <ИНТЕРФЕЙС> up

Как вернуть адаптер в управляемый режим

sudo ip link set <ИНТЕРФЕЙС> down

sudo iw <ИНТЕРФЕЙС> set type managed

sudo ip link set <ИНТЕРФЕЙС> up

Как поменять канал Wi-Fi адаптера

Устанавливать каналы можно только когда адаптер находится в режиме монитора:

sudo iw dev <ИНТЕРФЕЙС> set channel <НОМЕР>


Как проверить, поддерживает Wi-Fi адаптер беспроводные инъекции

sudo aireplay-ng -9 <ИНТЕРФЕЙС>


Как узнать, какие частоты поддерживает адаптер и другие характеристики

iw list


Как поменять регион для увеличения мощности

Чтобы проверить текущее значение:

sudo iw reg get


Чтобы установить новый регион:

sudo iw reg set BZ


Чтобы увеличить мощность:

sudo ip link set <ИНТЕРФЕЙС> down

sudo iw dev <ИНТЕРФЕЙС> set txpower fixed 30mBm

# sudo iw <ИНТЕРФЕЙС> set monitor control # если нужно, переводим в режим монитора

sudo ip link set <ИНТЕРФЕЙС> up


Как сканировать ТД в командной строке

Для сканирования точек доступа:

sudo iw dev <ИНТЕРФЕЙС> scan


Чтобы сканировать и вывести только названия ТД:

sudo iw dev <ИНТЕРФЕЙС> scan | grep SSID


Как получить данные беспроводного интерфейса на канальном уровне

Чтобы вывести информацию на уровне передачи данных от устройства к устройству (он называется канальный (data link)):

iw dev <ИНТЕРФЕЙС> link


Как подключиться к Точке Доступа Wi-Fi в командной строке

Нам нужно сформировать конфигурационный файл. Делается это командой:


wpa_passphrase название_ТД пароль > конфигурационный_файл


Подключаемся к точке доступа:

wpa_supplicant -B -i <ИНТЕРФЕЙС> -c конфигурационный_файл


Для получения автоматических настроек по протоколу DHCP (присвоенный IP адрес, IP адрес шлюза и IP адреса DNS серверов) выполните команду:

dhclient <ИНТЕРФЕЙС>


Частые ошибки Wi-Fi в Linux

Ошибка «Operation not permitted (-1)»

Пример:

command failed: Operation not permitted (-1)


Означает, что недостаточно прав, запустите команду iw с sudo.

Device or resource busy (-16)

Пример:

command failed: Device or resource busy (-16)


Данная ошибка возникает, например, если вы пытаетесь перевести Wi-Fi адаптер на определённый канал, но он не в режиме монитора. Начните с перевода карты в режим монитора, а затем установите желаемый канал.

Не виден Wi-Fi интерфейс в системе

  • Убедитесь, что Wi-Fi адаптер подключён.
  • Проверьте, видит ли система устройства:

# Для USB

lsusb

 

# Для PCI

lspci

Беспроводной интерфейс виден, но его невозможно использовать

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

rfkill


Если они заблокированы, то включите их командой:

rfkill unblock all


Устройство иногда исчезает или странно отображается в системе

Если драйвер устройства отображается неправильно (например, как ??????), а также неправильно отображается информация о чипсете, примерно как на данном скриншоте:


То

  • попробуйте другой шнур и другое USB гнездо
  • не используйте USB хабы
  • отключите устройство из гнезда и подключите вновь

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

Не удаётся подключиться к Точке Доступа

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

Если подключение удастся, значит какая-то проблема в несовместимости Wi-Fi протоколов. Попробуйте не использовать или наоборот принудительно использовать некоторые стандарты (N, AC). Попробуйте принудительно выбрать другой канал или установить автоматический выбор каналов. Ещё раз внимательно проверьте пароли.

Удалось подключиться к ТД, но Интернета нет

С помощью команды вы сможете посмотреть, действительно ли выполнено подключение (ищите строку, которая начинается на «ssid»):

iw dev


Проверьте, присвоен ли интерфейсу IP адрес:

ip a


Определите IP адрес роутера:

ip route show default


И выполните пинг роутера, например, адрес моего роутера 192.168.0.1, тогда команда:

ping 192.168.0.1


Если роутер не пингуется, значит проблема в подключении до него — например, слишком слабый сигнал до ТД или не настроен IP адрес (служба DHCP не запущена).

Если есть подключение к роутеру, то попробуйте выполнить пинг публичного IP:

ping 8.8.8.8


Если пинг не удался (но сам роутер пингуется), значит проблема с подключением роутера к внешней (WAN) сети. Заходите в настройки роутера и разбирайтесь там.

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

traceroute

8.8.8.8


Если пинг роутера удался, то попробуйте пинг хоста по имени хоста:

ping google.com


Если пинг по имени хоста не удался, значит проблема в настройке DNS сервера. Эти настройки могут быть как на уровне системы (например, неправильные настройки в NetworkManager), так и в роутере.

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

dig ya.ru


Найдите строку, которая начинается на «;; SERVER» - в этой строке будет адрес сервера имён.

;; SERVER: 8.8.8.8#53(8.8.8.8)


Не получается перевести в режим монитора Wi-Fi адаптер в Windows Subsystem for Linux (WSL) / Cygwin / Docker

В Windows Subsystem for Linux (WSL), а также в Cygwin и Docker нет прямого доступа к железу. У вас не получится использовать Wi-Fi адаптер (а также видео карту и прочее) в данных программных продуктах.

Если вы пользователь Windows, то для вас оптимальный вариант: установить Kali Linux или Arch Linux (BlackArch) в VirtualBox и подключить к этой виртуальной машине USB Wi-Fi адаптер.

Если у вас только PCI (встроенный) Wi-Fi адаптер, то установите Linux на внешний USB диск или на флешку и загрузитесь с него.

В Ubuntu ошибки и предложение отправить отчёты при переводе беспроводной карты в режим монитора

Выберите любой другой дистрибутив — Kali Linux, Debian, Arch Linux, BlackArch или даже Linux Mint — там всё работает нормально.

Вопросы и ответы по Wi-Fi в Linux


Современные Wi-Fi карты для беспроводного аудита

Двухдиапазонные беспроводные адаптеры с поддержкой режима монитора и беспроводными инъекциями, а также с поддержкой стандарта AC:

  • Alfa AWUS1900 (чипсет: Realtek RTL8814AU)
  • TRENDnet TEW-809UB (чипсет: Realtek RTL8814AU)
  • ASUS USB-AC68 (чипсет: Realtek RTL8814AU)
  • Alfa AWUS036ACH (чипсет: Realtek RTL8812AU)
  • Alfa AWUS036AC (чипсет: Realtek RTL8812AU)
  • ASUS USB-AC56 (чипсет: Realtek RTL8812AU)

Любой из этих адаптеров будет актуален ещё много лет.

Как увидеть, что происходит с беспроводными интерфейсами

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

Вы можете использовать вывод следующих команд для решения любых проблем с Wi-Fi.

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

journalctl -f


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

Следующая команда расскажет о всё, что происходит на уровне межсетевого протокола — как IP адреса присваиваются интерфейсам и какие маршруты прописываются в системе:

ip monitor



А эта команда покажет все события, связанные с беспроводными сетевыми интерфейсами:

iw event


Эти три команды — важнейший источник информации для разрешения неочевидных проблем. Изучайте их вывод или предоставьте вывод этих команд если вы пытаетесь совместно разрешить вашу проблему с Wi-Fi.

Как узнать, сколько трафика было передано

ip -s -h a show <ИНТЕРФЕЙС>


Драйверы

Драйверы Wi-Fi в Linux. Поддержка Wi-Fi адаптеров в Linux

В настоящее время Linux поддерживает большинство Wi-Fi карт и драйверы для них уже предустановлены в системе (они являются частью ядра). То есть при покупке нового Wi-Fi адаптера или установке Linux на ноутбук в подавляющем большинстве случаев не требуется никаких действий — Wi-Fi адаптер будет просто работать.

В редких случаях понадобиться установить из стандартных репозиториев драйвер и/или прошивку.

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

Драйвер запрашивает прошивку из файловой системы в /lib/firmware. Это специальный файл, необходимый для аппаратного обеспечения, это не бинарный файл. Затем дайвер делает все, что нужно для загрузки прошивки в устройство. Прошивка выполняет программирование оборудования внутри устройства.

Список установленных драйверов вы найдёте в папке

echo /usr/lib/modules/`uname -r`/kernel/drivers/net/wireless


Вывод драйверов по производителям:

tree /usr/lib/modules/`uname -r`/kernel/drivers/net/wireless


Если по каким-либо причинам драйвер ещё не попал в ядро, то он может присутствовать в стандартных репозиториях в виде отдельных пакетов, например, в Kali Linux дополнительно доступны:

  • realtek-rtl8188eus-dkms (драйвер для RTL8188EUS)
  • realtek-rtl88xxau-dkms (драйвер для RTL8812AU/21AU и RTL8814AU)

Также вы найдёте в стандартных репозиториях пакеты прошивок firmware-* (например, firmware-realtek, firmware-atheros, firmware-iwlwifi и так далее). Если прошивка для вашего устройства не установлена, установите её.

В Arch Linux (BlackArch) все прошивки собраны в один пакет linux-firmware. Для некоторых устройств имеются отдельные пакеты драйверов (например, r8168 и broadcom-wl).

Итак, драйверы для большинства Wi-Fi адаптеров встроены в ядро и, следовательно, уже установлены на любом Linux. Начните с того, что подсоедините вашу беспроводную карту и попробуйте выполнить подключение к Точке Доступа.

Если возникли проблемы, поищите в репозиториях драйвер и/или прошивку для вашего устройства.

Как проверить, какой драйвер используется


# Для вывода списка только USB устройств и их драйверов

usb-devices

  

# Для вывода списка только PCI устройств и их драйверов

lspci -k

  

# Для вывода списка как USB, так и PCI устройств и их драйверов

sudo lshw


Report Page