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
Редактирование /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 у вас отключен, то вы можете распологать данный скрипт где угодно.