Страницы

четверг, 9 августа 2012 г.

Ubuntu 12.04 server + Wi-Fi Atheros AR9285 adapter в консоли

Подключение Wi-Fi карты к микросерверу или настройка Wi-Fi в консоли

Wi-Fi адаптер на чипсете Atheros AR9285 в формате Mini-PCI-e, временно подключен через адаптер Mini-PCI-e to PCI-e к слоту PCI-e 1x микросервера. В дальнейшем планируется замена на 3g адаптер.
Wi-Fi адаптер поддерживает стандарты 802.11bgn.

Основной пакет программ для беспроводных интерфейсов - "wireless-tools". В него входит команда iwconfig для конфигурирования беспроводного адаптера, iwlist scan - для просмотра доступных сетей. Также для беспроводных защищенных сетей необходим пакет программ wpasupplicant, а для точки доступа пакет hostapd.

После физического подключения адаптера и загрузки микросервера. Посмотрим в каком состоянии адаптер.

root@microserver:~# lspci | grep Wireless
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)

root@microserver#iwconfig
...
wlan0  IEEE 802.11bgn  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=0 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
...

root@microserver#lspci | grep Wireless
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)

root@microserver#lspci -v
...
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
Subsystem: Foxconn International, Inc. Device e016
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at fe8f0000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [60] Express Legacy Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 00-00-00-00-00-00-00-00
Capabilities: [170] Power Budgeting <?>
Kernel driver in use: ath9k
Kernel modules: ath9k
...
Видно, что для адаптера используется драйвер ath9k (Atheros). Он входит в ядро. Согласно описанию драйвера возможно использование адаптера в следующих режимах:
Station Mode (STA) - клиентская станция, по умолчанию
AP Mode (AP) - точка доступа
Ad-Hoc (IBSS) mode - режим peer-to-peer без точки доступа. Если у двух компьютеров перевести адаптеры в этот режим, то будет возможно их соединение без проводов.
WDS - беспроводной мост между точками доступа.
и др.
Качественная поддержка чипсета в ядре обеспечена переданными сообществу linux исходными кодами драйвера.

root@microserver#dmesg | grep Atheros

[    9.964031] ieee80211 phy0: Atheros AR9285 Rev:2 mem=0xffffc900109c0000, irq=16

Предварительно можно сделать вывод, что адаптер поддерживается ядром Linux "из коробки".


Настройка беспроводного адаптера в режиме "клиента"
Режим клиента нужен чтобы иметь возможность подключения к существующей инфраструктуре, например к роутеру с wi-fi. А микросервер у меня выступает как "основа инфраструктуры" самостоятельно и его сетевая настройка предназначена предоставлять сервисы, а не получать. Это создает легкие трудности манипулирования сетевой конфигурацией.

Включим беспроводной интерфейс:
root@microserver#ifconfig wlan0 up

Просканировать наличие какой-либо wi-fi сети
Чтобы подключиться к какой-либо сети wi-fi вначале просканируем эфир на их наличие. Это выполняется с помощью команды iwlist scan или iwlist wlan0 scan, где wlan0 - беспроводной интерфейс участвующий в сканировании.


root@microserver#iwlist scan
...
wlan0     Scan completed :
          Cell 01 - Address: 00:1A:2B:00:00:01
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=39/70  Signal level=-71 dBm  
                    Encryption key:on
                    ESSID:"TestAP"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=00000001ca485186
                    Extra: Last beacon: 256ms ago
                    IE: Unknown: 0003477531
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD06001018020014
...


Видим, что обнаружена точка доступа Wi-Fi с именем TestAP с частотным каналом 11. Здесь она именуется Cell 01 - "Ячейка 01". Уровень сигнала отличный. "Encryption on" - означает, что включено шифрование и оно имеет вид "IEEE 802.11i/WPA2 Version 1" и "Authentication Suites (1) : PSK". Т.е. WPA2-PSK. PSK - пароль-ключ предварительно переданный клиентам". Т.е. потребуется предварительная настройка пакета wpasupplicant для задания пароля доступа и характеристик шифрования.

root@microserver:~#wpa_passphrase TestAP > /etc/wpa_supplicant.conf
root@microserver:~#cat /etc/wpa_supplicant.conf

# reading passphrase from stdin
network={
ssid="TestAP"
#psk="testpasswo"
psk=c640b48e3fcd0842de9be8fcb83760f17a262b187e93291701f1c550e820dbc98
}


root@microserver:~#nano /etc/wpa_supplicant.conf


scan_ssid=1 # сканировать точку доступа если скрытая
proto=RSN
key_mgmt=WPA-PSK


т.е. RSN - это для WPA2 протокола


Далее, проверим подключение к точке доступа.
root@microserver:~#wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
...
Associated with 00:1a:2b:00:00:01
...
Таким образом, физическое соединение установилось, т.е. Layer 2 поднят.

Ctrl-C чтобы прервать соединение.
Для того чтобы команда wpa_supplicant выполнялась в фоне, задать опцию -B, означающую "background".

Далее, можно запросить IP-адрес у dhcp-сервера точки доступа, разумеется при запущенном wpa_supplicant.
root@microserver:~#dhclient wlan0
Проверяем
root@microserver:~#ifconfig wlan0

Теперь посмотрим таблицу маршрутизации и проверим, чтобы маршрут по умолчанию, для неизвестных ip-адресов проходил через беспроводной адаптер (мое требование).
root@microserver:~#ip route

root@microserver:~#ip route del default
root@microserver:~#ip route add default via 10.0.0.138

где - 10.0.0.138 - адрес шлюза, в данном случае wi-fi 3g router Bigpond.

Проверка доступности сети Интернет, при условии что роутер подключен к ней.
root@microserver:~#ping 8.8.8.8
root@microserver:~#ping www.google.com


Для упрощения подключения к сети, можно задать конфигурацию в файле /etc/network/interfaces

root@microserver:~#cat /etc/network/interfaces

...
auto wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-conf /etc/wpa_supplicant.conf
post-up wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf

...
Вышеуказанные строки обеспечивают присоединение к точке доступа автоматически во время загрузки. Если это не требуется, то нужно убрать строку auto wlan0, а подключение осуществлять командой ifconfig wlan0 up.
Все параметры, касающиеся шифрования, протоколов, пароля точки доступа находятся в файле /etc/wpa_supplicant.conf

Этот способ неудобен тем, что подключение настраивается "жестко" для одной известной точки доступа. Часто возникает задача быстрого подключения к разным беспроводным сетям. На декстопе, для этого используется какой-либо менеджер подключений, а на сервере - я пока еще не решил что будет.



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

root@microserver:~#ifconfig wlan0 up

Это создаст интерфейс wlan0 , но не присвоит ему IP адрес и пр.

Перевод адаптера в режим точки доступа - старый способ (у меня не работающий):
root@microserver:~#iwconfig wlan0 mode Master
У меня не сработало. Выдало. Invalid argument

Причина в следующем:
"All new mac80211 based drivers that implement AP functionality are supported with hostapd's nl80211 driver."
Т.е. все настройки режима точки доступа проводятся через hostapd. В моем случае это так. И команда lsmod показывает, что драйвер в данном случае на новой архитектуре.

root@microserver:~# lsmod | grep 80211
mac80211              506816  1 ath9k
cfg80211              205544  3 ath9k,mac80211,ath


Обратная операция  - перевод адаптера в режим клиента:

root@microserver:~#iwconfig wlan0 mode Managed

Также доступен режим ad-hoc.
root@microserver:~#apt-get install iw hostapd
Эти операции пока работают.


hostapd демон точек доступа и серверов аутентификации. Реализует поддержку протоколов IEEE 802.11 access point management, IEEE 802.1X/WPA/WPA2/EAP Authenticators, RADIUS client, EAP server, and RADIUS authentication server. Полноценное ПО, позволяющее создать точку доступа с современнейшими средствами контроля доступа.

Описание hostapd советует создать минимальный конфигурационный файл hostapd-minimal.conf со следующим содержимым:

root@microserver:~#nano hostapd-minimal.conf
#change wlan0 to your wireless device
interface=wlan0
driver=nl80211
ssid=microserver
channel=1


и проверить запуск точки доступа командой:

root@microserver:~# hostapd hostapd-minimal.conf
Configuration file: hostapd-minimal.conf
Using interface wlan0 with hwaddr 00:00:00:00:00:02 and ssid 'microserver'


После этого клиентский компьютер стал видеть еще одну точку доступа с именем microserver. Но подключаться к ней нет смысла, разве только чтобы проверить соединение с ней на уровне L2.

Теперь, после проверки возможностей, нужно сформировать полноценный конфигурационный файл точки доступа.

Опять же, руководство hostapd советует базовый конфигурационный файл для точки доступа WPA2.
root@microserver:~#nano /etc/hostapd/hostapd.conf


interface=wlan0
driver=nl80211
ssid=microserver
channel=1
# Опции

macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=YourPassPhrase
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Просмотр сообщений:
tail -f /var/log/syslog


Опция -B отвечает за запуск в фоновом режиме (демон).
root@microserver:~#hostapd -B /etc/hostapd/hostapd.conf

Существует возможность сделать для каждого пользователя свой ключ для доступа к точке доступа. См. Ресурсы.


Запуск hostapd при загрузке микросервера


Итак, для настройки точки доступа сделать следующее:
Отредактировать /etc/network/interfaces - присвоить статический ip-адрес адаптеру.
Отредактировать /etc/hostapd/hostapd.conf - конфигурация сервиса hostapd.
Отредактировать /etc/default/hostapd для запуска сервиса hostapd при загрузке.
Отредактировать /etc/dhcp/dhcpd.conf для обслуживания беспроводных клиентов.



Для автозапуска сервиса точки доступа при загрузке, нужно отредактировать файл /etc/default/hostapd и изменить строки на:
RUN_DAEMON="yes"
DAEMON_CONF="/etc/hostapd/hostapd.conf"

Т.к. беспроводной адаптер будет работать в режиме точки доступа, то ему желательно присвоить статический ip-адрес, отредактировав /etc/network/interfaces.
...
iface wlan0 inet static
 address 192.168.5.1
 netmask 255.255.255.0
 gateway 192.168.5.1
 broadcast 192.168.5.255
...
auto wlan0
...


После установления связи по беспроводной сети на уровне L2, необходимо озаботиться автоконфигурацией клиентов точки доступа. Для этого надо  включить имя беспроводного интерфейса wlan0 в список интерфейсов dhcpd сервера, на которых он раздает адреса.
В моем случае это в файле /etc/default/isc-dhcp-server
root@microserver:~#cat  /etc/default/isc-dhcp-server
...
INTERFACES="home wlan0"
...

А также, внести изменения в файл /etc/dhcp/dhcpd.conf, внести новую подсеть для wlan.

...
subnet 192.168.5.0 netmask 255.255.255.000 {
 range 192.168.5.3 192.168.5.200;
 option domain-name-servers 85.21.192.3, 213.234.192.7;
 option routers 192.168.5.1;
 option broadcast-address 192.168.5.255;
 default-lease-time 86400;
 max-lease-time 172800;
}

...

Перезапуск сервера dchp
Остановка dchp сервера: $ sudo service isc-dhcp-server stop
Запуск dchp сервера: $ sudo service isc-dhcp-server start

Либо перезагрузка микросервера.


Также некоторые сервисы и их конфигурации, как то smbd, nfs, ssh должны быть поправлены при необходимости, чтобы внести поддержку на новом беспроводном интерфейсе.



Ресурсы
http://help.ubuntu.ru/wiki/wifi_ap
http://help.ubuntu.ru/wiki/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D1%81%D0%B5%D1%82%D0%B8_%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E
Описание драйвера Atheros ath9k. http://linuxwireless.org/en/users/Drivers/ath9k/
Описание hostapd. http://wireless.kernel.org/en/users/Documentation/hostapd
Сайт hostapd. http://w1.fi/hostapd/
Простая реализация криптостойкого шифрования WiFi с помощью hostapd. http://www.ibm.com/developerworks/ru/library/l-wifiencrypthostapd/index.html

1 комментарий:

ravilshv комментирует...

Доброго вечера
вопрос, а есть способ включить на данном адаптере вай фай режим работы n?
iwconfig
eth0 no wireless extensions.

wlan0 IEEE 802.11bgn ESSID:"MGTS_GPON_9"
Mode:Managed Frequency:2.432 GHz Access Point: 94:4A:0C:51:5F:F8
Bit Rate=54 Mb/s Tx-Power=17 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=55/70 Signal level=-55 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:5 Invalid misc:80752 Missed beacon:0

lo no wireless extensions.

dmesg | grep Atheros
[ 14.798140] ieee80211 phy0: Atheros AR9285 Rev:2 mem=0xffffc90001dc0000, irq=19

lspci | grep Wireless
09:00.0 Network controller: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) (rev 01)