wpa_supplicant без NetworkManager /CentOS на ноутбуках - CentOS Wiki

Включение wpa_supplicant без Networkmanager

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

Прошу обратить внимание, вы можете использовать для этого NetworkManager, однако он по умолчанию не может подключаться к сети при загрузке. Требуется войти пользователою в систему и дать NetworkManager доступ к связке ключей, для активации WPA ключа.

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

Редактирование /etc/wpa_supplicant/wpa_supplicant.conf

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

network={

        ssid="MYNETWORKSSID"

        scan_ssid=1
        key_mgmt=WPA-PSK

        psk="MYNETWORKPSK"

        }

 

Очевидно, что вы замените MYNETWORKSSI и MYNETWORKPS своими значениями. Пароль для вашей зашифрованной сети должен быть кодирован в шестнадцатиричную строку.

Чтобы получить эти значения, воспользуемся утилитой: wpa_passphrase ( wpa_passphrase [ssid] [passphrase], ssid - имя нашей точки доступа, passphrase - пароль). Например:

~$ wpa_passphrase mynetworkssid mypassword

network={
	ssid="mynetworkssid"
	#psk="mypassword"
	psk=28202e0efd235b16f2bbad175758143c856d2bf8a112c878b57e25b8a7f60765
}

последняя строка (psk) содержит hex-код, который требуется для связи с сетью.

Примечание: в прмере выше используется парольная фраза, а хеш код не задан. Подобный подход работает в CentOS 5. В CentOS 6 необходимо также задать и hex-код.

Редактирование /etc/sysconfig/network-scripts/ifup-wireless

Добавте следующую строку в конец этого файла:

if [ "$WPA" = "yes" -a -x /etc/init.d/wpa_supplicant ]; then

    /sbin/service wpa_supplicant start

fi

Редактирование /etc/sysconfig/network-scripts/ifcfg-*

Тут будет несколько файлов в /etc/sysconfig/network-scripts/, которые описывают сеть, такие как ifcfg-eth0 (вашей проводной сети) и один с названием ifcfg-wlan0 или ifcfg-eth1 который описывает беспроводное подключение.

Тот, что соответствует беспроводному подключению, должен содержать строку:

TYPE=Wireless

 

Добавте туда еще одну строчку:

WPA=yes

igcfg-wlan0

Редактирование /etc/rc.d/rc.local

Мы уже все практически настроили для беспроводной сети. К сожалению сценарий запуска в CentOS некоректен. Он пытается поднять интерфейс (и следовательно wpa_supplicant) до старта DBUS, а последний просит быть уже запущенным DBUS.

Быстрое решение этой проблемы добавление строки в конце файла /etc/rc.d/rc.local который описывает беспроводной наш интерфейс:

/sbin/ifup eth1

 

(или /sbin/ifup wlan0, если ваш беспроводной интерфейс wlan0).

После этого появится беспроводной интерфейс.

 

Отключеине интерфейса и wpa_supplicant при загрузке

Исходя из того, что мы запустили wpa_supplicant непосредственно в сценарии ifup, нет необходимости в попытках запуска его в сценарии загрузки при старте системы. Отключите его с помощью команды:

chkconfig wpa_supplicant off

 

Вы также можете отключить автоматический запуск беспроводного подключения (eth1 или wlan0) на загрузке сетевого устройства (приложения Network Device) потому, что мы его запустили уже вручную в rc.local.

Простой способ автоматического поднятия интерфейса Wi Fi без ввода пароля в CentOS 6 и старше

Исходные данные точки доступа Wi Fi, к которой должена автоматически подключаться наша система CentOS:

  • беспроводной интерфейс в нашей системе имеет название wlan0 (если это не так, в примере ниже измените параметры на свои);
  • имя точки доступа (ssid) для примера возьмем: mydlink2000;
  • пароль пусть будет для примера: superking;
  • точка доступа ip адреса раздает автоматически (по dhcp).

 

1. Создадим в директории /etc конфигурационный файл беспроводной сети:

wpa_passphrase mydlink2000 superking > /etc/mysupplicant.conf

заглянем в него:

network={
	ssid="mydlink2000"
	#psk="superking"
	psk=1d52cc95f6a65af36f5d1c584e0ffc44aafa9002743d8cd7a3ee6bf79da413a0
}

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

2. Теперь создадим скрипт, который будет при старте системы поднимать беспроводной интерфейс (расположим его в /usr/bin и обзовем wlan.sh):

#!/bin/bash

ifconfig wlan0 up

iwconfig wlan0 essid mydlink2000
sleep 10 

wpa_supplicant -B -Dwext -i wlan0 -c /etc/mysupplicant.conf
dhclient wlan0

Команда sleep 10 выполняет небольшую паузу в 10 секунд, а dhclient wlan0 получает настройки сети (в примере точка доступа раздает ip адреса автоматически).

3. Добавим наш скрипт в автозагрузку, дадим права на исполнение (под рутом выполним):

echo "/usr/bin/wlan.sh" >> /etc/rc.local
chmod +x /usr/bin/wlan.sh

 

p.s. для большей надежности вы можете прописать дополнительные параметры в конфигурационном файле mysupplicant.conf (для примера: очередность сканирования).

network={
	ssid="mydlink2000"
	scan_ssid=1
	key_mgmt=WPA-PSK
	#psk="superking"
	psk=1d52cc95f6a65af36f5d1c584e0ffc44aafa9002743d8cd7a3ee6bf79da413a0
} 

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

Скрипт мы намеренно расположили в директории /usr/bin, чтобы selinux при старте не блокировал его запуск в контексте установок безопасности (намеренно не используется инструментарий restorecon для изменения контекста безопасности). Если selinux у вас отключен, то вы можете распологать данный скрипт где угодно.

 

Автор: Александр