- MNorin.com
- Блог про Linux, Bash и другие информационные технологии
- Настройка WiFi из командной строки
- Установка необходимых пакетов
- Проверка беспроводного контроллера
- Настройка WiFi из командной строки
- Изменение конфигурационных файлов
- Похожие посты:
- Настройка WiFi из командной строки : 9 комментариев
- Запуск wifi через командную строку linux
- Wicd
- Командная строка
- Рассмотрим пример подключения к wifi-точке с шифрованием WEP
- Рассмотрим более сложный случай — соединение с точкой доступа по WPA-шифрованию
- Заключение
MNorin.com
Блог про Linux, Bash и другие информационные технологии
Настройка WiFi из командной строки
Если вы пользуетесь какой-либо операционной системой на базе ядра linux, то скорее всего уже видели графические приложения для подключения к беспроводными сетям. Но если графического приложения еще нет, и для установки его требуется наличие сети, а для получения доступа к Интернету необходимо подключиться к беспроводной точке, то выход тогда только один — настройка WiFi из командной строки. Или еще пример — настроить сервер по ssh, чтобы он мог работать с беспроводным контроллером.
Установка необходимых пакетов
В первую очередь необходимо проверить, установлены ли пакет wpasupplicant и wireless-tools. Эти пакеты позволят вам подключаться к беспроводным сетям с WPA и WPA2 аутентификацией. В Debian и Ubuntu это делается командами
dpkg -l | grep wpasupplicant dpkg -l | grep wireless-tools
Если пакеты не установлены, то, возможно, поднять беспроводную сеть не получится, если у вас нет другого носителя. Пакеты устанавливаются следующей командой:
apt-get install wpasupplicant wireless-tools
Кроме того, может понадобиться поставить микрокод (firmware) для устройства, установив соответствующий производителю пакет. Микрокод также называют прошивкой, но это не совсем правильно. Микрокод загружается в устройство перед началом работы с ним, а прошивка в устройстве находится постоянно. Для Intel это может быть, например, пакет firmware-iwlwifi из репозитория non-free. Микрокод часто лежит именно в этой ветке репозиториев. Либо это может быть пакет firmware-realtek, либо firmware-linux-free.
Проверка беспроводного контроллера
Перед тем, как пытаться подключаться, нужно убедиться, что система видит WiFi-контроллер и правильно его распознает, для просмотра списка устройств можно использовать команду lspci, в ее выводе должна быть строчка наподобие этой:
03:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)
А в списке интерфейсов должен присутствовать соответствующий сетевой интерфейс, обычно это wlan0. Просмотреть список можно командой
Настройка WiFi из командной строки
Если устройство в системе найдено, можно переходить к настройке сети. Для начала просмотрим список доступных локальных сетей:
На экран будет выведен список доступных сетей в виде записей такого вида:
Cell 04 - Address: 64:70:02:A4:D5:4E Channel:2 Frequency:2.417 GHz (Channel 2) Quality=55/70 Signal level=-55 dBm Encryption key:on ESSID:"wireless-net" Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s 9 Mb/s; 12 Mb/s; 18 Mb/s Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s Mode:Master Extra:tsf=000000efaa1c94dc Extra: Last beacon: 260ms ago IE: Unknown: 0005616E67656C IE: Unknown: 010882848B960C121824 IE: Unknown: 030102 IE: Unknown: 2A0100 IE: IEEE 802.11i/WPA2 Version 1 Group Cipher : CCMP Pairwise Ciphers (1) : CCMP Authentication Suites (1) : PSK IE: Unknown: 32043048606C IE: Unknown: 2D1AEF1103FFFF0000000000000000000000000000000406E6E70D00 IE: Unknown: 331AEF1103FFFF0000000000000000000000000000000406E6E70D00 IE: Unknown: 3D1602051100000000000000000000000000000000000000 IE: Unknown: 341602051100000000000000000000000000000000000000 IE: Unknown: DD180050F2020101830003A4000027A4000042435E0062322F00 IE: Unknown: DD0900037F01010000FF7F IE: Unknown: DD990050F204104A0001101044000102103B00010310470010000102030405060708090A0B0C0D0E0F1021000754502D4C494E4B10230009544C2D57523834314E10240003382E3010420003312E301054000800060050F204000110110019576972656C65737320526F7574657220544C2D57523834314E100800020086103C000101104900140024E26002000101600000020001600100020001
Из этой информации нам понадобится поле «ESSID», представляющее название точки доступа, в данном случае «wireless-net», а также строчки «IEEE 802.11i/WPA2 Version 1» и «Authentication Suites (1) : PSK». Эти два значения дают нам понимание того, что используется WPA2-PSK аутентификация.
Создаем файл /etc/wpa_supplicant/wpa_supplicant.conf:
wpa_passphrase wireless-net password > /etc/wpa_supplicant/wpa_supplicant.conf
wpa_supplicant -B -iwlan0 -Dwext -c/etc/wpa_supplicant/wpa_supplicant.conf
После этого, если адрес не получен автоматически, вызываем DHCP-клиент:
После получения адреса Интернет может быть недоступен. Необходимо командой route проверить таблицы роутинга. Если шлюз по умолчанию отсутствует, то надо добавить его командой
route add default gateway
Если адрес указан верно, то вы сможете получить доступ к Интернету. Но обычно DHCP-клиент получает шлюз по умолчанию автоматически
Изменение конфигурационных файлов
Теперь нам необходимо задать в конфигурационных файлах параметры беспроводной сети — название и ключ.
Записываем в файл /etc/network/interfaces следующее:
auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
После этого поднимаем сетевой интерфейс:
Вот и всё. Жду ваших комментариев
Похожие посты:
Настройка WiFi из командной строки : 9 комментариев
- Юрий01.12.2014 в 19:16 Здравствуйте!
Проследовал по вашей инструкции вплоть до команды:
wpa_supplicant -B -iwlan0 -Dwext -c/etc/wpa_supplicant/wpa_supplicant.conf
и получаю в ответ:
ioctl [siocsiwencodeext] invalid argument два раза.
Как такое может быть? Я так понимаю, что дело в конфигурационном файле, но он же создавался автоматически при помощи wpa_passphrase.
Направьте, пожалуйста, мои стопы.
- mnorin Автор записи 01.12.2014 в 23:04 Интерфейс wlan0 при этом поднялся? Видно ли устройство в системе?
Возможно, вместо -Dwext нужно указать другое значение. Например, –Dnl80211
- Maxim Norin Автор записи 10.07.2017 в 23:20 Подключается ли у вас или нет — вам виднее, я не могу ответить на этот вопрос. По поводу того, ошибка ли это авторизации, ничего сказать не могу, надо хотя бы видеть текст сообщения об ошибке.
- Maxim Norin Автор записи 06.02.2019 в 06:32 Этот файл не надо нигде брать, и создавать тоже не надо, он уже должен быть. Можете уточнить операционную систему и версию?
Запуск wifi через командную строку linux
Предполагается, что у вас имеется беспроводное сетевое устройство (адаптер), который работает под 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 : утилита для настройки шифрованных соединений.
- — which ifconfig
- — which iwlist
- — which iwconfig
- — which dhclient
- — which wpa_supplicant
При выполнении каждой из этих команд вы увидите путь, по которому они располагаются в файловой системе. Если вдруг не увидите — вам придется установить отсутствующие. Наиболее простой и рекомендуемый — это менеджером пакетов того дистрибутива Linux, которым вы пользуетесь. Как альтернатива — можно предложить установку из исходников, но такой путь требует достаточного опыта от пользователя.
Рассмотрим пример подключения к wifi-точке с шифрованием WEP
1 . Первое, что мы сделаем — посмотрим, какие сетевые адаптеры имеются у нас на компьютере:
Вывод будет содержать имена и подробное описание всех сетевых интерфейсов, которые удалось обнаружить утилите ifconfig. Если не был обнаружен желаемый, то причина заключается только в одном — нет драйверов для него и не включена поддержка этого интерфейса в ядре Linux.
2 . Запускаем беспроводной сетевой адаптер:
здесь :
— wlan0 — стандартное в большинстве Linux-систем имя wifi-карточки;
— up — опция говорит команде ifconfig запустить для работы («поднять») сетевое устройство.
3 . Теперь нам надо сканировать эфир вокруг себя на наличие доступных hot-spot’ов:
— wlan0 — имя беспроводного адаптера;
— scan — команда iwlist запускается в режиме сканирования.
Результатом работы iwlist будет детальный отчет, из которого на данном этапе нас интересует только одна строчка: ESSID:»Some_Name». Значение параметра ESSID («Some_Name») — это имя беспроводной точки доступа. Теперь мы знаем, к какой конкретно wifi-точке мы будем подключаться.
# 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-адрес:
Естественно, вышеуказанные шаги выполнять каждый раз утомительно. Можно упростить процесс установки соединения, написав скрипт подключения, в котором мы объединим все эти команды в одно целое:
Здесь мы добавили еще одну команду sleep с параметром 10 секунд. Это рекомендуется делать перед получением IP-адреса для надежности установки соединения.
Сохраняем этот файл под каким-либо именем (например, wireless_up) и делаем его исполняемым командой:
Переносим wireless_up по пути /usr/local/bin, чтобы сделать его глобально видимым всей системой.
Теперь вам достаточно набрать в командной строке:
. и соединение будет установлено.
Рассмотрим более сложный случай — соединение с точкой доступа по WPA-шифрованию
Соединение с таким шифрованием поддерживает только утилита wpa_supplicant, поэтому она нам понадобиться. Также, опять таки, предполагаем, что мы знаем ключ (пароль) шифрования этой точки доступа.
1 . Генерируем пароль на основе этого ключа с помощью утилиты wpa_passphrase, которая входит в состав пакета wpa_supplicant. Дело в том, что пароль, который мы будем использовать далее, должен быть в виде шестнадцатиричного числа:
# wpa_passphrase ssid password
Утилита выдаст сгенерированную строку psk, которую мы вставим в конфигурационный файл wpa_supplicant.conf:
Это очень упрощенный файл конфигурации, но он будет работать. Возможно, вам потребуется добавить в шапку этого файла еще одну строку:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
для предоставления необходимых прав доступа.
2 . «Поднимаем» интерфейс wlan0:
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 . Проверяем, что соединение установлено:
На выводе увидим подробную информацию по указанному интерфейсу wlan0.
6 . Получаем локальный IP-адрес:
7 .Упрощаем процесс, создав по пути /etc/network/interfaces запись следующего вида:
Заключение
В зависимости от дистрибутива Linux, существует множество способов настройки wifi-соединений. Именно благодаря такому разнообразию настроить соединение можно практически в любой Linux-системе.
Главное, чтобы сам беспроводной адаптер поддерживался в Linux на уровне драйверов. Но это уже зависит главным образом от разработчиков операционных систем.