вторник, 17 декабря 2013 г.

Wifi из консоли в Linux

http://lsoft.daraba.ru/blogs/nelex
 Тут такая хорошая статья - ни убавить, ни прибавить :) И вообще этот блог заслуживает того, чтобы в нем побольше покопаться.
Копирую как есть :) Спасибо автору. У меня network-manager и wicd подключались с десятого раза, а тут всё работает...
По итогам статьи создал скрипт

#!/bin/bash
service wicd stop
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -Dnl80211
dhclient wlan0
route add default gw 192.168.5.1
echo nameserver 8.8.8.8 > /etc/resolv.conf

Но еще его не обкатывал. Итак:

Привет уважаемый читатель!

Надоели в последнее время мне проблемы с wicd и wifi-radar для подключения к Wi-Fi в Linux, и я решил что пора бы подключаться через консоль, минуя все эти надстройки в виде программ для подключения. На самом деле все оказалось еще проще чем я предполагал. И сейчас я покажу как это делается. А тем кому пока не надоело подключатся через программы стоит добавить эту заметку в Избранное, в дальнейшем пригодиться.

Подключаемся к роутеру/точке доступа

Итак, предполагаем что подключение происходит с шифрованием WPA2, так как сейчас это самое популярное и наиболее безопасное решение, чем к примеру устаревший WPA.
Для начала посмотрим все ли в порядке с нашими устройствами:
# ifconfig
eth0      Link encap:Ethernet  HWaddr e4:11:5b:f2:cc:4a 
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B) lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1131 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1131 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:299033 (292.0 KiB)  TX bytes:299033 (292.0 KiB)
Никакого wlan не видим, смотрим, может он отключен:
# ifconfig -a
eth0      Link encap:Ethernet  HWaddr e4:11:5b:f2:cc:4a 
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B) lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:816 errors:0 dropped:0 overruns:0 frame:0
          TX packets:816 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:209884 (204.9 KiB)  TX bytes:209884 (204.9 KiB)
wlan0     Link encap:Ethernet  HWaddr e4:d5:3d:9e:97:bb 
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:26410
          TX packets:0 errors:882 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:23
Ага, вот и он, наш wlan0, в некоторых исключительных случаях система его может обозначить как eth2, но не в нашем случае. Если ifconfig -a не вывел вам информации о беспроводном интерфейсе, значит система не видит устройство, либо оно отключено хардварно(на панели ноутбука), либо нет драйвера и устройство не определилось. В таком случае либо включите ваше устройство и повторите команду, либо переходите к установке драйвера. Установку я описывал в статьях:
Debian GNU\Linux: Broadcom Wi-Fi drivers в Compaq Presario CQ57
Broadcom драйвера wifi в Linux ядрах версий 3.4 и 3.5
Итак, зная наш интерфейс мы находим наш роутер или точку подключения:
#iwlist wlan0 scanning | grep -i essid
                    ESSID:"TP-LINK_985188"
                    ESSID:"Beryozka"
                    ESSID:"Tenda_18B2F8"
Видим наш "TP-LINK_985188".
Дальше, для WPA2 нам нужно создать запись соответствующую ESSID и Пароль доступа, для этого используем пакет программ wpasupplicant, если у вас не установлен, нужно установить:
# apt-get install wpasupplicant
Используем ее для генерации записи подключения:
# wpa_passphrase TP-LINK_985188 наш_пароль_установленный_на_роутере
Получаем сгенерированную запись:
network={
ssid="TP-LINK_985188"
psk=b8530ddba3a3625b9336be805da8cfb5f2d67d0e776d5ffd2f38b3f11b18a404
}
Открываем файл где храняться такие записи и добавляем нашу сгенерированную в него:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Сохраняем и закрываем.
Осталось только подключиться, что мы и делаем:
wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
В дальнейшем нам нужно только использовать последнюю команду для подключения к этому роутеру.

Настройки сети

Подключиться по Wi-Fi не сложно, но это еще не все, нужно получить/указать свои клиентские настройки для использования сети. Если ваш роутер раздает настройки автоматически то просто введите команду:
#dhclient wlan0
Если же не раздает, пропишем их вручную, введите команды:
ifconfig wlan0 ip-адресс netmask сетевая_маска
И добавляем шлюз:
route add default gw 192.168.1.1 последний IP адрес стоит по умолчанию для большинства роутеров, если у вас другой то введите его.
Все, как видите ничего сложного =)