Wpa supplicant настройка wifi

Обновлено: 06.07.2024

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

Но тут кроется одна проблема: не всегда и не на всех устройствах Wifi поддерживается из коробки. Да, есть такие ноутбуки Linux, в которых настройка Wifi в Ubuntu не нужна: после установки всё работает, вы можете подключаться к сетям или даже создавать точки доступа. Но это не так уж часто. В этой статье будет рассмотрена настройка Wifi в Ubuntu. Мы возьмём самую последнюю версию дистрибутива Ubuntu 16.04 с ядром Linux 4.4. Тут самую важную роль играет ядро, поскольку именно оно отвечает за поддержку оборудования. Я буду предполагать, что у вас не работает Wifi Ubuntu из коробки, если же вас интересует, как подключиться к сети, листайте ниже.

Установка драйвера Wifi

Если вы попробовали подключиться к сети Wifi, и у вас не получилось, хотя пароль был правильный, или у вас даже не определяется системой присутствие сетевой карты Wifi, становится понятно, что из коробки не работает Wifi Ubuntu и нужна дополнительная настройка. Wifi-адаптеров и их производителей очень много. В этой статье мы будем рассматривать только Broadcom, потому что всё не охватить. Но я попытаюсь объяснить так, чтобы вы смогли разобраться, даже если у вас другой производитель адаптера Wifi Ubuntu.

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

sudo lspci | grep Network

wifi11

wifi

Для нашего Broadcom-адаптера есть четыре драйвера, смотрим только те, для которых в последней колонке есть PCI; наш адаптер подключён через эту шину. Это b43, b43-legasy и brcmfmac и brcmcmac.

wifi1

Дальше выбираем лучший драйвер: смотрим на колонки cfg80211, AP, IBSS, mesh, monitor, PHY modes. Собственно, поддержка протокола сап80211, поддержка режима точки доступа, поддержка IBSS, Mesh, поддержка режима прослушивания (для перехвата пакетов) и поддержка расширений протокола b/g/n/a.

Для нас сейчас лучший драйвер по этим параметрам - b43. Открываем его и смотрим, поддерживает ли он нашу карту:

wifi2

Кроме названия, здесь приводится PCI ID карты, чтобы точно определить совместимость. Для Broadcom его можно посмотреть командой:

lspci -nn -d 14e4:

wifi12

Находим нашу карту BCM4313 и в колонке Supported видим No - жаль, но этим драйвером она не поддерживается. Такого PCI ID здесь тоже в помине нет. Но настройка Wifi в Ubuntu ещё не закончена. Возвращаемся назад, и смотрим другой драйвер. Следующий по возможностям драйвер brcmsmac, он не поддерживает Mesh и IBSS, но нам и не нужно.

Открываем, смотрим и видим, что в первой же строчке есть наша карта:

wifi3

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

Обратите внимание, что перед тем, как запускать драйвер, для него, возможно, необходимо будет установить прошивки. Установка драйвера Wifi Ubuntu не нужна, поскольку он вшит в ядро. Информация о прошивке находится ниже на странице:

wifi4

В нашем случае нужно скачать и скопировать файлы brcm/bcm43xx-0.fw и brcm/bcm43xx_hdr-0.fw to в отдельную папку. Вот они - эти файлы, на вкладке tree, скачиваем и копируем в папку, которая указана в инструкции:

wifi5

sudo cp bcm43* /lib/firmware/brcm/

Как видите, всё немного сложно, но на самом деле там все действия описаны, и все ссылки есть, нужно только внимательно смотреть. Теперь осталось установить драйвер Wifi Ubuntu, для этого мы просто загрузим модуль ядра. Но перед этим нужно добавить в чёрный список все другие модули, которые ядро может загружать автоматически:

sudo modprobe -r wl
$ sudo modprobe -r b43
$ sudo modprobe -r b43-legaxy

Добавляем их в чёрный список:

blacklist b43
blacklist b43-legacy
blacklist wl

Теперь запускаем наш выбранный драйвер:

sudo modprobe brcmsmac

Вот и всё, теперь Wifi работает. Теперь вы знаете, как установить драйвер Wifi в Ubuntu, как его найти, как определить необходимую версию для вашей карты. Хотя мы рассмотрели способ для Broadcom, с другими адаптерами нужно работать похожим образом. Загружаем выбранный драйвер, запрещаем все остальные доступные. И не забудьте установить прошивку. Даже если Ubuntu не видит Wifi, вы сможете разобраться.

Подключение к Wifi в Ubuntu

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

wifi8

Когда не работает Wifi Ubuntu, его нет. Точнее он есть, но выглядит по-другому. Кликните по этому значку и выберите из списка нужную сеть. Осталось ввести пароль:

wifi9

Готово, подключить Wifi Ubuntu не так уж сложно, и вы можете пользоваться интернетом.

wifi10

Подключение к Wifi в Ubuntu через терминал

Иногда случаются ситуации, когда графический интерфейс не работает. Тогда тоже может понадобиться интернет. Дальше мы рассмотрим, как подключить Wifi Ubuntu через терминал. Как вы знаете, для обмена данными в сети Wifi используется шифрование, это WEB, WPA и WPA2. Мы не будем рассматривать WEP, потому что это слишком просто, и это шифрование не безопасное - его можно взломать за несколько минут.

Остановимся на WPA. Настройка Wifi в Ubuntu через терминал состоит из нескольких этапов:

  • Просканировать сеть и найти доступные точки
  • Подключиться к точке, используя wpa_supplicant
  • Получить IP-адрес по DHCP
  • Настроить DNS-серверы, чтобы сайты открывались корректно

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

Сканируем сеть с помощью специальной утилиты:

sudo iwlist scan

wifi14

Была обнаружена одна сеть с ESSID H30_CE550. Отлично, теперь мы будем использовать эту точку, чтобы подключить Wifi Ubuntu. Выполните команду:

wifi15

wpa_passphrase H30_CE550 > wpa.conf

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

Для самого же подключения будем использовать утилиту wpa_supplicant. Рассмотрим её синтаксис:

$ wpa_supplicant -D драйвер -i интерфейс -c файл_содениения

Драйверов, которые задаются опцией -D всего два: это устаревший wext и новый драйвер Wifi Ubuntu nl80211. Не стоит путать эти драйверы с драйверами устройств. Это универсальная прослойка между этими драйверами и системой. Пробуйте сначала второй, а если не работает, то тогда уже первый. Интерфейс вы можете посмотреть из вывода утилиты iwlist scan, в моём случае это wlp3s0b1, но скорее всего у вас будет wlan0. А имя файла - это тот файл, который мы только что создали. Запускаем:

sudo wpa_supplicant -Dnl80211 -iwlp3s0b1 -cwpa.conf

wifi16

Готово, второй этап подключения Wifi в Ubuntu завершён: мы в сети. Осталось получить IP-адрес и DNS, чтобы полноценно работать. Оставьте этот терминал в покое и откройте новый. Вообще, можно было запустить wpa_supplicant с опцией -B, но тогда бы мы потеряли над ней контроль. Если бы настройка Wifi Ubuntu 16.04 пошла не так, нам бы пришлось искать и убивать процесс, к тому же, у нас не было бы вывода программы.

Для получения IP по протоколу DHCP воспользуемся утилитой dhclient. Сначала найдём все доступные DHCP-серверы в сети:

sudo dhclient -r

wifi17

Затем просто запросим адрес для нашего интерфейса:

sudo dhclient -i wlp3s0b1

wifi18

На получение IP-адреса уйдет несколько секунд. После этого, выполнив ifconfig, мы можем убедиться, что у нас уже есть IP:

sudo ifconfig wlp3s0b1

wifi6

А также проверить сеть с помощью ping:

wifi7

Готово. Подключение к Wifi в Ubuntu через терминал завершено. На случай, если вы надумаете тестировать это при запущенном NetworkManager, снимите галочку с управления Wifi в апплете, чтобы программа не мешала.

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

sudo rfkill unblock wlan

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

Выводы

Надеюсь, что после прочтения этой статьи вы стали лучше понимать, как работает Wifi в Ubuntu, как выполняется установка драйвера и что делать, если Ubuntu не видит Wifi. Настройка Wifi Ubuntu 16.04 - довольно сложная задача, особенные трудности может вызвать поиск прошивок и подбор драйвера. Если у вас остались вопросы, спрашивайте в комментариях!

В прошлом месяце мы начали разговор о технологии аутентификации 802.1X. Рассмотрели, каким образом она использует шифрование для защиты беспроводных сетей. Выяснили, что стандарт WEP давно мертв, WPA вполне пригоден для работы, ну а WPA2 - лучший вариант. Также были описаны два различных режима функционирования WPA (обеих версий): легко настраиваемый PSK (Персональный) и более мощный Корпоративный, предназначенный для защиты сетей в организациях.

Помимо вышеперечисленного, в предыдущей части были рассмотрены основные саппликанты (клиенты) 802.1X: Xsupplicant и wpa_supplicant . Мы использовали wpa_supplicant, настраивая его через графический интерфейс сетевых настроек Ubuntu. В этот раз займемся ручной настройкой wpa_supplicant через соответствующий конфигурационный файл. Это пригодится в случае, если ваш дистрибутив Linux не поддерживает настройку данного саппликанта через графический интерфейс.

Настройка wpa_supplicant с использованием конфигурационного файла

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

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

  • eapol_version: может принимать значения 1 и 2. По умолчанию wpa_supplicant использует EAPOL версии 2, как указано в стандарте IEEE 802.1X-2004. Однако, некоторые точки доступа все еще поддерживают только первую версию.
  • fast_reauth: значение 1 включает быструю повторную аутентификацию для всех поддерживаемых методов EAP, 2 - выключает.

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

Перед конфигурацией других блоков настройки сети, давайте проведем обзор некоторых параметров (полей), которые можно в них использовать для настройки параметров сети:

  • ssid: Имя сети. Обязательное поле.
  • scan_ssid: При установке параметра в 1 во фреймах probe request указывается конкретный SSID сети. Это используется при подключении к скрытой сети или к точке доступа, имеющей несколько идентификаторов SSID.
  • key_mgmt: Допустимы такие варианты, как WPA-PSK (при использовании этого значения обязательно также поле psk), WPA-EAP, IEEE8021X (аутентификация как с использованием динамически генерируемых ключей WEP, так и без) и NONE (для сетей открытых или использующих статические ключи WEP).
  • pairwise: Если используется один из стандартов WPA, укажите либо CCMP (в случае WPA2), либо TKIP (в случае WPA).
  • eap: Разделенный пробелами список поддерживаемых методов EAP: MD5, MSCHAPV2, OTP, GTC, TLS, PEAP, или TTLS.
  • identity: Строка, используемая для идентификации EAP, например имя пользователя.
  • password: Строка, используемая в качестве пароля EAP.
  • ca_cert: Полный путь к CA-сертификату в формате PEM или DER, необходим для возможности подтверждения сертификата сервера.
  • ca_path: Полный путь к директории, где хранятся файлы CA-сертификатов (в формате PEM), которые вы хотите добавить в список доверенных. Необходим для возможности подтверждения сертификата сервера.
  • client_cert: Полный путь к файлу сертификата клиента в формате PEM или DER format, необходим для возможности использования методов EAP, например TLS.

Теперь продемонстрируем использование некоторых из этих полей на примерах.

Вот пример блока, настроенного для подключения к сети в режиме WPA-Enterprise с аутентификацией 802.1X (используется протокол PEAP, требующий от пользователя ввода данных учетной записи):

Далее приведем пример блока, настроенного на подключение к сети WPA2-Enterprise с аутентификацией 802.1X (используется EAP-TLS, требующий сертификаты клиента и сервера):

Запускаем wpa_supplicant

Сохранив в файле wpa_supplicant.conf необходимые параметры и блоки настройки сети, можно попробовать его в деле. Вот пример того, как произвести запуск из командной строки:

Данная команда запускает демона в фоновом режиме, использует сетевой интерфейс wlan0 и считывает конфигурационные файлы из директории etc. Для получения дополнительной помощи, используйте man wpa_supplicant , чтобы прочесть руководство. Если возникают какие-то проблемы, попробуйте запустить следующую команду для вывода информации отладки:

Дабы не вводить все эти команды после каждой загрузки, в файле по адресу /etc/network/interfaces следует сохранить следующее:

Использование приложения wpa_gui

Если с командной строкой какие-то проблемы, попробуйте wpa_gui . Это графическая утилита, которую можно использовать для настройки большинства параметров wpa_supplicant. В зависимости от вашего дистрибутива Linux, утилита может быть установлена вместе с пакетом wpa_supplicant, либо из отдельного пакета wpa_gui.

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

Получение дополнительной помощи

Мы рассмотрели лишь некоторые аспекты работы с wpa_supplicant. В Интернете можно найти гораздо больше примеров по настройке конфигурационного файла, а также воспользоваться соответствующим списком рассылки для поиска информации или связи с другими пользователями.

Eric Geier - основатель и генеральный директор NoWiresSecurity , предлагающей аутсорсинговый сервис AuthenticateMyWiFi с целью помочь организациям защитить свои Wi-Fi сети. Также он является автором многих книг, посвященных сетевым и компьютерным технологиям, из серий Cisco Press и For Dummies.

wpa_supplicant – это wifi-проситель для обработки сетевой аутентификации.

Contents

Установка

USE-флаги

USE flags for net-wireless/wpa_supplicant IEEE 802.1X/WPA supplicant for secure wireless transfers

ap Add support for access point mode
bindist Flag to enable or disable options for prebuilt (GRP) packages (eg. due to licensing issues)
broadcom-sta Flag to help users disable features not supported by broadcom-sta driver
dbus Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc)
eap-sim Add support for EAP-SIM authentication algorithm
eapol-test Build and install eapol_test binary
fasteap Add support for FAST-EAP authentication algorithm
fils Add support for Fast Initial Link Setup (802.11ai)
hs2-0 Add support for 802.11u and Passpoint for HotSpot 2.0
macsec Add support for wired macsec
mbo Add support Multiband Operation
mesh Add support for mesh mode
p2p Add support for Wi-Fi Direct mode
privsep Enable wpa_priv privledge separation binary
ps3 Add support for ps3 hypervisor driven gelic wifi
qt5 Add support for the Qt 5 application and UI framework
readline Enable support for libreadline, a GNU line-editing library that almost everyone wants
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
smartcard Add support for smartcards
tdls Add support for Tunneled Direct Link Setup (802.11z)
uncommon-eap-types Add support for GPSK, SAKE, GPSK_SHA256, IKEV2 and EKE
wimax Add support for Wimax EAP-PEER authentication algorithm
wps Add support for Wi-Fi Protected Setup

Emerge

После просмотра USE-флагов установите net-wireless/wpa_supplicant, используя команду Portage emerge :

Настройка

Файлы

Настройка для беспроводного интерфейса

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

Файл /etc/wpa_supplicant/wpa_supplicant.conf

Чтобы разрешить непривилегированным пользователям управлять соединением с использованием wpa_gui / wpa_cli , убедитесь, что пользователи добавлены в группу wheel .

Этот файл по умолчанию не существует; хорошо документированный шаблонный файл конфигурации может быть скопирован из /usr/share/doc/$/wpa_supplicant.conf.bz2 , где значение переменной P – название и версия установленного в данный момент wpa_supplicant:

Настройка проводного 802.1X

Проводные соединения также можно обрабатывать с помощью wpa_supplicant, что полезно для сетей 802.1X. Создайте отдельный конфигурационный файл, содержащий настройки проводной сети. Пример ниже использует сертификаты для аутентификации, проверьте примеры других методов в man-странице wpa_supplicant.conf.

Файл /etc/wpa_supplicant/wpa_supplicant_wired.conf

Так как конфигурационный файл содержит конфиденциальную информацию, установите соответствующий режим.

wpa_supplicant требует нескольких дополнительных параметров, чтобы применить вышеописанную конфигурацию к проводному интерфейсу (eth0) Учтите, что приведённые ниже аргументы wpa_supplicant подразумевают, что версия wpa_supplicant >=2.6-r2 (-M, CONFIG_MATCH_IFACE=y)

Позвольте wpa_supplicant обрабатывать запуск/остановку интерфейсов удалением их из /etc/init.d и активацией службы wpa_supplicant

Проверьте статус проводного интерфейса через wpa_cli

Настройка сетевого менеджера

Важно
Приложения, перечисленные в списке Network management, обычно не работают вместе. Убедитесь, что одновременно запущен только один из этих сервисов. Запуск более одного сервиса управления сетью приведёт к непредсказуемым результатам!

Убедитесь, что выбрали соответствующую установку.

Настройка с dhcpcd в качестве менеджера сетей

First follow the setup guide for dhcpcd.

Emerge wpa_supplicant (Version >=2.6-r2 is needed in order to get the CONFIG_MATCH_IFACE option added in April 2017.)

Complete its conf.d file with the -M option for the wireless network interface:

In case authentication for the wired interface is needed this configuration file should look like

With the configuration done, run it as a service:


В случае если необходим устаревающий драйвер WEXT, изменение драйвера может помочь решить проблемы, когда адаптер подключается и тут же отключается по причине 3. Выполните wpa_supplicant -h , чтобы увидеть список доступных драйверов, которые были встроены во время компиляции.

Файл /etc/conf.d/wpa_supplicant Настройка драйвера для wext

Настройка со сценариями Gentoo net.*

Укажите сетевым сценариям использовать wpa_supplicant:

Использование

Использование wpa_gui

Самый простой способ использовать wpa_supplicant – через его графический интерфейс wpa_gui . Чтобы включить его, соберите wpa_supplicant с USE-флагом qt5 .

Использование wpa_cli

Wpa_supplicant также имеет интерфейс командной строки. Ввод wpa_cli запускает его в интерактивном режиме с дополнением по tab. Ввод help в командной строке отобразит список всех доступных команд (нажмите "развернуть", чтобы увидеть ниже вывод команды wpa_cli ):

Использование wpa_passphrase

wpa_supplicant включает в себя инструмент для быстрой записи блока network из командной строки для сетей с предварительным ключом (также известных как WPA-PSK или сети с паролем): wpa_passphrase .

SSID необходим. Если пропустить парольную фразу, её можно будет ввести, когда она будет запрошена.

Получившийся вывод может быть затем скопирован или направлен в /etc/wpa_supplicant/wpa_supplicant.conf .

Редактирование вручную

Конечно, конфигурационный файл /etc/wpa_supplicant/wpa_supplicant.conf может быть также отредактирован вручную. Однако, это может быть очень утомительно, если компьютер должен подключаться ко множеству различных точек доступа.

Примеры можно найти в man 5 wpa_supplicant.conf и /usr/share/doc/wpa_supplicant-2.4-r3/wpa_supplicant.conf.bz2 .

WPA2 с wpa_supplicant

Подключение к любой точке доступа с YourSSID

Файл /etc/wpa_supplicant/wpa_supplicant.conf

Используйте bssid для указания точки доступа, к которой следует подключиться, по её MAC-адресу в случае, если есть повторители. Не забывайте воспользоваться wpa_passphrase <ssid> [passphrase] для создания psk

Файл /etc/wpa_supplicant/wpa_supplicant.conf

Автоматическое подключение к любой незащищённой сети

Файл /etc/wpa_supplicant/wpa_supplicant.conf

Устранение проблем

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

Проверьте среди известных ошибок

Запустите wpa_supplicant в режиме отладки

Убедитесь, что остановлены все запущенные процессы wpa_supplicant:

Что-либо наподобие этого может быть использовано для отладки (нажмите "развернуть", чтобы посмотреть вывод ниже):

Блог про Linux, Bash и другие информационные технологии

Установка необходимых пакетов

В первую очередь необходимо проверить, установлены ли пакет wpasupplicant и wireless-tools. Эти пакеты позволят вам подключаться к беспроводным сетям с WPA и WPA2 аутентификацией. В Debian и Ubuntu это делается командами

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

Кроме того, может понадобиться поставить микрокод (firmware) для устройства, установив соответствующий производителю пакет. Микрокод также называют прошивкой, но это не совсем правильно. Микрокод загружается в устройство перед началом работы с ним, а прошивка в устройстве находится постоянно. Для Intel это может быть, например, пакет firmware-iwlwifi из репозитория non-free. Микрокод часто лежит именно в этой ветке репозиториев. Либо это может быть пакет firmware-realtek, либо firmware-linux-free.

Проверка беспроводного контроллера

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

А в списке интерфейсов должен присутствовать соответствующий сетевой интерфейс, обычно это wlan0. Просмотреть список можно командой

Настройка WiFi из командной строки

Если устройство в системе найдено, можно переходить к настройке сети. Для начала просмотрим список доступных локальных сетей:

На экран будет выведен список доступных сетей в виде записей такого вида:

Создаем файл /etc/wpa_supplicant/wpa_supplicant.conf:

И затем даем команду

После этого, если адрес не получен автоматически, вызываем DHCP-клиент:

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

Если адрес указан верно, то вы сможете получить доступ к Интернету. Но обычно DHCP-клиент получает шлюз по умолчанию автоматически

Изменение конфигурационных файлов

Читайте также: