Подключение к wifi gentoo
Блог про 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-клиент получает шлюз по умолчанию автоматически
Изменение конфигурационных файлов
На удивление быстро настроился WiFi на Gentoo. Поскольку заметка написана уже после настройки WiFi, то могут быть неточности. Замечания и полезные комментарии приветствуются. Если будет необходимо, заметка будет доработана.
По некоторым соображениям я не люблю NetworkManager, поэтому настройку сети предпочитаю делать через конфигурационные файлы и командную строку.
Что нам понадобится для настройки:
- поддержка нашего адаптера в ядре;
- опция в ядре для поддержки iw
- пакет net-wireless/iw;
- пакет net-wireless/wpa_supplicant для подключения к точкам доступа с WPA (по мне так дико настраивать точки доступа иначе).
Будем считать, что ядро вы уже собрали так, как нужно и по ifconfig или ip addr мы получаем в списке адаптеров наш wlan0 или wlp3s0. Установим необходимые пакеты.
Проверим работоспособность нашего WiFi: В ответ вы должны получить список доступных точек доступа. Если выдаются ошибки, то дальнейшие действия вам не помогут. Если вы в списке не нашли вашей точки доступа, то проверьте, что она расположена на каналах с 1 по 11. У меня ранее были проблемы при использовании 13 канала!
Настроим сеть с помощью редактирования /etc/conf.d/net Если желаете, то можете вместо dhcpd использовать статический IP адрес и другие опции, которые можно найти в документации Gentoo по настройке сети.
Создадим конфигурацию для подключения к нашей точке доступа. Для этого создадим или отредактируем файл /etc/wpa_supplicant/wpa_supplicant.conf: WPA_PASSWORD - это ничто иное, как пароль к точке доступа. Секций network может быть несколько - по одной для каждой точки доступа.
Собственно теперь, после перезапуска системы вы можете получить доступ к беспроводной сети.
Столкнулся с проблемой настройки WiFi на ноутбуке Compaq C6510b. Во-первых, WiFi упорно не хотел включаться кнопкой, только выключался. Решить эту проблему помогли пара опций в ядре: CONFIG_ACPI_WMI и CONFIG_HP_WMI. Вместо второй вам возможно потребуется другая опция. Для этого поищите я опциях ядра WMI и найдите нужную опцию конкретно для вашей беспроводной сетевой платы.
Второй проблемой была жёсткая блокировка WiFi. rfkill list упорно выдавал Hard blocked: yes. По идее этой блокировкой управляет кнопка включения/выключения WiFi. Но не смотря ни на что, блокировка была. Решить эту проблему оказалось не просто, а очень просто: достаточно выдернуть кабель из порта Ethernet. Блокировка снята! Если же вам всё-таки нужно использовать одновременно WiFi и Ethernet, то нужно зайти в BIOS Setup и отключить опцию переключения LAN/WLAN. Что характерно, при включении этого переключателя, при блокировке WiFi индикатор не гаснет, что и сбивает с толку. Просто этот индикатор на данном ноутбуке сдвоенный и отображает активность обоих беспроводных интерфейсов: WiFi и Bluetooth.
Warning: Display title "WiFi" overrides earlier display title "Wifi".
Эта статья описывает настройку сетевых устройств wifi (беспроводных).
Contents
Wifi во время установки
Тем, кому требуется соединение wifi во время установки Gentoo, следует иметь в виду, что минимальный установочный компакт-диск Gentoo содержит только некоторые драйвера и предоставляет только wpa_cli (не wpa_gui ) для настройки соединений WPA/WPA2/Enterprise.
Если минимальный установочный компакт-диск не содержит требуемые драйвера или желательно использование графического интерфейса вместо wpa_supplicant , выберите другой live CD, например, System Rescue CD. Имейте в виду, что в случае использования не-Gentoo live CD могут понадобиться дополнительные действия.
Определение аппаратного обеспечения
Прежде всего, определите устройства wifi. Для этого можно воспользоваться командами lspci или lsusb .
Если в загруженной Linux-системе (LiveCD/USB) присутствует соединение wifi:
Драйвер можно увидеть в строке, которая начинается с Kernel driver in use: .
Если в загруженной системе отсутствует соединение wifi, выведите весь список идентификаторов устройств, присутствующих в системе. Впоследствии этим списком можно воспользоваться для определения нужного драйвера:
Устройства USB можно определить похожим образом. Сначала выведите список устройств:
Также можно воспользоваться командой lshw :
Эта команда выводит список драйверов всех устройств, как PCI, так и USB.
Теперь, когда драйвера определены, можно приступить к настройке ядра Linux.
IEEE 802.11
Включите по крайней мере опции cfg80211 и mac80211. Некоторым драйверам для беспроводных устройств требуется алгоритм управления скоростью.
Minstrel с его поддержкой 802.11n это и есть алгоритм управления скоростью.
ВажноIn case the wireless configuration API ( CONFIG_CFG80211 ) is built into the kernel ( <*> ) instead as a module ( <M> ), the driver won't be able to load regulatory.db from /lib/firmware resulting in broken regulatory domain support. Please set CONFIG_CFG80211=m or add regulatory.db and regulatory.db.p7s to CONFIG_EXTRA_FIRMWARE .
Параметр "cfg80211 wireless extensions compatibility", также известный как WEXT, поддерживает устаревшие wireless-tools и iwconfig .
Драйвера устройств
Далее необходимо включить соответствующие параметры ядра, в зависимости от драйверов и устройств, определенных ранее. Рекомендуется собирать драйвера в виде модулей. Не забудьте включить поддержку шифра AES, если беспроводная сеть использует шифрование WPA или WPA2.
ВажноЕсли драйвер собран не в виде модуля ( <M> ), а встроен в ядро ( <*> ), прошивку необходимо также встроить в ядро. Не забудьте пересобрать ядро после изменения его конфигурации.
Поддержка LED
Для того, чтобы включить LED triggers для различных событий приема и передачи пакетов, соберите ядро со следующими параметрами:
Firmware
Помимо драйвера ядра, некоторым чипсетам также требуется прошивка. Если она нужна, найдите ее в следующем списке и установите:
Если драйверу требуется прошивка, но ее нет в списке, ее понадобится скачать вручную и поместить в /lib/firmware .
Имена сетевых устройств
Чтобы сохранить классическое именование это правило может быть перезаписано пустым файлом с таким же именем в каталоге /etc/udev/rules.d :
WPA supplicant
Если в беспроводной сети установлены WPA или WPA2, то необходимо использовать wpa_supplicant . Больше информации по настройке беспроводной сети в Gentoo Linux можно прочитать в разделе беспроводная сеть в Gentoo Handbook.
Тестирование
После обновления ядра и перезагрузки или после загрузки модулей, устройства можно проверить на доступность с помощью следующих методов:
- используя файловую систему /sys
- используя команду ip
- используя команду ifconfig
- используя команду iw
Файловая система /sys
Узнать имя устройства можно с помощью просмотра каталога /sys/class/net используя ls -al или команду tree (из пакета app-text/tree):
Команда ip
Чтобы убедится, что беспроводная карта обнаружена, а также чтобы узнать имя карты, выполните следующую команду ip :
Команда ifconfig
Команда ifconfig предоставляется пакетом sys-apps/net-tools. Используйте ifconfig -a , чтобы вывести список всех обнаруженных сетевых карт, даже если они не включены/активированы:
Сетевая карта может быть активирована так:
В этом примере включить беспроводную карту не удалось, поскольку был установлен radio frequency kill state (RF-kill). Как правило, он устанавливается в целях энергосбережения и избежания случайного соединения с беспроводными сетями.
Команда iw
Если драйвер беспроводной сетевой карты поддерживает стэк nl80211, команда iw , которая есть в паете net-wireless/iw, может отобразить обнаруженную беспроводную сетевую карту:
В этой статье я расскажу, как можно настроить 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 .
Мелочь — а приятно: осознал, как настраивать вайфай в Gentoo. Как всегда, ничего особо изощренного в этом не оказалось.
От требований коллекции так и не установленных за ненадобностью драйверов madwifi остался скомпилированным модуль сетевой карты Intel PRO/Wireless 2100 (теоретически был необходим произвольный). Не уверен, что если бы вначале не пытался ставить madwifi, он был бы необходим, но в иной конфигурации не проверял.
После того как ядро скомпилировано, установлено и wi-fi-карточка видна через
начинаем настраивать. Прежде всего создаем символьную ссылку на интерфейс сетевой карты:
Ставим пакет для подключения к беспроводной сети. На данный момент существует два варианта: wireless-tools и wpa_supplicant. Установка первого дает старую добрую команду iwconfig, но wireless-tools не поддерживает WPA и WPA2. Поэтому более предпочтительной является установка wpa_supplicant с включенным флагом qt4 для установки графического клиента wpa_gui, что для KDE в самый раз:
Чтобы продолжить работу через графический интерфейс, который сам будет искать беспроводные сети и определять их параметры, создаем файл /etc/wpa_supplicant/wpa_supplicant.conf со следующим содержимым:
Теперь вносим обновления в /etc/conf.d/net:
Запускаем интерфейс wlan0 и добавляем его на будущее в автозагрузку:
Теперь запускаем wpa_gui через меню программ или консоль и подключаемся к интернету 🙂
Upd. 10 jan 2013
Развитие технологий не стоит на месте 🙂 Хотя wpa_supplicant является неплохим решением, на данный момент более удобным является NetworkManager. Его удобство заключается в возможности настройки кабельных, беспроводных, VPN и прочих соединений через единую утилиту движением мыши. Краткая, но детальная инструкция установки находится тут (следует учесть, что я ставил NetworkManager уже после wpa_supplicant и всё вышеописанное было настроено и работало, в любом случае за драйвер сетевой платы нужно беспокоиться отдельно).
Из упомянутого по ссылке выше ставил kde-misc/networkmanagement (плагин для KDE), net-misc/networkmanager-openvpn и net-misc/networkmanager-vpnc для подключений по VPN.
Читайте также: