Автор Тема: Как настроить Wifi-соединение на Linux  (Прочитано 7296 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн banda

  • Global Moderator
  • Newbie
  • *****
  • Сообщений: 2
  • Karma: 0
Если вы владелец какого-либо мобильного устройства под управлением OS Linux, то вам в первую очередь придется задуматься над выполнением задачи номер один - настройка соединения с беспроводной точкой доступа Wifi. По умолчанию, стандартные инструменты для Linux-десктопов надежны и удобны в использовании. Например, Wifi Radar, Network Manager, Wicd и многие другие программы этого класса. Конечно, подразумевается, что вы используете окружения типа Gnome или KDE, обладающих очень богатым функционалом и выбором.

   Но как быть, если у вас нечто другое и более редкое - E17, Fluxbox, ION или вообще "голая" консоль? В этом случае вам стоит применить классический способ настройки - командная строка.

 Давайте рассмотрим два случая настройки соединения с беспроводной точкой доступа:
 - графическое приложение Wicd (для примера);
 - консольные утилиты.


Автор: В. Семененко
 Дата публикации: май 2011 г.

Вступление

    Предполагается, что у вас имеется беспроводное сетевое устройство (адаптер), который работает под Linux. Если вы вдруг обнаружили, что ваше устройство не работает, можно предложить, как один из вариантов для новичков, поставить последнюю версию дистрибутива Ubuntu и установить проприетарные драйвера для своей беспроводной карточки. Предложенный случай является наиболее простым и действенным, по сравнению с попытками заставить работать адаптер через драйвер ndiswrapper.

    Также предполагается, что у вас имеются в наличии два параметра для подключения к беспроводной точке: SSID и идентификационный ключ. Без них (особенно - без второго, так как первый еще можно легко узнать) вы не сможете установить соединение.
 
Wicd

wicd - графическое приложение, написанное на Python. Гибкая и удобная в использовании программа, предлагающая большой функционал. Wicd легко устанавливается и им также легко пользоваться. Достаточно всего нескольких минут для ознакомления с программой. Стоит также заметить, что Wicd, помимо графического интерфейса, имеет и консольный вариант "исполнения", не уступающий по функциональности.



Командная строка

    Давайте теперь посмотрим, как настроить wifi-соединение через командную строку. К слову сказать, такой способ является универсальным, так как используются утилиты, являющиеся стандартными для всех дистрибутивов Linux. Более того, все приложения с графическим интерфейсом (GUI) основаны на работе именно этих утилит. Образно говоря, если мы "снимем" "крышу" GUI у любого графического приложения, то под ней мы увидим скромных и незаметных тружеников консоли: ifconfig, wireless-tools, wpa_supplicant, ping, nmap и многих других.

 Для выполнения нашей задачи понадобятся следующие утилиты:
 - ifconfig: полностью управляет работой любого сетевого адаптера вашего компьютера (будь то проводной или беспроводной интерфейс);
 - iwlist: выдает список доступных для подключения (находящихся в радиусе досягаемости) беспроводных дочек доступа;
 - iwconfig: утилита управления и конфигурирования беспроводных сетевых устройств (адаптеров);
 - dhclient (или его налоги): автоматически получает IP-адрес от dhcp-сервера беспроводной точки;
 - wpa_supplicant: утилита для настройки шифрованных соединений.

    Перед началом настройки wifi-соединения логичным было бы проверить наличие всех этих утилит в системе (хотя, почти все они входят в стандартный набор Linux-дистрибутивов). Давайте, все же, убедимся в том, что они есть у нас, выполнив совсем несложные команды (см. man which):
 - which ifconfig
 - which iwlist
 - which iwconfig
 - which dhclient
 - which wpa_supplicant

    При выполнении каждой из этих команд вы увидите путь, по которому они располагаются в файловой системе. Если вдруг не увидите - вам придется установить отсутствующие. Наиболее простой и рекомендуемый - это менеджером пакетов того дистрибутива Linux, которым вы пользуетесь. Как альтернатива - можно предложить установку из исходников, но такой путь требует достаточного опыта от пользователя.

Рассмотрим пример подключения к wifi-точке с шифрованием WEP

 1. Первое, что мы сделаем - посмотрим, какие сетевые адаптеры имеются у нас на компьютере:
      # ifconfig -a
 Вывод будет содержать имена и подробное описание всех сетевых интерфейсов, которые удалось обнаружить утилите ifconfig. Если не был обнаружен желаемый, то причина заключается только в одном - нет драйверов для него и не включена поддержка этого интерфейса в ядре Linux.

 2. Запускаем беспроводной сетевой адаптер:
      # ifconfig wlan0 up
здесь:
 - wlan0 - стандартное в большинстве Linux-систем имя wifi-карточки;
 - up - опция говорит команде ifconfig запустить для работы ("поднять") сетевое устройство.

 3. Теперь нам надо сканировать эфир вокруг себя на наличие доступных hot-spot'ов:
      # iwlist wlan0 scan
здесь :

 - wlan0 - имя беспроводного адаптера;
 - scan - команда iwlist запускается в режиме сканирования.

 Результатом работы iwlist будет детальный отчет, из которого на данном этапе нас интересует только одна строчка: ESSID:"Some_Name". Значение параметра ESSID ("Some_Name") - это имя беспроводной точки доступа. Теперь мы знаем, к какой конкретно wifi-точке мы будем подключаться.

 4. Выполняем подключение:
      # iwconfig wlan0 essid Some_Name key Wireless_Key
здесь :

 - wlan0 - сетевой адаптер, на котором настраивается соединение;
 - essid - задаем имя точки доступа, к которой подключаемся;
 - key - указываем ключ шифрования, использующийся этой точкой доступа для передачи данных.

Замечание:

Команда iwconfig по умолчанию использует для ключа шифрования данные в шестнадцатеричном виде HEX. Если вы хотите указать ключ в виде простого текста (ASCII), вам необходимо использовать опцию s.

 Например, так:
      # iwconfig wlan0 essid Some_Name key s:Wireless_Key
 Соединение установлено.

 5. Последний шаг - получаем от dhcp-сервера wifi-точки IP-адрес:
      # dhclient wlan0
 Естественно, вышеуказанные шаги выполнять каждый раз утомительно. Можно упростить процесс установки соединения, написав скрипт подключения, в котором мы объединим все эти команды в одно целое:

#! /bin/bash
ifconfig wlan0 up
iwconfig wlan0 essid Some_Name key s:Wireless_Key
sleep 10
dhclient wlan0


 Здесь мы добавили еще одну команду sleep с параметром 10 секунд. Это рекомендуется делать перед получением IP-адреса для надежности установки соединения.

 Сохраняем этот файл под каким-либо именем (например, wireless_up) и делаем его исполняемым командой:
      # chmod u+x wireless_up
 Переносим wireless_up по пути /usr/local/bin, чтобы сделать его глобально видимым всей системой.

 Теперь вам достаточно набрать в командной строке:
      # wireless_up
... и соединение будет установлено.

Рассмотрим более сложный случай - соединение с точкой доступа по WPA-шифрованию

Соединение с таким шифрованием поддерживает только утилита wpa_supplicant, поэтому она нам понадобиться. Также, опять таки, предполагаем, что мы знаем ключ (пароль) шифрования этой точки доступа.

 1. Генерируем пароль на основе этого ключа с помощью утилиты wpa_passphrase, которая входит в состав пакета wpa_supplicant. Дело в том, что пароль, который мы будем использовать далее, должен быть  в виде шестнадцатиричного числа:
      # wpa_passphrase ssid password    

 Утилита выдаст сгенерированную строку psk, которую мы вставим в конфигурационный файл wpa_supplicant.conf:

# sudo nano -w
/etc/wpa_supplicant.conf
Network={
ssid=SSID
psk=PSK }

Это очень упрощенный файл конфигурации, но он будет работать. Возможно, вам потребуется добавить в шапку этого файла еще одну строку:
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
 для предоставления необходимых прав доступа.

2.  "Поднимаем" интерфейс wlan0:
      # ifconfig wlan0 up
3. Указываем, к какой точке мы хотим подключиться:
      # iwconfig wlan0 essid ssid
 4. Запускаем утилиту wpa_supplicant на установку соединения:
      # wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
здесь:
 -B - запускать команду wpa_supplicant в фоновом режиме;
 -Dwext - говорим утилите wpa_supplicant использовать драйвер wext для интерфейса wlan0;
 -i - задаем настраиваемый сетевой интерфейс (wlan0 в нашем случае);
 -с - указываем путь к конфигурационному файлу wpa_supplicant.conf.

 5. Проверяем, что соединение установлено:
      # iwconfig wlan0
 На выводе увидим подробную информацию по указанному интерфейсу wlan0.

 6. Получаем локальный IP-адрес:
      # dhclient wlan0      

7.Упрощаем процесс, создав по пути /etc/network/interfaces запись следующего вида:

auto wlan0
iface wlan0 inet dhcp
pre-up wpa_supplicant -Bw -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
post-down killall -q wpa_supplicant

Заключение

     В зависимости от дистрибутива Linux, существует множество способов настройки wifi-соединений. Именно благодаря такому разнообразию настроить соединение можно практически в любой Linux-системе.
    Главное, чтобы сам беспроводной адаптер поддерживался в Linux на уровне драйверов. Но это уже зависит главным образом от разработчиков операционных систем.

Форум pinbay.net

Как настроить Wifi-соединение на Linux
« : Ноябрь 24, 2011, 12:35:13 pm »

Оффлайн banda

  • Global Moderator
  • Newbie
  • *****
  • Сообщений: 2
  • Karma: 0
В данной заметке пошагово описан процесс подключения компьютера с установленным Gentoo Linux с беспроводной сетевой картой DWL-520G к точке доступа DWL-2100AP использующую WPA2-PSK аутентификацию и шифрование AES(CCMP). Все действия выполняются под пользователем root.

 Итак, сначала посмотрим, есть ли у нас в компьютере эта самая wifi-карта:
$ lspci
...
0000:01:08.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)

Что ж, если в выводе команды lspci такое есть, то да.

 Устанавливаем драйвера и утилиты для настойки wifi:
# USE="madwifi" emerge net-wireless/madwifi-ng net-wireless/madwifi-ng-tools net-wireless/wpa_supplicant net-misc/dhcpcd
 После завершения установки всего этого дела загружаем модуль, необходимый для работы карточки:
# modprobe ath_pci
 Если всё правильно, то в выводе команды dmesg вы должны увидеть подобное:
# dmesg
ath_hal: module license 'Proprietary' taints kernel.
ath_hal: 0.9.17.2 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
wlan: 0.8.4.2 (0.9.2)
ath_rate_sample: no version for "ether_sprintf" found: kernel tainted.
ath_rate_sample: 1.2 (0.9.2)
ath_pci: 0.9.4.5 (0.9.2)
ACPI: PCI Interrupt Link [APC1] enabled at IRQ 16
ACPI: PCI Interrupt 0000:01:08.0[A] -> Link [APC1] -> GSI 16 (level, high) -> IR
Q 209
wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36
Mbps 48Mbps 54Mbps
wifi0: turboG rates: 6Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: H/W encryption support: WEP AES AES_CCM TKIP
wifi0: mac 7.9 phy 4.5 radio 5.6
wifi0: Use hw queue 1 for WME_AC_BE traffic
wifi0: Use hw queue 0 for WME_AC_BK traffic
wifi0: Use hw queue 2 for WME_AC_VI traffic
wifi0: Use hw queue 3 for WME_AC_VO traffic
wifi0: Use hw queue 8 for CAB traffic
wifi0: Use hw queue 9 for beacons
wifi0: Atheros 5212: mem=0xe6000000, irq=209

 Включаем-таки WiFi-карту:
# ifconfig ath0 up
 Теперь просканируем эфир на предмет наличия беспроводных сетей:
# iwlist ath0 scan
ath0      Scan completed :
          Cell 01 - Address: 00:17:9A:75:72:96
                    ESSID:"vznet"
    Mode:Master
    Frequency:2.437 GHz (Channel 6)
    Quality=2/94  Signal level=-93 dBm  Noise level=-95 dBm
    Encryption key:on
    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
              12 Mb/s; 24 Mb/s; 36 Mb/s; 9 Mb/s; 18 Mb/s
                          48 Mb/s; 54 Mb/s
    Extra:bcn_int=100
    IE: IEEE 802.11i/WPA2 Version 1
        Group Cipher : CCMP
        Pairwise Ciphers (1) : CCMP
                Authentication Suites (1) : PSK 
                       Preauthentication Supported
                    Extra:wme_ie=dd180050f2020101000003a4000027a4000042435e0062322f00

Итак, у нас нашлась точка доступа с SSID vznet, работающая на 6-м канале и используюшая безопасность 802.11i,- WPA2, аутентификацию по общему ключу(PSK) и с AES(CCMP) шифрованием.

 С помощью команды wpa_passphrase (входит в состав wpa_supplicant) создаём конфигурационный файл для подключения к точке доступа с SSID vznet с помощью пароля qazxswedc:
# wpa_passphrase vznet qazxswedc > /etc/wpa_supplicant.conf
 Открываем файл /etc/wpa_supplicant.conf в текстовом редакторе и добавляем туда нижние четыре строки (начиная с key_mgmt=WPA-PSK) из данного примера:
network={
ssid="vznet"
#psk="qazxswedc"
psk=ac48dccb617fad5607cae4d69e5102c4cdfaa96a5ca4505839cbcde85d658c29
key_mgmt=WPA-PSK
proto=RSN
pairwise=CCMP
group=CCMP
}

Пример верен для данного случая. Если ваша точка доступа использует иное шифрование (TKIP) и/или иной метод аутентификации, то параметры будут отличаться.

 Запускаем wpa_supplicant с использованием нашей конфигурации:
# wpa_supplicant -iath0 -Dmadwifi -c /etc/wpa_supplicant.conf
Trying to associate with 00:17:9a:75:72:96 (SSID='vznet' freq=2437 MHz)
ioctl[IEEE80211_IOCTL_SETMLME]: Invalid argument
Association request to the driver failed
Associated with 00:17:9a:75:72:96
WPA: Key negotiation completed with 00:17:9a:75:72:96 [PTK=CCMP GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to 00:17:9a:75:72:96 completed (auth) [id=0 id_str=]

Готово.

 IP-адреса раздаются точкой по DHCP, так что запускаем:
# dhcpcd -v 10 ath0
Info, MAC address = 00:15:e9:46:15:54
Debug, broadcasting DHCP_REQUEST for 172.16.0.30
Debug, dns option is missing in DHCP server response. Assuming 172.16.0.3
Debug, broadcastAddr option is missing in DHCP server response. Assuming 172.16.255.255
Debug, dhcpIPaddrLeaseTime=3600 in DHCP server response.
Debug, DHCP_ACK received from  (172.16.0.3)
Debug, broadcasting ARPOP_REQUEST for 172.16.0.30
Info, verified 172.16.0.30 address is not in use
Info, your IP address = 172.16.0.30
Debug, orig hostname = localhost
Debug, about to exec "/etc/dhcpc/dhcpcd.exe /var/lib/dhcpc/dhcpcd-ath0.info up"

 Ну, поздравляем, соединение завершено!