В данном материале мы рассмотрим достаточно распространенный вопрос, связанный с подключением Wi-Fi интерфейса в виртуальной среде Vmware и Virtualbox. Нередко у начинающих сисадминов, да и тех, что поопытнее, возникают сложности именно на этом этапе реализации сетевого доступа к образу установленной системы.
Сегодня все чаще для виртуализации рабочей, системной среды используются USB-девайсы в виде WiFi-карт. Это обусловлено тем, что нормально использовать встроенный WiFi-модуль в виртуальной машине практически невозможно. В данном случае речь идет не только о программно-железячной совместимости, но и о некоторых специфических аспектах работы Linux/Unix – систем с виртуальными машинами. Что же касается USB-модулей Wi-Fi, то здесь все достаточно просто и понятно, если речь идет о работе в образе ОС Windows – чтобы получить возможность настраивать WiFi-соединения в виртуальной среде Vmware или Virtualbox, вставляем USB-интерфейс в хостовый ПК и подключаем его к рабочей виртуальной среде. Далее в гостевой операционной системе определяется данный WiFi-модуль, последующая работа с которым происходит, как на обыкновенном ПК (установка драйверов, отладка и так далее).
В виртуальной среде Vmware-Player нужно выполнить определенные действия, чтобы подключить такой интерфейс. Открываем в основном меню раздел «Player», где выбираем пункт «Removable Devices» в списке предложенных устройств выбираем требуемую карту Wi-Fi после чего нажимаем кнопку «Соединение».
Сложности при установке и отладке WiFi-интерфейса под образами Linux
В Linux для настройки и правильной работы WiFi потребуется соответствующий драйвер, которого может не оказаться в системе. Чтобы выяснить какую карту сети использует оборудование, можно при посредством команды узнать ID устройства.
Если карточка имеет USB-стандарт подключения, вводим команду
Посредством данных команд консоль выведет список системных устройств с указанием их идентификаторов. Вот пример строки из командного вывода lsusb:
Bus 001 Device 002: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN
Как можно видеть, это Wi-Fi-интерфейс от производителя Realtek модели RTL8188CUS. Ее ID – это первая четверка шестнадцатеричных чисел 0bda:8176. Эти числа обозначают ID производителя, а последующие относятся к обозначению ID WiFi-карты. В нашем случае модель устройства мы уже знаем, а потому искать ее по ID нет необходимости. Большинство USB-драйверов и драйверов для внутренних карт производства Realtek находятся в firmware-realtek – пакете. Тем не менее, после того, как этот пакет установлен и подключена ваша USB-карта, беспроводной интерфейс может попросту не появиться. Поэтому лучше всего сразу, не теряя времени, отправиться на сайт производителя и скачать там драйвера для конкретной модели карты под Unix/Linux. В нашем случае в скачанном архиве можно найти исходный текст драйверов, сопроводительную документацию и установочный скрипт «install.sh». Запускаем полученный скрипт – после его запуска система скомпилирует модуль драйвера 8192cu, а затем инсталлирует его в Linux.
После этого мы сможем наконец увидеть в конфигурации беспроводной wlan0-интерфейс.
Инсталляция требуемых драйверов для работы с WiFi-модулем
Для настройки WiFi-сети можно использовать режим графической настройки в рамках Network-Manager, а также консольный режим, либо Wicd. Рассмотрим вариант отладки Wi-Fi в консольном варианте.
Чтобы настроить беспроводной интерфейс, вам потребуется пакет wireless_tools, в котором присутствуют такие необходимые утилиты как iwlist, iwconfig и другие. Также для поддержки WPA/WPA2 потребуется wpasupplicant - пакет. Эти два пакета обязательны к установке.
Настройка WiFi-карты
В первую очередь потребуется подключение беспроводного интерфейса с использованием команды
После ее выполнения можно провести сканирование доступных беспроводных сетей, воспользовавшись командой iwlist, утилита станет доступной к исполнению системной командой только после того, как вы установите пакет
wireless tools). Для установки wireless-tools в Ubuntu / Linux Mint / Debian
sudo apt install wireless-tools
Далее
wlan0 Scan completed :
Cell 01 - Address: B8:A3:86:12:75:BA
ESSID: "Wi-Fi Net"
Protocol:IEEE 802.11bg
Mode:Master
Frequency:2.427 GHz (Channel 4)
Encryption key:on
Bit Rates:54 Mb/s
Extra:rsn_ie=30140100000fac020100000fac020100000fac020000
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
Quality=93/100 Signal level=70/100
Cell 02 - Address: 1C:AF:F7:26:BD:C8
ESSID: 'k-60-net'
Protocol:IEEE 802.11bgn
Mode:Master
Frequency:2.427 GHz (Channel 4)
Encryption key:on
Bit Rates:150 Mb/s
Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f20 2
IE: WPA Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
Quality=100/100 Signal level=91/100
Насколько мы вид им, системе удалось обнаружить две сети беспроводного типа. В командном выводе также можно увидеть протоколы, каналы (частоты), задействованные сетевые идентификаторы (ESSID), а также уровень сигнала, шифровальные методы и т.п.
В файле
хранится ключ доступа к пользовательской WiFi-сети, а потому настройки сети следует производить именно в нем. Важно, чтобы доступ к этому файлу был ограничен. Ограничить это можно посредством команды
chmod 0600 /etc/network/interfaces
которая определяет права на запись и чтение файла только для владельца файла, то есть root.
Перед вами пример /etc/network/interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "k-60-net"
wpa-psk "dsqTtfsvsNyfiCsNMaga"
В данном случае wpa-psk отвечает за пароль для доступа к сети. Фраза может задаваться в ASCII-формате, а также в виде шестнадцатеричного числа на 64 бита, генерируемого wpa_passphrase.
В свою очередь wpa-ssid определяет идентификатор для беспроводной сети.
Можно создавать настройку сети WiFi-сети для wpa_supplicant и в отдельном config-файле. Не забываем указать его в /etc/network/interfaces.
Приведем простой пример подобного файла:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/network/wpa_supp.conf
Как только вы настроите конфигурационные файлы, нужно будет включить интерфейс посредством:
Чтобы проверить состояние беспроводных интерфейсов, используем:
Selected interface 'wlan0'
bssid=1c:af:f7:26:bd:c8
ssid=k-60-net
id=0
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.0.10
Варианты настройки подключений с применением WEP вместо WPA2 приводить не будем, поскольку WEP сам по себе морально устаревает. Помимо прочего сегодня его достаточно легко взломать.
Решение распространенных проблем, возникших при подключении WiFi устройства
Отсутствует интерфейс
В данном случае потребуется проверить устройство на наличие его подключения к системе. Также нужно посмотреть показывает ли она lspci (исключая телефоны) или lsusb. Возможно, потребуется обновление usb ids и pci ids.
Далее проверяем, содержатся ли в dmesg какие-либо данные о загруженных драйверах. После того, как вы убедитесь в том, что в dmesg проблема отсутствует, а значит дело не в виртуальной машине, возможно, понадобится опробовать последний compat-wireless (в отдельных случаях может потребоваться прошивка). Проверяем наличие Linux-Wireless drivers в драйверах беспроводного типа.
Интерфейс присутствует, но ничего невозможно сделать
Необходимо внимательно почитать сообщения об ошибках. Если таковые отсутствуют, нужно запустить dmesg | tail , откуда, вполне вероятно, станет ясно, в какую сторону копать.
Одной из возможных причин отсутствия доступа к Wi-Fi-модулю может быть отсутствие прошивки. Также не помешает проверить rfkill и прочие переключатели «железа». Можно покопаться в BIOS.
Отсутствует режим наблюдения
- STA-драйверы, включая Broadcom и Ralink, а также драйверы от других производителей не имеют поддержки режима наблюдения;
- ndiswrapper не может поддерживать режим наблюдения;
- Airodump-ng/Wireshark могут не показывать определенные пакеты. В данном случае необходимо проверить rfkill и прочие переключатели железа + BIOS.