Wifi direct linux как включить

Обновлено: 05.07.2024

В этой статье я расскажу, как можно настроить WiFi с помощью wpa_supplicant, без всяких Xorg/X11 утилит. Это необходимо для того, чтобы базовые службы ОС исправно работали с минимальным набором технических средств удаленного доступа. Программа будет исполняться как служба, настройки сделаны правкой конфиг файлов.

По-быстрому, установить соединение с открытой точкой доступа можно таким образом.

Если же надо всерьез и надолго, то прошу внутрь.

Общие сведения о wpa_supplicant

Что из себя представляет wpa_supplicant?

  • Кросс-платформенная открытая реализация стандарта IEEE 802.11 для Linux, *BSD, Windows, Mac OS X и прочих систем.
  • Полная поддержка WPA2, WPA и более старых протоколов безопасности беспроводной LAN сети.
  • Приложение пользовательского пространства, выполняющее функции саппликанта и SME оператора, исполняющего MLME инструкции.
  • WPA и полностью IEEE 802.11i/RSN/WPA2.
  • WPA-PSK и WPA2-PSK (pre-shared key) ("WPA-Personal").
  • WPA вместе с EAP (т.е., сервером аутентификации RADIUS) ("WPA-Enterprise") управление ключами CCMP, TKIP, WEP (104/128 и 40/64 бит).
  • Кэширование RSN, PMKSA: предварительную аутентификацию.

Как wpa_supplicant устанавливает связь с точкой доступа?

  • Cетевой интерфейс должен исправно функционировать с установленным драйвером, прежде чем wpa_supplicant запустится.
  • Wpa_supplicant запрашивает драйвер ядра сканировать доступные Basic Service Set (BSS).
  • Wpa_supplicant производит выбор BSS в соответствии с настройками.
  • Wpa_supplicant запрашивает драйвер ядра установить соединение с выбранной BSS.
  • Для WPA-EAP: аутентификацию EAP производит встроенный IEEE 802.1X Supplicant, либо же внешний Xsupplicant с сервером аутентификации.
  • Для WPA-EAP: получен мастер-ключ от IEEE 802.1X Supplicant.
  • Для WPA-PSK wpa_supplicant использует пароль PSK в качестве мастер-ключа сессии.
  • Wpa_supplicant производит с аутентификатором точки доступа 4-х этапное согласование [1] и групповое согласование ключей.
  • Wpa_supplicant производит шифрование однонаправленных и широковещательных пакетов [2] , после чего начинается обычный обмен данными.

Главный и большой плюс wpa_supplicant — его юниксвейность, то есть соответствие принципу Unix Way, когда программа делает что-то одно, но делает это хорошо. В каком-то смысле wpa_supplicant также Gentoo Way. Она требует некоторого внимания и терпения вначале, но затем о ней можно напрочь забыть. После того как программа настроена и пущена в дело, она полностью выпадает из потока событий, превращаясь в пару строк из ps -ef . Она не сверкает и не мигает в системном трее, не оповещает о разведанных, подключенных и отключенных беспроводных сетях. Ее просто нет, пока вы сами ее не поищите.

Из минусов — сложность настройки и конфигурации. Много возни по сравнению с тырк-тырк-тырк в окне Network Manager , не говоря уже о WiFi подключении с любого Андроид устройства. Если вы собираетесь в поездку с Linux ноутбуком, то наверняка предпочтете более дружественный фронтенд настройки беспроводной сети, чтобы быстро подключаться к бесплатным точкам доступа WiFi в аэропорту, гостинице или в рабочей обстановке. Для домашнего же беспроводного интернета — самое то.

Установка

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

Подключение без конфиг файла

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

Пример для открытой сети был показан в самом начале. Для закрытой WPA сети быстрое подключение выгладит так:

В начале надо запустить саму программу wpa_supplicant и сопутствующую wpa_cli .

Затем настройка из интерактивного интерфейса wpa_cli .

Для закрытой WPA2 сети:

В конце необходимо вручную запустить демон DHCP.

Подключение к Ad-Hoc сети

Никогда с такой не сталкивался, но готовым нужно быть ко всему. Подключение к открытой ad-hoc.

То же самое с помощью iw .

Настройка для домашней сети

Теперь самое интересное — настройка. Этот процесс задокументирован для Arch Wiki, Debian Wiki и Gentoo Wiki, но всех деталей там естественно нет.

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

Начнем с wpa_supplicant.conf . Если вы подключаетесь из дома к WPA/WPA2, то скорее всего используете пароль для WiFi соединения, что соответствует режиму WPA-PSK ("WPA-Personal") . Мы не будет рассматривать варианты с WEP шифрованием, так как оно ненамного лучше открытой сети.

Возьмем типовой конфиг из документации. Например такой.

Первая строка необходима, без ctrl_interface программа даже не запустится. GROUP=wheel нужно для того, чтобы запускать из под обычного пользователя в графическом интерфейсе wpa_gui, но это не наш путь. Поэтому меняем на рутовый GROUP=0 .

Каждой сети в файле настроек должен соответствовать блок network <> . Покопавшись в исходниках, обнаружил нашел годное писание переменной ap_scan в файле config.h , а в мануале и руководстве пользователя ее описание очень скудное.

ap_scan — AP scanning/selection

By default, wpa_supplicant requests driver to perform AP scanning and then uses the scan results to select a suitable AP. Another alternative is to allow the driver to take care of AP scanning and selection and use wpa_supplicant just to process EAPOL frames based on IEEE 802.11 association information from the driver.

1: wpa_supplicant initiates scanning and AP selection (default).
0: Driver takes care of scanning, AP selection, and IEEE 802.11 association parameters (e.g., WPA IE generation); this mode can also be used with non-WPA drivers when using IEEE 802.1X mode;
do not try to associate with APs (i.e., external program needs to control association). This mode must also be used when using wired Ethernet drivers.

2: like 0, but associate with APs using security policy and SSID (but not BSSID); this can be used, e.g., with ndiswrapper and NDIS drivers to enable operation with hidden SSIDs and optimized roaming;
in this mode, the network blocks in the configuration are tried one by one until the driver reports successful association; each network block should have explicit security policy (i.e., only one
option in the lists) for key_mgmt, pairwise, group, proto variables.

Note: ap_scan=2 should not be used with the nl80211 driver interface (the current Linux interface). ap_scan=1 is optimized work working with nl80211. For finding networks using hidden SSID, scan_ssid=1 in the network block can be used with nl80211.

  • bssid — The Basic Service Set Identifier (BSSID), физический адрес точки доступа.
  • key_mgmt — Протоколы аутентификации.
  • pairwise — Для WPA2 укажите CCMP, а для WPA — TKIP.
  • proto — WPA/WPA2.
  • psk — Хэш пароля PreShared Key.

group: list of accepted group (broadcast/multicast) ciphers for WPA
CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
WEP104 = WEP (Wired Equivalent Privacy) with 104-bit key
WEP40 = WEP (Wired Equivalent Privacy) with 40-bit key [IEEE 802.11]
If not set, this defaults to: CCMP TKIP WEP104 WEP40

pairwise: list of accepted pairwise (unicast) ciphers for WPA
CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
NONE = Use only Group Keys (deprecated, should not be included if APs support pairwise keys)

proto: list of accepted protocols
WPA = WPA/IEEE 802.11i/D3.0
RSN = WPA2/IEEE 802.11i (also WPA2 can be used as an alias for RSN)
If not set, this defaults to: WPA RSN

key_mgmt: list of accepted authenticated key management protocols
WPA-PSK = WPA pre-shared key (this requires 'psk' field)
WPA-EAP = WPA using EAP authentication (this can use an external program, e.g., Xsupplicant, for IEEE 802.1X EAP Authentication
IEEE8021X = IEEE 802.1X using EAP authentication and (optionally) dynamically generated WEP keys
NONE = WPA is not used; plaintext or static WEP could be used
If not set, this defaults to: WPA-PSK WPA-EAP

Создаем хэш пароля для psk :

Все готово, чтобы создать конфиг сети. Итоговый файл должен выглядеть как-то так.

Верные значения для bssid , group , proto и pairwise можно определить, сканируя беспроводную сеть.

Команда iwlist из набора Wireless Tools устарела, вместо нее сейчас iw .

Настройка 802.1X для офиса

Стандарт IEEE 802.1X определяет более строгую модель подключения к WiFi сети. Вместо psk пароля необходимо предъявить серверный сертификат.

  • ca_cert — Абсолютный путь к CA-сертификату в формате PEM или DER, необходим для возможности подтверждения сертификата сервера.
  • ca_path — Абсолютный путь к директории, где хранятся файлы CA-сертификатов (в формате PEM), которые вы хотите добавить в список доверенных.
  • client_cert — Абсолютный путь к клиентскому сертификату в формате PEM или DER.
  • eap — Разделенный пробелами список поддерживаемых методов EAP: MD5, MSCHAPV2, OTP, GTC, TLS, PEAP, или TTLS.
  • identity — Идентификации EAP, например имя пользователя.
  • password — Пароль EAP.

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

А это пример блока, настроенного для подключения к сети в режиме WPA-Enterprise с аутентификацией 802.1X EAP-TLS, в котором требуются серверный и клиентский сертификаты:

Привязка wpa_supplicant к сетевой карте

Для Gentoo Linux надо добавить 2 строки в /etc/conf.d/net .

Список поддерживаемых -D<driver> драйверов. Для современных чипов и версий ядра подойдет nl80211 . На старом железе может взлететь wext .

  • nl80211 — New driver.
  • wext — Linux wireless extensions (generic).
  • wired — wpa_supplicant wired Ethernet driver.
  • roboswitch — wpa_supplicant Broadcom switch driver.
  • bsd — BSD 802.11 support (Atheros, etc.).
  • ndis — Windows NDIS driver.

Сетевая карта wlan0 должна быть залинкована с lo0 .

Следует также добавить wpa_supplicant в автозапуск.

Пользователи Debian добавляют запись в файл /etc/network/interfaces .

Пользователи RedHat добавляют в /etc/sysconfig/wpa_supplicant

а в файл /etc/sysconfig/network-scripts/ifcfg-wlan0

Отладка

После того как wpa_supplicant успешно подключилась к точке доступа, в dmesg можно увидеть протокол установки соединения.

Если же вместо этого вы увидите ошибку:

то скорее всего, надо использовать драйвер wext вместо nl80211 . А с ошибкой:

наоборот, вместо wext надо подставить nl80211 .
В ситуации, когда вы не можете определить ошибку, запустите wpa_supllicant напрямую с ключем -dd .

Я ничего не мог найти в Ubuntu, действующем как получатель или отправитель Miracast. Это может работать вообще? Есть ли аппаратные предпосылки? Требуется ли WiFi или он может работать через локальную сеть или другой вид .

Чудотворение 16.04

Я пытаюсь установить Miraclecast 16.04, но установка не работает (я не знаю, с чего начать). Кто-нибудь может объяснить, как я могу установить Miraclecast? Это ошибка: ./autogen.sh: .

Блендер Ubuntu Gnome 16.04 2.77a рендеринг GPU, не активный

Я выполняю Ubunru Gnome 16.04. Мой ноутбук имеет Nvidia GT 740M, и я установил драйвер nvidia-364. Я установил CUDA-ИНСТРУМЕНТЫ 7.5. Как я могу включить рендеринг GPU для Блендера 2.77a? Мост Хоста 00:00.0: Intel.

Wi-Fi и Bluetooth не работают одновременно

Я дважды загрузил свой ноутбук с Ubuntu 20.04 и Windows 10. В Ubuntu, когда я пытаюсь использовать Wi-Fi и Bluetooth одновременно, они мешают друг другу. Я не могу использовать Интернет .

Wi-Fi Realtek Не Работает над Xubuntu 18.04 LTS

Я только что установил последний Xubuntu 18.04 LTS на своем новом купленном низком ноутбуке конфигурации вдоль боковых окон 10 (начальная загрузка поединка). Все Установки хорошо работало, но Wi-Fi не работает.

Atheros Wi-Fi не работает на Ubuntu 17.10 для Acer Aspire

возможность одновременных режимов p2p и AccessPoint в одном интерфейсе wifi

Возможно ли одновременно установить один интерфейс Wi-Fi в режиме точки доступа и другой виртуальный интерфейс в режиме p2p? Если не так? Мое устройство поддерживает p2p и AP: список iw показывает это: действительный интерфейс .

Нужно руководство для установки Miraclecast с использованием Cmake

Я новичок в Ubuntu и просмотрел файл readme на zip-загрузке MiracleCast. Я использую CMake, но не могу понять, что делать, когда я загружаю zip-папку. Как я могу использовать CMake для загрузки и .

WiFi автоматически отключается в Ubuntu 16.04

Я новичок в Ubuntu. Я установил Ubuntu 16.04 LTS в двойной загрузке с Windows. Все отлично работает в Windows. Однако в Ubuntu WiFi автоматически отключается. Ниже приведены .

Отключение Wi-Fi при загрузке файла

Я хочу, чтобы Ubuntu был хостом Miracast, а видео, доступное в качестве / dev / videoX

Существуют ли проекты, способные стать хостом Miracast, и сделать видео доступным через video4linux (/ dev / videoX)?

Ubuntu 12.04, не соединяющаяся с сетями Wi-Fi

У меня есть Sony viao, Ноутбук установил с Ubuntu 12.04 rfkill, перечисляют весь 1: hci0: Bluetooth, Мягкий заблокированный: нет Трудно заблокированный: № 2: Wi-Fi Sony: Беспроводная связь LAN, Мягкая заблокированный: нет Трудно заблокированный: нет.

Как установить Airnef на Ubuntu 16.04?

Одна ОС может влиять на другого в загруженной двойным образом системе?

Я - Windows 10 двойной загрузки (исходная ОС) и Kubuntu 14.04. Моя установка Kubuntu не распознает беспроводную связь (проблема Драйвера QCA6164), таким образом, я пытался использовать ndiswrapper для решения проблемы. Это я.

Как я создал бы псевдоним для выполнения игры? (Minecraft)

Я хотел бы создать псевдоним командной строки для выполнения игры (Minecraft в особенности). Как я выполнил бы это? Я хочу ввести в runmc для выполнения команды Java - банка/root/.minecraft/launcher.jar.

Как заставить Lubuntu забывать соединение Wi-Fi, когда новый пользователь входит в систему

Мой Wi-Fi хорошо работает в моей системе Lubuntu, но является там способом заставить ее забыть данные для входа в систему Wi-Fi после того, как пользователь выйдет из системы? Мне нужны другие пользователи для регистрирования с их собственным (веб-страниц

WiFi не работает в Ubuntu 12.10

Я хочу подключиться к WiFi, но в настройках сети для него нет опции, хотя в беспроводной сети я вижу вариант Bluetooth. Что я должен делать? Подскажите, если какой-то патч отсутствует .

Драйвер WiFi не работает в 20.04 LTS. Когда я пытаюсь установить bcmwl-kernel-source, появляется ошибка [дубликат]

Драйвер WiFi не работает в 20.04 LTS. Когда я пытаюсь установить bcmwl-kernel-source, появляется ошибка eamon @ eamon 

 sudo apt-get --purge remove bcmwl-kernel-source Чтение списков пакетов . Готово < > Сборка .

Есть ли способ установить miracast по инфраструктурному режиму для интерфейса p2p

Привет все, что я просто хотел знать, является этим возможный включить p2p-dev-wlan0 (p2p интерфейс) для miracast по инфраструктурному режиму. Я думаю от wpa_cli, мы можем установить ap_vendor_elements для добавления маяка и.

Я хочу подключить два устройства, используя Wifi-Direct. Один из них - компьютер с Linux (во время моего теста я использую Linux Mint 17.2), другой - Android-смартфон (Samsung Galaxy S3 с Android 4.3, не укорененный и не требующий root).

Когда я запускаю список iw, я вижу, что "Поддерживаемые режимы интерфейса:" позволяет P2P_client и P2P_GO. Мой файл wpa_supplicant.conf содержит:

Работает так, как ожидалось. Когда я пробую это с двумя устройствами Android, они могут видеть друг друга и подключаться (он отображается значок Wifi-Direct).

Теперь я пытаюсь подключиться к Android и Linux, но я думаю, что я действительно не понимаю, как работает wpa_supplicant. Я также видел этот вопрос, который очень похож на то, что я спросил, но на самом деле он не отвечает на мои сомнения. Прямая связь Wi-Fi между Android-смартфоном и другими устройствами

Моя проблема в том, что я не могу понять, как выполнить рукопожатие между двумя устройствами и как настроить сеть.

Wpa_supplicant - моя проблема. Я запустил:

Но у меня было много проблем: - Имя_устройства (и другие параметры) не было установлено, как указано в файле .conf - wpa_supplicant продолжает пытаться подключиться ко всем сетям - p2p_find был очень медленным.

поэтому я зашел в /usr/share/dbus -1/system-services и удалил два файла

и он действительно умирает, отключая меня от Wifi, не пересобирая следующую секунду. Теперь я могу запустить wpa_supplicant и решить три проблемы.

Я зашел в wpa_cli, запустил "p2p_find" и в то же время включил поиск из приложения.

Теперь Android и Linux могут видеть друг друга.

С помощью "p2p_peers" я могу видеть MAC-адрес мобильного телефона.

Здесь я не могу идти дальше. Я пробовал разные возможности, но никто из них не работал. Моя цель - предоставить Linux в качестве владельца группы.

  • Вопрос 1.1: Каков правильный способ рукоположения двух устройств?
  • Вопрос 1.2: Когда я пытаюсь p2p_connect, я часто получаю "отказ MIC MIC" от ​​результатов, что это означает в этом конкурсе?
  • Вопрос 1.3: Android в настоящее время пытается подключиться к PBC. Существует способ подключения с PIN-кодом?

Увидев, что я не могу подключиться к Android/Linux, я попытался практиковать Linux/Linux (Linux Mint как GO, Ubuntu как клиент), следуя примерам из Интернета, как в первой ссылке. У меня есть ряд проблем даже здесь.

В монетном дворе я стараюсь

в Ubuntu Я пытаюсь

Когда я пишу psp_connect в Mint, он создает новый интерфейс p2p_wlan0 _0 и возвращает

то p2p_connect, запущенный из Ubuntu, терпит неудачу.

Вопрос 2.4 Если я хочу настроить, например, DHCP-сервер и клиент?

Вопрос 1.4 И с Android (клиент)/Linux (GO)?

Я много работал над этой проблемой, и вот ответы, которые я нашел:

Я хотел, чтобы Linux был как GO, так и Android в качестве клиента, поэтому то, что работало для меня в Linux, это:

N.B. Чтобы уничтожить соединение P2P и перезапустить обычный, я использую этот script:

Ответ 1.2. Из wpa_cli вы можете получить множество разных предупреждений и ошибок. Я видел, что просто вызов функции (как и в предыдущем фрагменте) заставил все работать, несмотря на предупреждения. Я проигнорировал их.

Ответ 1.3 Соединение с использованием PIN-кода работает, когда я его пробовал, я не запускал udhcpd и каждый раз разбивал мое соединение. Это произошло не из-за PIN-кода или PBC.

Ответ 2.1 И сервер, и клиент - это интерфейс переключения. Это очень похоже на то, что вы обычно делаете с сокетами. Вы создаете прослушивающий сокет, кто-то подключается, вы создаете новый сокет для обработки этого клиента в отдельном потоке, пока слушающий сокет все еще там, ожидая других пользователей. Вы делаете то же самое с интерфейсами. Запуск wpa_cli, который контролирует интерфейс wlan0, и тот, который контролирует интерфейс p2p-wlan0-0, дает хорошее представление о том, что происходит во время изменения.

Ответ 2.2 Клиент "перешел" на другой интерфейс и теперь готов к получению IP-адреса. Запустите серверы DHCP и TCP!

Ответ 2.3 Не используйте статический IP-адрес. Только для сервера все в порядке, клиент должен использовать IP-адрес DHCP. Возможно, есть способ обрабатывать статические IP-адреса, но это не было полезно для моих целей.

Ответ 2.4 Готово. Это была проблема все время

Ответ 1.4 Это прекрасно работает даже с Android/linux.

Извините, если я допустил ошибку в своем ответе, я до сих пор не получаю полную картину подключений WiFi-Direct, я просто надеюсь, что это может помочь кому-то другому.

Блог про 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-клиент получает шлюз по умолчанию автоматически

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

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