Настройка WIFI-подключения в Linux-консоли и тестирование пропускной способности подключения

HELP-ME-24.COM (Freelance Team), Черноусов Антон

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

Наверное каждому хоть раз, но приходилось настраивать WIFI подключение и вы знаете, что для настройки требуется знать SSID сети, пароль подключения и алгоритм защиты. В Windows и Linux для настройки WIFI созданы графические утилиты которые упрощают настройку сети. Сегодня мы будем учиться настраивать WIFI подключение в консоли Linux и вас уверяю, это не намного сложнее использования графических утилит.

Установка необходимого программного обеспечения

Для управления wifi вам необходимо установить пакет wireless-tools при помощи команды:

# apt-get install wireless-tools

Диагностика WIFI-оборудования

Прежде всего проверьте ваши сетевые интерфейсы и определите какой из них поддерживает wifi-расширения. Для этого используется команда iwconfig:

# iwconfig

wlx802689733607  IEEE 802.11  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr=2347 B   Fragment thr:off
          Encryption key:off
          Power Management:off
          
enp4s0    no wireless extensions.

lo        no wireless extensions.

Из консольного вывода команды стало понятно, что наша wifi-карта называется wlx802689733607.

Поиск доступной сети и подключение

Активируем сетевой интерфейс (без этого операции сканирования вызовут ошибку):

# ifconfig wlx802689733607 up

Сканируем доступные SSID wifi-сетей при помощи команды iwlist:

# iwlist wlx802689733607 scan

wlx802689733607  Scan completed :
          Cell 01 - Address: FA:F0:82:4F:0E:D8
                    Channel:3
                    Frequency:2.422 GHz (Channel 3)
                    Quality=10/70  Signal level=-100 dBm  
                    Encryption key:on
                    ESSID:"MYTTK-WIFI"
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
                              36 Mb/s; 48 Mb/s; 54 Mb/s
                    Mode:Master
                    Extra:tsf=0000010f0d93b966
                    Extra: Last beacon: 973ms ago
                    ...

Команда выдает максимально подробный список доступных WIFI-сетей и их параметров, но нас в первую очередь интересуют ESSID сети, канал и алгоритм шифрования.

Подключение к требуемой сети и авторизация.

Сейчас я приведу последовательность команд которые потребуется ввести для подключения к WIFI-сети вручную и такая относительно сложная последовательность требуется только на этапе диагностики.

Подготовка к подключению:

# iwconfig wlx802689733607 mode managed
# iwconfig wlx802689733607 channel 2
# iwconfig wlx802689733607 essid SILA-V-LUKE

Авторизация:

Авторизация, зависит от типа шифрования wifi-сети и для WEP (устаревший тип зашиты который уже практически не используется, так как довольно легко ломается) вам необходимо просто задать параметр key:

# iwconfig wlx802689733607 key FEAACAFEDA

В случае использования WPA и WPA2-PSK вам потребуется установить дополнительный пакет wpasupplicant:

# apt-get install wpasupplicant

В конфигурационный файл /etc/wpa_supplicant.conf мы прописываем нашу связку SSID/пароль, но обратите внимание, что параметр psk вы можете задать в открытом виде или сгенерировать при помощи команды wpa_passphrase.

# wpa_passphrase SILA-V-LUKE
# reading passphrase from stdin
network={
        ssid="SILA-V-LUKE"
        #psk="Seliva12345"
        psk=ee9ab4493c2e7722224c26bb054b35b9617642283c48dcaeb7b1a91f82a72943
}

Причем,  результат выполнения команды представляет собой содержимое конфигурационный файла /etc/wpa_supplicant.conf и вы можете перенаправить вывод результата работы сразу в файл настроек:

# wpa_passphrase SILA-V-LUKE > /etc/wpa_supplicant.conf

Подключаемся к WIFI-сети защищенной при помощи WPA-PSK командой:

# wpa_supplicant -B -iwlx802689733607 -c/etc/wpa_supplicant.conf -Dwext

Обратите внимание на параметр -D. Он задает тип используемого драйвера и все варианты вы можете посмотреть выполнив команду:

# wpa_supplicant -h

В моем случае wpa_supplicant поддерживает следующие типы драйверов:

drivers:
  nl80211 = Linux nl80211/cfg80211
  wext = Linux wireless extensions (generic)
  wired = Wired Ethernet driver
  none = no driver (RADIUS server/WPS ER)

Теперь вы можете попробовать получить IP-адрес если конечно ваша WIFI-сеть поддерживает DHCP:

# dhclient wlx802689733607

Диагностика сложных случаев

Вы можете перевести wpa_suplicant в режим отладки для диагностики сложных случаев, для этого используйте следующий набор параметров командной строки:

# wpa_supplicant -Bdd -i wlx802689733607 -c /etc/wpa_supplicant.conf

В таком режиме можно детально отследить процесс подключения к WIFI-роутеру и возникающие при этом ошибки. Например в моем случае были ошибки неподдерживаемого режима работы и пришлось собрать драйвера с официального сайта Dlink.

Настройка автоматического подключения при старте сервера

Представленная выше последовательность действий легко отпугнет начинающих пользователей Linux, но как я и говорил эти операции используются только на этапе диагностики нештатных ситуаций.

Для автоматической настройки WIFI-сети предусмотрены простые и понятные параметры в файле /etc/network/interfaces и все описанные выше манипуляции сводятся к нескольким строкам в конфигурационном файле:

auto wlx802689733607
iface wlx802689733607 inet static
    address 192.168.3.95
    netmask 255.255.255.0
    gateway 192.168.3.1
    wpa-essid SILA-V-LUKE
    wpa-psk Luk2321P

Согласитесь, что такой метод гораздо проще и особо не отличается от настройки других типов сетевых интерфейсов, за настройку wifi-подключения отвечают параметры:

  • wpa-essid  - SSID сети
  • wpa-psk - Пароль подключения

Тестирование пропускной способности WIFI-сети

При обсуждении WIFI-адаптера DWA-131N, который я приобрел в рамках эксперимента с домашним WIFI, меня спрашивали про реальную пропускную способность этого свистка за 390 рублей.

Для нагрузочного тестирования пропускной способности сети в Linux используется утилита  iperf. Она используется для эмуляции сетевого трафика между источником и приемником и при этом один из компьютеров выступает сервером, а второй клиентом.

Естественно, что iperf должен быть установлен на всех компьютерах участвующих в тестировании, а устанавливается утилита командой:

# aptitude install iperf

Для тестирования запускаем на компьютере подключенном по кабелю к wifi-роутеру серверную часть iperf:

# iperf -s

На компьютере на котором собственно установлен wifi-адаптер запускаем клиентскую часть:

# iperf -c 192.168.3.204

Через некоторое время мы получим результаты замера:

------------------------------------------------------------
Client connecting to 192.168.3.204, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.3.95 port 43104 connected with 192.168.3.204 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.1 sec  41.8 MBytes  34.7 Mbits/sec

Настройка WIFI-адаптера D-Link DWA-131N в Linux

Сетевой адаптер DWA-131N не поддерживается штатными Linux-драйверами, а драйвера представленные на официальном сайте не поддерживаются современными ядрами.

На GitHub имеется набор патчей для сборки официальных драйверов на современных ядрах и проект находится по адресу https://github.com/Mange/rtl8192eu-linux-driver.

Для сборки модуля ядра выполните следующие команды:

# git clone https://github.com/Mange/rtl8192eu-linux-driver.git
# cd rtl8192eu-linux-driver
# sudo make
# sudo make install

Обратите внимание, что собрав ядро вам необходимо будет отключить загрузку по умолчания модуля rtl8xxxu который автоматически назначается устройству при старте системы. Для этого добавьте следующую запись в файл /etc/modprobe.d/blacklist.conf:

blacklist rtl8xxxu

После перезагрузки проверьте какой модуль ядра был назначен usb-устройству:

# lsusb -t
/:  Bus 10.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
...
    |__ Port 5: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 4: Dev 8, If 0, Class=Vendor Specific Class, Driver=rtl8192eu, 480M

 

Оставьте комментарий

Вы должны быть вошедший в чтобы отправить комментарий