В данном материале мы рассмотрим достаточно распространенный вопрос, связанный с подключением 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 после чего нажимаем кнопку «Соединение».
В Linux для настройки и правильной работы WiFi потребуется соответствующий драйвер, которого может не оказаться в системе. Чтобы выяснить какую карту сети использует оборудование, можно при посредством команды «lslci –nn» узнать ID устройства. Если карточка имеет USB-стандарт подключения, вводим команду «lsusb». Посредством данных команд консоль выведет список системных устройств с указанием их идентификаторов. Вот пример строки из командного вывода 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-сети можно использовать режим графической настройки в рамках Network-Manager, а также консольный режим, либо Wicd. Рассмотрим вариант отладки Wi-Fi в консольном варианте.
Чтобы настроить беспроводной интерфейс, вам потребуется пакет wireless_tools, в котором присутствуют такие необходимые утилиты как iwlist, iwconfig и другие. Также для поддержки WPA/WPA2 потребуется wpasupplicant - пакет. Эти два пакета обязательны к установке.
В первую очередь потребуется подключение беспроводного интерфейса с использованием команды «ifconfig wlan0 up». После ее выполнения можно провести сканирование доступных беспроводных сетей, воспользовавшись командой «iwlist wlan0 scan» («iwlist») станет доступной к исполнению системной командой только после того, как вы установите пакет wireless_tools).
vmwpc1:~# iwlist wlan0 scan
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), а также уровень сигнала, шифровальные методы и т.п.
В файле «/etc/network/interfaces» хранится ключ доступа к пользовательской 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
Как только вы настроите конфигурационные файлы, нужно будет включить интерфейс посредством ifup wlan0. Чтобы проверить состояние беспроводных интерфейсов, используем wpa_cli status:
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 сам по себе морально устаревает. Помимо прочего сегодня его достаточно легко взломать.
В данном случае потребуется проверить устройство на наличие его подключения к системе. Также нужно посмотреть показывает ли она lspci (исключая телефоны) или lsusb. Возможно, потребуется обновление usb ids и pci ids.
Далее проверяем, содержатся ли в dmesg какие-либо данные о загруженных драйверах. После того, как вы убедитесь в том, что в dmesg проблема отсутствует, а значит дело не в виртуальной машине, возможно, понадобится опробовать последний compat-wireless (в отдельных случаях может потребоваться прошивка). Проверяем наличие Linux-Wireless drivers в драйверах беспроводного типа.
Необходимо внимательно почитать сообщения об ошибках. Если таковые отсутствуют, нужно запустить dmesg | tail , откуда, вполне вероятно, станет ясно, в какую сторону копать.
Одной из возможных причин отсутствия доступа к Wi-Fi-модулю может быть отсутствие прошивки. Также не помешает проверить rfkill и прочие переключатели «железа». Можно покопаться в BIOS.