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

Оглавление

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

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

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

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

5. Драйверы


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

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

Если вы не нашли решения для своей проблемы с Wi-Fi, то спрашивайте в комментариях. Данная статья буде пополняться описанием новых проблем 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

Нюансы смотрите в статье «Как увеличить мощность (TX Power) Wi-Fi карты».

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

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

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 в командной строке зная WPS пин

Подробную инструкцию смотрите в статье Решение проблемы: Reaver показывает WPS пин, но не показывает пароль WPA-PSK.

Как увидеть все ТД

sudo airodump-ng ИНТЕРФЕЙС --manufacturer --uptime --wps

Автоматизированный захват рукопожатий:

Конвертация в хеш Hashcat (.hccapx)

Для конвертации в хеш формата HCCAPX для взлома пароля (Hashcat v3.6+) с помощью cap2hccapx (пакет hashcat-utils):

sudo cap2hccapx РУКОПОЖАТИЕ.pcap ХЕШ.hccapx

Для конвертации в хеш формата HCCAPX для взлома пароля (Hashcat v3.6+) с помощью aircrack-ng:

aircrack-ng -j ХЕШ ХЕНДШЕЙК.pcap

Запуск брут-форса (взлома) пароля Wi-Fi сети в Hashcat

  • Атака по словарю:
hashcat --force --hwmon-temp-abort=100 -D 1,2 -a 0 -m 2500 ХЕШ.hccapx СЛОВАРЬ.txt
  • Атака по маске (брут-форс, полный перебор):
hashcat --force --hwmon-temp-abort=100 -D 1,2 -a 3 -m 2500 ХЕШ.hccapx ?d?d?d?d?d?d?d?d

В примере выше маска — пароли из цифр длиной 8 символов.

Встроенные наборы символов:

  l | abcdefghijklmnopqrstuvwxyz
  u | ABCDEFGHIJKLMNOPQRSTUVWXYZ
  d | 0123456789
  h | 0123456789abcdef
  H | 0123456789ABCDEF
  s |  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  a | ?l?u?d?s

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

Частые ошибки 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 адаптер подключён.
  • Если вы используете Linux в виртуальной машине, то смотрите «Почему виртуальная машина не видит USB устройство». В виртуальной машине возможно использовать только USB адаптеры.
  • Проверьте, видит ли система устройства:
# Для 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

Почему меняется MAC адрес, даже если не используется программа для этого

Многие современные дистрибутивы настроены постоянно менять MAC адрес. Подробности об этом, а также как отключить или наоборот включить эту функцию смотрите в статье «Как поменять MAC-адрес в Linux, как включить и отключить автоматическую смену (спуфинг) MAC в Linux».

Как узнать, будет ли поддерживаться Wi-Fi карта для аудита Wi-Fi сетей

Самый простой вариант, это выбрать адаптер из данного списка: «USB Wi-Fi адаптеры с поддержкой режима монитора и беспроводных инъекций».

Если вы хотите определить, поддерживает режим монитора и беспроводные инъекции другой адаптер, не включённый в список, то изучите «Как определить, какой Wi-Fi адаптер подойдёт для Kali Linux».

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

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

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

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

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

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

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

journalctl -f

Вывод программы весьма обширен, но его изучение может подсказать причины проблемы. Смотрите также «Как использовать journalctl для просмотра системных логов Linux».

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

ip monitor

Смотрите также «Как использовать команду ip в Linux».

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

iw event

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

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

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

Драйверы

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

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

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

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

Если вы знакомы со статьёй «Модули ядра Linux», то вы знаете, что многим устройствам для правильной работы нужны две вещи: драйвер и прошивка. Драйвер запрашивает прошивку из файловой системы в /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

Смотрите также Как узнать, какие модули (драйверы) используются USB и PCI устройствами.

Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован.