Wpa supplicant что это
Настройка строгой аутентификации (802.1X) Wi-Fi в Linux, часть 2
Настройка wpa_supplicant с использованием конфигурационного файла
В случае, если вы установили wpa_supplicant отдельно, его следует настроить через конфигурационный файл. В случае, если саппликант предустановлен в вашем дистрибутиве Linux, вы все равно можете использовать конфигурационный файл для более тонкой и точной настройки параметров аутентификации и шифрования.
Вот пара основных параметров, требующих настройки в первую очередь (они применяются ко всем сетям, к которым вы подключаетесь):
Подробные настройки сетей, к которым вы хотите подключиться, указываются в блоках, заключенных в фигурные скобки. Саппликант будет пытаться подключиться к перечисленным сетям в том порядке, в каком они указаны. Прежде чем тратить время на настройку всех параметров, стоит проверить, нормально ли саппликант работает с вашим беспроводным драйвером. Для этого нужно подключиться к незашифрованной точке доступа, используя следующий блок:
Перед конфигурацией других блоков настройки сети, давайте проведем обзор некоторых параметров (полей), которые можно в них использовать для настройки параметров сети:
Теперь продемонстрируем использование некоторых из этих полей на примерах.
Вот пример блока, настроенного для подключения к сети в режиме WPA-Enterprise с аутентификацией 802.1X (используется протокол PEAP, требующий от пользователя ввода данных учетной записи):
Далее приведем пример блока, настроенного на подключение к сети WPA2-Enterprise с аутентификацией 802.1X (используется EAP-TLS, требующий сертификаты клиента и сервера):
Запускаем wpa_supplicant
Сохранив в файле wpa_supplicant.conf необходимые параметры и блоки настройки сети, можно попробовать его в деле. Вот пример того, как произвести запуск из командной строки:
Дабы не вводить все эти команды после каждой загрузки, в файле по адресу /etc/network/interfaces следует сохранить следующее:
Использование приложения wpa_gui
На рисунке 1 показано, как выглядит утилита в Ubuntu. По сути, это графическая оболочка для работы с конфигурационным файлом и командной строкой. Позволяет искать беспроводные сети и сохранять для них профили, есть возможность просмотра состояния сети и истории событий, также можно настроить параметры WPS.
Получение дополнительной помощи
Мы рассмотрели лишь некоторые аспекты работы с wpa_supplicant. В Интернете можно найти гораздо больше примеров по настройке конфигурационного файла, а также воспользоваться соответствующим списком рассылки для поиска информации или связи с другими пользователями.
Если вы как и я перемещаетесь между несколькими узлами беспроводной сети с WPA-защитой. И вы хотите, чтобы ваш ноутбук был подключен к беспроводной сети при загрузке, то вот он рецепт.
Прошу обратить внимание, вы можете использовать для этого NetworkManager, однако он по умолчанию не может подключаться к сети при загрузке. Требуется войти пользователою в систему и дать NetworkManager доступ к связке ключей, для активации WPA ключа.
Данное решение использует wpa_supplicant без NetworkManager, поэтому подключение к сети проходит при загрузке системы сразу. Правда это требует редактирование определенных файлов.
Редактирование /etc/wpa_supplicant/wpa_supplicant.conf
Для большинства ваших сетей потребуется всего одна запись в wpa_supplicant.conf, которая выглядит следующим образом:
Очевидно, что вы замените MYNETWORKSSI и MYNETWORKPS своими значениями. Пароль для вашей зашифрованной сети должен быть кодирован в шестнадцатиричную строку.
последняя строка (psk) содержит hex-код, который требуется для связи с сетью.
Примечание: в прмере выше используется парольная фраза, а хеш код не задан. Подобный подход работает в CentOS 5. В CentOS 6 необходимо также задать и hex-код.
Редактирование /etc/sysconfig/network-scripts/ifup-wireless
Добавте следующую строку в конец этого файла:
Редактирование /etc/sysconfig/network-scripts/ifcfg-*
Тут будет несколько файлов в /etc/sysconfig/network-scripts/, которые описывают сеть, такие как ifcfg-eth0 (вашей проводной сети) и один с названием ifcfg-wlan0 или ifcfg-eth1 который описывает беспроводное подключение.
Тот, что соответствует беспроводному подключению, должен содержать строку:
Добавте туда еще одну строчку:
Редактирование /etc/rc.d/rc.local
Мы уже все практически настроили для беспроводной сети. К сожалению сценарий запуска в CentOS некоректен. Он пытается поднять интерфейс (и следовательно wpa_supplicant) до старта DBUS, а последний просит быть уже запущенным DBUS.
Быстрое решение этой проблемы добавление строки в конце файла /etc/rc.d/rc.local который описывает беспроводной наш интерфейс:
(или /sbin/ifup wlan0, если ваш беспроводной интерфейс wlan0).
После этого появится беспроводной интерфейс.
Отключеине интерфейса и wpa_supplicant при загрузке
Исходя из того, что мы запустили wpa_supplicant непосредственно в сценарии ifup, нет необходимости в попытках запуска его в сценарии загрузки при старте системы. Отключите его с помощью команды:
Вы также можете отключить автоматический запуск беспроводного подключения (eth1 или wlan0) на загрузке сетевого устройства (приложения Network Device) потому, что мы его запустили уже вручную в rc.local.
Простой способ автоматического поднятия интерфейса Wi Fi без ввода пароля в CentOS 6 и старше
Исходные данные точки доступа Wi Fi, к которой должена автоматически подключаться наша система CentOS:
1. Создадим в директории /etc конфигурационный файл беспроводной сети:
Данный конфигурационный файл может распологаться где угодно по вашему желанию.
2. Теперь создадим скрипт, который будет при старте системы поднимать беспроводной интерфейс (расположим его в /usr/bin и обзовем wlan.sh):
Команда sleep 10 выполняет небольшую паузу в 10 секунд, а dhclient wlan0 получает настройки сети (в примере точка доступа раздает ip адреса автоматически).
3. Добавим наш скрипт в автозагрузку, дадим права на исполнение (под рутом выполним):
p.s. для большей надежности вы можете прописать дополнительные параметры в конфигурационном файле mysupplicant.conf (для примера: очередность сканирования).
Конфигурационный файл может содержать несколько секций описывающие беспроводные сети. Изначальный шаблон данного файла, который вы можете использовать, расположен по адресу: /etc/wpa_supplicant/wpa_supplicant.conf.
Скрипт мы намеренно расположили в директории /usr/bin, чтобы selinux при старте не блокировал его запуск в контексте установок безопасности (намеренно не используется инструментарий restorecon для изменения контекста безопасности). Если selinux у вас отключен, то вы можете распологать данный скрипт где угодно.
wpa_supplicant
wpa_supplicant is a cross-platform supplicant with support for WEP, WPA, WPA2 and WPA3 (IEEE 802.11i). It is suitable for desktops, laptops and embedded systems. It is the IEEE 802.1X/WPA component that is used in the client stations. It implements key negotiation with a WPA authenticator and it controls the roaming and IEEE 802.11 authentication/association of the wireless driver.
Contents
Installation
Install the wpa_supplicant package, which includes the main program wpa_supplicant, the passphrase tool wpa_passphrase, and the text front-end wpa_cli.
Optionally, also install the official wpa_supplicant_gui AUR which provides wpa_gui, a graphical front-end for wpa_supplicant, or wpa-cute AUR which is a fork from an earlier version of wpa_gui with a couple of fixes and improvements.
Overview
The first step to connect to an encrypted wireless network is having wpa_supplicant obtain authentication from a WPA authenticator. In order to do this, wpa_supplicant must be configured so that it will be able to submit the correct credentials to the authenticator.
Once you are authenticated you need to assign an IP address, see Network configuration#IP addresses.
Connecting with wpa_cli
This connection method allows scanning for available networks, making use of wpa_cli, a command line tool which can be used to configure wpa_supplicant. See wpa_cli(8) for details.
In order to use wpa_cli, a control interface must be specified for wpa_supplicant, and it must be given the rights to update the configuration. Do this by creating a minimal configuration file:
Now start wpa_supplicant with:
This will present an interactive prompt ( > ), which has tab completion and descriptions of completed commands.
Use the scan and scan_results commands to see the available networks:
Finally save this network in the configuration file and quit wpa_cli:
Once association is complete, you must obtain an IP address, for example, using dhcpcd.
Connecting with wpa_passphrase
This connection method allows quickly connecting to a network whose SSID is already known, making use of wpa_passphrase, a command line tool which generates the minimal configuration needed by wpa_supplicant. For example:
This means that wpa_supplicant can be associated with wpa_passphrase and started with:
Finally, you should obtain an IP address, see Network configuration#IP addresses.
Advanced usage
Configuration
As explained in #Connecting with wpa_passphrase, a basic configuration file can be generated with:
This will only create a network section. A configuration file with also the ability of #Connecting with wpa_cli and some other common options may look like:
If security is not a concern, the passphrase can also be defined in clear text in the network section by enclosing it in quotes:
If the network does not have a passphrase, e.g. a public Wi-Fi:
To connect to a WPA-Enterprise network, see #802.1x/radius.
Further network blocks may be added manually, or using wpa_cli as illustrated in #Connecting with wpa_cli. In order to use wpa_cli, a control interface must be set with the ctrl_interface option. Setting ctrl_interface_group=wheel allows users belonging to such group to execute wpa_cli. This setting can be used to enable users without root access (or equivalent via sudo etc) to connect to wireless networks. Also add update_config=1 so that changes made with wpa_cli to example.conf can be saved. Note that any user that is a member of the ctrl_interface_group group will be able to make changes to the file if this is turned on.
Alternatively, wpa_cli set can be used to see options’ status or set new ones. Multiple network blocks may be appended to this configuration: the supplicant will handle association to and roaming between all of them. The strongest signal defined with a network block usually is connected to by default, one may define priority= to influence behaviour. For example to auto-connect to any unsecured network as a fallback with the lowest priority:
Once you have finished the configuration file, you can optionally use it as a system-wide or per-interface default configuration by naming it according to the paths listed in #At boot (systemd). This also applies if you use additional network manager tools, which may rely on the paths (for example Dhcpcd#10-wpa_supplicant).
Connection
Manual
First start wpa_supplicant command, whose most commonly used arguments are:
See wpa_supplicant(8) for the full argument list. For example:
followed by a method to obtain an ip address manually as indicated in the #Overview, for example:
At boot (systemd)
The wpa_supplicant package provides multiple systemd service files:
To enable wireless at boot, enable an instance of one of the above services on a particular wireless interface. For example, enable the wpa_supplicant@interface systemd unit.
Now choose and enable an instance of a service to obtain an ip address for the particular interface as indicated in the #Overview. For example, enable the dhcpcd@interface systemd unit.
802.1x/radius
To connect a wired adapter using 802.1x/radius you will need to specify some configurations and enable the necessary service for the adapter. This is useful for headless servers using networkd.
Replace adapter with the wired adapter you wish to connect, and adapt the settings to match your 802.1x/radius requirements.
To use the hash instead of the plaintext password, you can use the hash keyword:
To hash your password:
Before running the wpa_supplicant-wired@adapter.service service, make sure to set the device down:
wpa_cli action script
The following example will use desktop notifications to notify the user about the events:
Roaming
When connected to a wireless network with multiple access points, wpa_supplicant is typically responsible for roaming between access points. Choosing a new access point requires wpa_supplicant to perform a scan of available networks, which causes a brief interruption in connectivity to the current access point while the wireless radio scans other frequencies. After a scan, if wpa_supplicant detects a closer access point (BSSID) in the current network (SSID), in terms of signal strength (RSSI), it will re-associate to the closer access point.
The default configuration of wpa_supplicant has relatively timid roaming: it will rescan only when the association to the current access point is lost. This means that, if a client moves far away from its current access point, but not far enough to completely lose signal, the client will keep using the weak signal instead of roaming to a closer access point.
To make wpa_supplicant more aggressive about roaming, set the bgscan parameter in the configuration file, such as:
Troubleshooting
nl80211 driver not supported on some hardware
On some (especially old) hardware, wpa_supplicant may fail with the following error:
This indicates that the standard nl80211 driver does not support the given hardware. The deprecated wext driver might still support the device:
If the command works to connect, and the user wishes to use systemd to manage the wireless connection, it is necessary to edit the wpa_supplicant@.service unit provided by the package and modify the ExecStart line accordingly:
Problem with mounted network shares (cifs) and shutdown
When you use wireless to connect to network shares you might have the problem that the shutdown takes a very long time. That is because systemd runs against a 3 minute timeout. The reason is that WPA supplicant is shut down too early, i.e. before systemd tries to unmount the share(s). A bug report suggests a work-around by editing the wpa_supplicant@.service as follows:
Password-related problems
In some instances it was found that storing the passphrase cleartext in the psk key of the wpa_supplicant.conf network block gave positive results (see [2]). However, this approach is rather insecure. Using wpa_cli to create this file instead of manually writing it gives the best results most of the time and therefore is the recommended way to proceed.
Problems with eduroam and other MSCHAPv2 connections
Ensure that your config uses
with a capital «v» (see FS#51358). You could even omit this setting entirely, since MSCHAPV2 is the default.
Connections to pure WPA3-SAE access points
Make sure to define the following within the network block of the config to enable connections to pure WPA3 access points:
Connections to mixed WPA2-PSK/WPA3-SAE access points
Mixed WPA2-PSK/WPA3-SAE access points will require an alternative setting for key_mgmt as shown below:
Подключение к сети WiFi через консоль с помощью wpa-supplicant
Сегодня разберемся как можно подключится к WiFi сети с помощью программы wpa-supplicant через консоль в linux.
Первое что необходимо сделать, так это проверить установлен ли у вас пакет wpasupplicant, иначе ничего не выйдет.
Следующим шагом проверим наличие и название беспроводного интерфейса:
Если выдает что команда не найдена, то можно воспользоваться вот такой командой:
Далее подключаем (поднимаем) wlp2s0 интерфейса:
Сканируем сеть на наличие WiFi сетей:
Вывод команды выглядит следующим образом:
Мой Wi-Fi под названием «ezhiki», теперь создадим файл, в котором будут лежать все необходимые параметры нашего подключения:
то Вы уведите примерно следующее:
Если чего-то не хватает, то дописываем со своими значениями и жмём
ctrl+O, enter, ctrl+X
Ну что же, можно уже и подключится к wifi сети:
ВНИМАНИЕ! Нужно не забыть прописать в конфигурационном файле сети тип подключения: вручную или dhcp (как я/). Для этого наберите в консоле:
Автоматическое подключение к Wi-Fi сети
Если после перезагрузки все выше описанные действия приходятся проделывать заново, то есть смысл отредактировать конфигурационный файл поднятия интерфейсов при загрузки системы. Также данный пункт вам придется проделать если Вы пытаетесь запустить USB Wi-Fi свисток. И так конфигурационный файл находится в директории /etc/network давайте откроем его данной командой:
Добавим в конце файла во такие строки.
Сохраняем ctrl+o, enter и закрываем ctrl+x. Теперь после перезагрузки подключение к Wi-Fi должно отработать автоматом.
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Переводы страниц руководства
НАЗВАНИЕ
ОБЗОР
ОБЩИЙ ОБЗОР
Беспроводные сети не требуют физического доступа к сетевому оборудованию таким же образом, что и проводные сети. Это упрощает неавторизованным пользователям пассивное наблюдение за сетью и перехват всех переданных кадров. В добавок, неавторизованное использование сети значительно проще. Во многих случаях, это может произойти без явного уведомления пользователя, поскольку беспроводной сетевой адаптер может быть настроен на автоматическое вхождение в любую доступную сеть.
Для обеспечения уровня безопасности беспроводных сетей можно воспользоваться шифрованием на уровне канала. Исходный стандарт беспроводных сетей IEEE 802.11 включает простой механизм шифрования WEP. Однако доказано, что он имеет недостатки во многих аспектах, а сети защищённые с помощью WEP не могут считаться безопасными. Для улучшения безопасности сети можно использовать аутентификацию IEEE 802.1X и часто меняемые динамические ключи WEP, но даже в этом случае можно ожидать унаследованных проблем, возникающих при использовании WEP для шифрования. Защищённый доступ Wi-Fi (WPA) и поправка IEEE 802.11i к стандарту беспроводной сети вводит хорошо улучшенный механизм безопасности беспроводных сетей. Сети, использующие IEEE 802.11i можно назвать действительно безопасными, поскольку при этом применяется CCMP (механизм шифрования основанный на сильном криптографическом алгоритме AES), который может обеспечить эффективную защиту от неавторизованного доступа тем приложениям, которые в ней нуждаются.
wpa_supplicant является компонентом просителя WPA, то есть той частью, которая запускается на стороне клиентской станции. wpa_supplicant осуществляет обмен данными с аутентификатором WPA и аутентификацией по протоколу EAP с сервером аутентификации. К тому же, wpa_supplicant контролирует переход между сетями (roaming) и аутентификацию/ассоциацию IEEE 802.11 в драйвере беспроводной локальной сети.
wpa_supplicant представляет собой «демон», программу которая запускается в фоновом режиме и действует в качестве служебного компонента, управляющего беспроводным соединением. wpa_supplicant поддерживает различные программы-оболочки, например текстовый wpa_cli, входящий в состав wpa_supplicant.
Перед тем, как wpa_supplicant сможет сделать свою работу, необходимо что бы сетевой интерфейс был доступен. Это означает, что физическое устройство должно быт присутствовать и быть включённым, а драйвер устройства должен быть загружен. Демон немедленно прекратит работу, если устройство ещё не доступно.
После того, как wpa_supplicant настроил сетевое устройство, могут быть запущены более высокоуровневые средства настройки, например DHCP. Существуют различные способы для встраивания wpa_supplicant в сценарии настройки сети компьютера, некоторые из которых описаны в разделе ниже.
Для ассоциирования с точкой доступа при помощи WPA используются следующие шаги:
o | wpa_supplicant запрашивает драйвер ядра просканировать окружающие базовые станции (BSS) |
o | wpa_supplicant выбирает базовую станцию (BSS) основываясь на её настройках |
o | wpa_supplicant запрашивает драйвер ядра ассоциироваться с указанной выбранной базовой станцией (BSS) |
o | Если WPA-EAP: встроенный проситель IEEE 802.1X завершает аутентификацию EAP на сервере аутентификации (ретранслируемом с помощью аутентификатора в точке доступа) |
o | Если WPA-EAP: от просителя IEEE 802.1X принимается мастер-ключ |
o | Если WPA-PSK: wpa_supplicant использует общий ключ PSK в качестве мастер-ключа сеанса |
o | wpa_supplicant завершает четырёхэтапное рукопожатие WPA и рукопожатие группового ключа (Group Key Handshake) с аутентификатором точки доступа |
o | wpa_supplicant настраивает ключи шифрования для направленного вещания и широковещания |
o | могут передаваться и приниматься обычные пакеты данных |
ПОДДЕРЖИВАЕМЫЕ ВОЗМОЖНОСТИ
Список поддерживаемых возможностей WPA/IEEE 802.11i:
o | WPA-PSK («WPA-Personal») | ||||||||||||||||||||||||||||||||||||||||||||||||||
o | WPA с EAP (например, с сервером аутентификации RADIUS) («WPA-Enterprise») Просителем IEEE 802.1X поддерживаются следующие встроенные методы аутентификации:
| ||||||||||||||||||||||||||||||||||||||||||||||||||
o | управление ключами по CCMP, TKIP, WEP104, WEP40 | ||||||||||||||||||||||||||||||||||||||||||||||||||
o | RSN/WPA2 (IEEE 802.11i)
|
ДОСТУПНЫЕ ДРАЙВЕРЫ
hostap | (по умолчанию) Ведущий драйвер точки доступа (Intersil Prism2/2.5/3). (Он также может использоваться совместно с загрузчиком драйвера Linuxant). |
hermes | Драйвер Agere Systems Inc. (Hermes-I/Hermes-II). |
madwifi | |
Поддерживаемые MADWIFI 802.11 (Atheros, etc.). | |
atmel | ATMEL AT76C5XXx (USB, PCMCIA). |
wext | Беспроводные расширения Linux (обобщённый). |
ndiswrapper | |
Linux ndiswrapper. | |
broadcom | |
Драйвер Broadcom wl.o. | |
ipw | Драйвер Intel ipw2100/2200. |
wired | Проводной драйвер Ethernet wpa_supplicant |
bsd | Поддерживаемые BSD 802.11 (Atheros, etc.). |
ndis | Драйвер Windows NDIS. |
ОПЦИИ КОМАНДНОЙ СТРОКИ
Большинство опций командной строки имеют глобальную область действия. Некоторые относятся к интерфейсу, и они применимы только в том случае, если указана хотя бы одна опция -i, иначе они будут проигнорированы. Группы опций для разных интерфейсов могут разделяться опцией -N.
-b интерфейс_моста | |
Необязательное имя интерфейса моста. (Для интерфейса) | |
-B | Запустить демона в фоновом режиме. |
-c имя_файла | |
Путь к файлу конфигурации. (Для интерфейса) | |
-C ctrl_interface | |
Путь к сокету управления_интерфейсом (используется только если -c отсутствует). | |
-i имя_интерфейса | |
Интерфейс для прослушивания. Можно указывать несколько экземпляров этой опции по одной для каждого интерфейса, разделённых опцией -N (смотри ниже). | |
-d | Увеличивает подробность отладочных сообщений (-dd ещё больше). |
-D драйвер | |
Используемый драйвер. (На интерфейс, смотри доступные опции далее). | |
-f выходной_файл | |
Журналировать вывод в указанный файл, а не на стандартный вывод. | |
-g глобальный_сокет_управления_интерфейсом | |
Путь к глобальному_сокету_управления_интерфейсом. Если указано, определение интерфейса можно опустить. | |
-K | Включать ключи (пароли и т.п.) в отладочный вывод. |
-t | Включать отметки времени в отладочный вывод. |
-h | Помощь. Показать справку по использованию. |
-L | Показать лицензию (GPL и BSD). |
-p | Параметры драйвера. (На интерфейс) |
-P PID_файл | |
Путь к файлу с идентификатором процесса. | |
-q | Уменьшить подробность отладочных сообщений (-qq ещё меньше). |
-u | Включить управляющий интерфейс DBus. Если включено, то определение интерфейса можно опустить. |
-v | Показать версию. |
-W | Ждать управляющий интерфейс перед запуском. |
-N | Начать описание новых интерфейсов. |
ПРИМЕРЫ
В большинстве случаев wpa_supplicant запускается следующим образом:
Эта команда заставляет процесс ответвиться в фоновый режим.
Наилегчайший способ отладки проблем и получения журнала об ошибках для составления отчета об ошибке, заключается в запуске wpa_supplicant в фоновом режиме с включенным режимом отладки:
ТРЕБОВАНИЯ К ОПЕРАЦИОННОЙ СИСТЕМЕ
Текущие аппаратные/программные требования:
o | ядро Linux 2.4.x или 2.6.x с беспроводными расширениями Linux v15 или новее |
o | FreeBSD 6-CURRENT |
o | Microsoft Windows с WinPcap (по меньшей мере WinXP, может работать с другими версиями) |
ПОДДЕРЖИВАЕМЫЕ ДРАЙВЕРЫ
АРХИТЕКТУРА
Система wpa_supplicant состоит из следующих компонентов:
БЫСТРОЕ НАЧАЛО
Для начала, создайте файл конфигурации, например /etc/wpa_supplicant.conf, который описывает интересные вам сети. За более подробной информацией обратитесь к wpa_supplicant.conf(5).
Когда файл конфигурации готов, вы можете проверить работает ли он, запустив wpa_supplicant с помощью следующей команды, которая запустит его в интерактивном режиме со включенным режимом отладки:
Если всё хорошо, вы можете выполнить следующую команду, которая запустит wpa_supplicant в фоновом режиме без отладки:
ИНТЕРФЕЙС К PCMCIA-CS/CARDMRG
Например, для включения поддержки WPA можно воспользоваться следующими небольшими изменениями в сценариях pcmcia-cs:
Добавить MODE=»Managed» и WPA=»y» в сетевую схему в /etc/pcmcia/wireless.opts.
Добавить следующий блок в конец обработчика действия start в /etc/pcmcia/wireless:
Добавить следующий блок в конец обработчика действия stop (может потребоваться отделение от других действий) в /etc/pcmcia/wireless:
Это заставит cardmgr запускать wpa_supplicant при подключении карты.
СМОТРИ ТАКЖЕ
ПРАВА
wpa_supplicant Copyright © 2003-2007, Джуни Мэлайнен (Jouni Malinen) и вкладчики. Все права защищены.
Эта программа распространяется под двумя лицензиями: GPL версии 2 и лицензией BSD. Любая из лицензий может использоваться на ваш выбор.