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