O sistema não deve tentar usar o Adaptador USB sem fio conectado ao Ubuntu, mas estar disponível para as VMs se ligarem a

3

Então, eu perguntei um pouco atrás em como fazer uma regra do udev para bloquear determinados dispositivos USB . No entanto, eu preciso conseguir algo assim com adaptadores USB sem fio.

Eu tenho um adaptador USB sem fio da EDIMAX que é um chipset Realtek. Eu tenho isso no meu sistema para uma VM Kali rodando dentro do VMware Workstation, mas eu quero disponibilizá-lo apenas para a VM. Dito isto, ele está no meu computador o tempo todo, e eu quero que o Ubuntu não seja capaz de usá-lo como uma placa de rede, e só quero que seja usado pela VM.

A parte complicada: eu preciso isolar especificamente este adaptador wifi de ser usado, enquanto todos os outros são um jogo justo para o sistema / Network Manager. Este é dedicado para uso em uma VM, NÃO pelo sistema operacional host, Ubuntu 14.04.

Estou a pensar que uma regra do udev para evitar que seja utilizada como uma placa de rede pelo Ubuntu é o caminho a seguir, mas não sei como fazer isto ou se este é o método a seguir. Pensamentos sobre como posso conseguir isso?

O sistema que estou tentando conseguir é o Ubuntu 14.04.

Informações solicitadas

Relevante lsusb line:

Bus 001 Device 003: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
    
por Thomas Ward 05.11.2015 / 00:33

2 respostas

4
  

Quão irônica a solução mais fácil para resolver o problema é uma das soluções que eu já sabia implementar. Agora me sinto bobo por perguntar em primeiro lugar ...

Adotei uma abordagem de usuário avançado da velha escola para o problema. Já é bem sabido que qualquer interface definida em /etc/network/interfaces será considerada "Não gerenciada" pelo NetworkManager - assim é o caso da minha placa Ethernet em meu laptop e meu adaptador USB externo quando conectado.

Basicamente, eu coloco uma regra udev que atribui um nome específico ao adaptador, vm_wlan0 , em /etc/udev/rules.d/70-persistent-net.rules :

# USB device 0x:0x (rtl8192cu) 
# EDIMAX EDIMAX EW-7811Un N150 USB 2.0 Wireless nano Adapter
# Typically used for Kali VM
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:XX:XX:XX:XX:XX", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="vm_wlan0"

Agora que o nome da interface é 'estático' no sistema, vem as alterações do arquivo /etc/network/interfaces . Basicamente eu peguei emprestado isso do wiki do Debian em Configuração de Rede , que utiliza o arquivo /etc/network/interfaces para trazer um dispositivo 'para cima' sem dando qualquer IP real, então eu ajustei:

allow-hotplug vm_wlan0
iface vm_wlan0 inet manual
    pre-up ifconfig vm_wlan0 up
    post-up ifconfig vm_wlan0 down

Isso permite que o computador inicialize sem deixar de configurar as interfaces de rede; ao mesmo tempo, traz o adaptador sem fio para 'cima' e o desativa 'para baixo', de modo que o dispositivo ainda está presente no computador host, mas não está 'ligado' do ponto de vista de rede, nem é gerenciado pelo NetworkManager.

    
por Thomas Ward 03.12.2015 / 22:13
3

SYSFS drive/unbind é o seu caminho. Não foi possível encontrar authorized & amp; remove , parece que os dispositivos de rede são especiais em comparação com os de armazenamento.

Eu corro isso enquanto conecto / desconecto a chave USB Wireless para procurar diferenças.

lsusb
lsusb -t
udevadm monitor -u
udevadm monitor --env

Eu notei que:

  • O VirtualBox não vai para o pai além do dispositivo USB:

    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/
    
  • O VirtualBox liga o novo driver para 1-1:1.0 (dispositivo USB): usbfs ao conectar, em seguida, um rt2800usb regular ao desconectar. (Eu tenho um D-Link DWA-123 V.B1)

  • Como nenhum evento enviado para:

    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/
    

    Então eu procurei pelo nó filho persistente:

    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/net/wlan1
    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/net/wlx9094e4008e2c
    

    ( wlan1 é criado, depois movido / renomeado para wlx9094e4008e2c , não sei por quê!)

De qualquer forma

  1. Criado meu arquivo de regras /etc/udev/rules.d/99-my-vbox-filter.rules
  2. Adicionada a regra

    ACTION=="add", ENV{DEVTYPE}=="wlan", ENV{SUBSYSTEM}=="net", ENV{ID_VENDOR_ID}=="2001", ENV{ID_MODEL_ID}=="3c1d", RUN="/bin/sh -c 'echo -n $(basename $(cd /sys%p/../..; pwd)) >/sys%p/../../driver/unbind'"
    

    2001:3c1d obteve os comandos mencionados anteriormente

  3. Recarregue as regras

    sudo udevadm control --reload
    

Nota: Eu não usei o EDIMAX antes, se você achar que não é o mesmo caso, poste as informações coletadas, para que eu possa ajudar.

    
por user.dz 03.12.2015 / 21:18