Hoje instalei o VirtualBox no Debian 12 e usando o trabalho de ponte wifi, consigo pingar a vm usando a mesma classe de ip do wifi wlan0 (driver 88x2bu), mas o endereço ip e o link ip sh não reportam a interface
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
link/ether ******** brd ******
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether ************ brd ********** permaddr *******
, onde fica a ponte?
Com outros aplicativos como kvm/qemu libvirt eu nunca falhei em configurar nenhuma ponte com wlan (com ethernet está ok), como é possível que o VirtualBox possa usar a ponte e o libvirt não? Para libvirt eu sempre uso a solução virbr: crie uma interface virbr que "aponte" para wlan algo como isto
<name>wifibr</name>
<uuid>***</uuid>
<forward dev='wlan0' mode='route'>
<interface dev='wlan0'/>
</forward>
<bridge name='virbr5' stp='on' delay='0'/>
<mac address='****'/>
<domain name='rosso.priv'/>
<ip address='192.168.201.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.201.128' end='192.168.201.254'/>
</dhcp>
</ip>
<dnsmasq:options>
<dnsmasq:option value='dynamic-host=rosso.priv,0.0.0.0,wlan0'/>
</dnsmasq:options>
</network>
Tentando uma falha de ponte
brctl addif br0 wlan0
can't add wlan0 to bridge br0: Operation not supported
Pergunta: como funciona a ponte do virtualbox? É possível fazer algo semelhante com libvirt? Eu prefiro usar minha classe ip wlan0
O Virtualbox não faz bridging da mesma forma. Ele usa uma interface de "filtro de rede" para interceptar pacotes.
De https://www.virtualbox.org/manual/ch06.html#network_bridged
O host não verá isso em ferramentas normais
ip -a
, etc., porque está em um nível mais baixo; não há interface associada a ele.Na
virtualbox
GUI você pode selecionar qual interface será conectada em ponte. Isso também será mostrado no.vbox
arquivo de configuração para a VMpor exemplo
Infelizmente, não. Uma parte importante do método VirtualBox é que seu driver de filtro não apenas implementa bridging Ethernet, mas também reescrita de endereço MAC.
O verdadeiro motivo que impede que as interfaces 'cliente' Wi-Fi sejam interligadas é que o Wi-Fi só permite que um cliente envie quadros de seu próprio endereço MAC 1 – o mesmo campo "endereço MAC de origem" serve a dois propósitos no Wi-Fi e identifica tanto o remetente MAC (metade superior da camada 2) quanto o rádio Wi-Fi físico que está associado a um ponto de acesso específico (metade inferior da L2). Em resumo, o endereço MAC do remetente é usado para selecionar a chave de descriptografia WPA, outros parâmetros de rádio Wi-Fi, então não é possível para sua interface WLAN enviar quadros arbitrariamente do MAC da VM.
O VirtualBox contorna isso implementando essencialmente o NAT de nível MAC – sua implementação de ponte interna troca o endereço MAC da VM com o do host em todos os cabeçalhos de quadro, reescreve consultas ARP e pacotes ICMPv6 Neighbor Discovery e mantém o controle dos endereços IP para que, ao receber um quadro da rede (endereçado ao MAC do host, é claro), ele possa trocar o MAC de destino correto da VM novamente. (Consulte
Devices/Network/SrvIntNetR0.cpp
.)O Linux, até onde eu sei, não tem um equivalente nativo para isso; em vez disso, ele simplesmente se recusa a fazer a ponte entre uma interface de cliente Wi-Fi.
(A solução recomendada seria obter um cabo Ethernet.)
1 O cabeçalho do quadro 802.11 é assimétrico – o lado do "ponto de acesso" recebe dois campos de endereço, o lado do "cliente" recebe apenas um. Um modo de quatro endereços que permite bridging do lado do cliente é possível e o Linux até o suporta, mas a maioria dos APs rejeitará tais quadros; é muito raro ter um AP que pode ser configurado para aceitar quadros 4addr.