Чаще всего роутер используется для раздачи WiFi и множество инструкций нацелено именно на это, тем более, в таком режиме потерять контроль над роутером тяжело, а вот если мы его захотим включить в режиме "RMODE=CLIENT", то тут и начинаются приключения.
Можно найти советы автора, но они дают только направление небрежно брошенное в нужную сторону, а Вы понимайте как можете.
У меня точка доступа, раздающая Интернет запаролена фразой по протоколу WPA2-Pers, а Zyxel должен подключиться к ней клиентом по WiFi, что удобно уменьшением проводов и расширяющем границы использования возможностей rtl8186. Для меня rtl8186 работает в 2-х функциях: 1) свитч; 2) Сетевой UART. Если я подключу Zyxel по WiFi, то он вместе со своим UART`ом сможет путешествовать почти без проводов, что приятно.
Теперь о плохом. В режиме "RMODE=CLIENT" wive-ng у меня работать отказывается, причем очевидно не по тому, что не может, а потому, что что-то делаю не так, но что?
Ищем инструкции в сети. Есть простая инструкция, как включить нужный режим, но если точка без пароля http://www.g700ap.ru/articles/firmware-upgrade-wive.html. Данная инструкция помогла, но не сильно, поскольку мне так не надо, да я думаю можно было и без нее обойтись, для подключения к открытой точке. Но там есть отправные точки, что есть в wive.
Можно же сперва подключить все через командную строку. Вот такая команда, например, включает режим клиента:
Код: Выделить всё
iwpriv wlan0 set_mib opmode=8
Т.е. через команду
Код: Выделить всё
iwpriv wlan0 set_mib свойство
устанавливаются различные свойства WiFi адаптера, но НЕ авторизация. Вообще, если искать инструкции как осуществляется подключение в linux по WiFi, то выясняется, что большинства команд в wive нету, в том числе из утилит "iw", они просто убраны за ненадобностью, для экономии места, остается выяснить только что осталось.
Вот тут http://forum.volsat.com.ua/showthread.php?p=8458 есть пример нескольких команд подключения к точке доступа:
Код: Выделить всё
Я думал так
#Encryption mode:
# 0 - disabled; 1 - WEP64; 5 - WEP128; 2 - WPA-PSK/WPA2-PSK
iwpriv wlan0 set_mib encmode=2
#Number of key for encrypt. Range 0-3
iwpriv wlan0 set_mib wepdkeyid=0
#64bit/128bit WEP Encryption
iwpriv wlan0 set_mib wepkey1=ключ!!!!!
iwpriv wlan0 set_mib wepkey2=
iwpriv wlan0 set_mib wepkey3=
iwpriv wlan0 set_mib wepkey4=
собственно WPA key тут не нашел
Заметим, что данный пример скорее для WEP шифрования, но команда
Код: Выделить всё
iwpriv wlan0 set_mib encmode=2
включает именно "WPA-PSK/WPA2-PSK".
Вот тут и самое зло! После включения данного режима, Zyxel подключается к точке доступа, но не авторизуется. Команда
Код: Выделить всё
rssi
Возвращает данные подключения, но фактически ничего не работает.
Я решил, что проблема в том, что я задаю IP статически с общим IP на всю точку и применил настройки для отдельного IP на wlan0 и использования dhcp. Заметим, что dhcp не заработал, но и статический адрес перестал быть доступен после перезагрузки (ну я пару команд воткнул нагло в скрипт /etc/rc.d/S25wifinetwork), т.о. я потерял полностью возможность подключиться по ssh к Zyxel. Причем заливка другой прошивки настроек НЕ сбрасывает. У wive основные настройки лежат в отдельной памяти, а из папки "nomnt", вшитой в прошивку, восстанавливаются дефолтные настройки, а потому (почему-то я не подумал про возможность кнопочкой "reset" сбросить настройки) я залил оригинальную прошивку wive-ng (у меня была своя версия с отключенной консолью по UART), чтобы получить отладочную консоль по UART. Уже через UART я разбирался далее, что же надо сделать.
На Польском форуме я наконец нашел чего мне не хватает http://inbox.eu.org/board3/index.php?a=topic&t=108, все понятно, если знаешь Польский язык .
Настройки шифрования WPA лежат в файлике /etc/wpa.conf, собственно, настройки от туда и необходимо как-то подгрузить к адаптеру, а это делает команда
Код: Выделить всё
auth wlan0 wlan0 $AUTH_MODE /etc/wpa.conf
где "$AUTH_MODE" должен быть режимом WiFi, вроде "client-infra", для режима клиента. Но после этого все-равно ничего не заработает. Необходимо еще дать команду
Код: Выделить всё
iwcontrol wlan0
после чего все успешно поднимается, при условии, что в файлике "/etc/wpa.conf" правильные настройки.
Итак разобрались, что же надо чтобы запустить все в ручную, но что же необходимо, чтобы заработали просто штатные настройки wive-ng. Скажу по секрету: Там все есть, надо только знать как включить. По мне так подсказки написаны не совсем очевидно. Я воспользовался преимуществом владения исходниками wive-ng и поиском нашел нужные мне команды. Ну что делать, если программисту легче разобраться к коде, чем в кривом мануале?
В файле /etc/rc.d/S71wifiapps я нашел:
Код: Выделить всё
#---------------------WPA starting of end----------------
if [ "$WPA" = "yes" ] ; then
if [ "$RMODE" == "CLIENT" ] ; then
wpa_start_mode="client-infra"
else
wpa_start_mode="auth"
fi
echo Starting WPA daemon in $wpa_start_mode mode
if [ "$WLAN_IN_BR0" == "yes" ]; then
auth wlan0 br0 $wpa_start_mode /etc/wpa.conf
else
auth wlan0 wlan0 $wpa_start_mode /etc/wpa.conf
fi
fi
Из чего делаем вывод, что надо выставить параметр "WPA=yes", найти который можно в файле "general".
Код: Выделить всё
#Enable/disable wpa/wpa2
WPA=no
Честно говоря, я эту штуку не включил, т.к. решил, что "Enable" соответствует "wpa", а "disable", соответствует "wpa2", а мне-то нужен был последний - горе от ума! Тут и была основная проблема, почему ничего не работало. Именно эта опция и включает все что мне было необходимо! А именно Если "WPA=yes", то заработает режим WPA любой, иначе вообще работать не будет. Заметим, что и все остальные команды выполняются по аналогичному условию от параметра "[ "$WPA" = "yes" ]".
Итак в файле "general" делаем следующие настройки (пишу, что надо менять):
Код: Выделить всё
#Set Mode: AP/CLIENT/ADHOC
RMODE=CLIENT
#Set ESSID of wirelless Infrastructure Network
ESSID=SF-WL
#This is name BS to first probe connect (12 digits macaddress)
JOINBS=001111111FFF
#Enable/disable wpa/wpa2
WPA=yes
Пояcню некоторые. По уверению автора ESSID нужен только для режима AP. Реально сюда также можно задавать SSID точки доступа к которой мы подключаемся (в работе не проверял, т.к. в процессе настройки задал JOINBS), т.е. в "S25wifinetwork" есть общая для всех режимов строка
Код: Выделить всё
iwpriv wlan0 set_mib ssid="$ESSID"
JOINBS - это MAC адрес точки доступа к которой мы подключаемся. По заверению автора, надо пользоваться только этой опцией. Реально она использует команду
Код: Выделить всё
if [ "$JOINBS" != "" ] ; then
iwpriv wlan0 set_mib bssid2join=$JOINBS
fi
Что интерпритируется как, если задано JOINBS, то сперва пробовать подключаться именно к точке доступа с данным MAC адресом.
Найти нужный MAC легко. Даем команду
Код: Выделить всё
menu
собственно, ведь через нее и надо настраивать wive-ng. А там пункт "6)Scan", чуть-чуть подождать и она выдаст список точек доступа. Ищем там нужную, и вынимаем от туда MAC в виде "00:11:11:11:1F:FF", от куда необходимо будет убрать все ":" и вставить в конфиг.
Далее правим файлик "/etc/wpa.conf" или 4)WPA:
Код: Выделить всё
#0 - disable, 1 - WEP, 2 - WPA, 4 - WPA2 only, 6 - WPA2 mixed
encryption = 4
ssid = "SF-WL"
#1 - TKIP, 2 - AES
unicastCipher = 2
wpa2UnicastCipher = 2
usePassphrase = 1
psk = "youpassphrase"
У меня эти значения были по умолчанию, но именно на них и надо обратить внимание. Тут достаточно только задать "psk = "youpassphrase"" пароль к точке доступа.
Жмем сохранить и перезагрузить. Все должно заработать.
Главное, почему, то что надо, нашлось не на сайте или форуме с прошивкой, а на именно польском форуме после потерянных 2-х вечеров? Зато теперь знаю как менять настройки WiFi в wive-ng через командную строку без перезагрузки (удобно, если после перезагрузки все должно вернуться на как "было`").
"О, мои нервы!" (c) Одна за всех!