Um colega realizou tentativas, utilizando aplicativos para rotear a Internet através do Windows 7, e até mesmo o roteamento nativo do Windows 10, porém a rede se demonstrou muito instável para a necessidade que tínhamos.
Então surgiu a ideia de criar uma Máquina Virtual Linux, e configurá-la para agir como um Access Point, ou seja, para que os dispositivos wi-fi se conectassem através dele.
A máquina virtual
Escolhemos o Debian 8 como distribuição pela estabilidade e larga documentação pela Internet. Utilizamos também como gerenciador de Máquinas Virtuais o Virtual Box da Oracle.
Foi realizada a instalação do Debian, com o mínimo de pacotes e sem Interface Gráfica, para deixá-la como mínimo possível de capacidade (atualmente ocupa 3 GB no disco rígido), já que uma das necessidade é que seja distribuível para qualquer computador hospedeiro (independente de Sistema Operacional: Linux, Windows ou Mac OS).
Hardware a Placa de rede wifi nativa.
A primeira dificuldade foi fazer com que a Máquina Virtual reconhecesse a placa de rede wifi do computador hospedeiro, e esta dificuldade não foi superada. É impossível fazer com que a Máquina Virtual (VM) reconhecesse a placa de rede wifi do computador hospedeiro, pois ela cria uma placa de rede virtual do tipo ethernet, e não como alterar isso, pelo menos esse é comportamento utilizando o Virtual Box.
Utilizando Adaptador Wireless USB
A solução então foi utilizar um adaptador wireless USB. O adaptador USB deve ser instalado no computador hospedeiro, sendo instalado todos os drivers necessários para o funcionamento normal do adaptador wireless no hospedeiro. Verifique se o adaptador wireless funcionada perfeitamente no computador hospedeiro, antes de tentar instalá-lo na VM.
O próximo passo é fazer com que a VM reconhecesse o adaptador USB. Para tanto é necessário ir nas configurações da VM. Basta selecionar a VM e clicar no botão "Configurações", selecionar USB e adicionar o dispositivo USB que deseja que a VM reconheça.
Porém, não foi tão simples assim. Estava usando a versão 4.3 do Virtual Box, e ela não reconhecia o adaptador USB. Achei uma documentação dizendo que precisaria de um "Extension package", um pacote de extensão para o Virtual Box, mas mesmo instalando-o não reconhecia o dispositivo USB. Mais um pouco de documentação, e percebi que a USB 2.0 e 3.0 só funcionam a partir da versão 5 do Virtual Box.
Baixei então o Virtual Box 5.1 e seu respectivo "Extension Package". Removi a versão anterior do Virtual Box, guardei a VM criada com o Debian 8 no computador. Realizei a instalação do Virtuabol 5.1 e Extension Package. Importei a VM, e consegui realizar a configuração USB sendo reconhecido o dispositivo USB.
O caminho para fazer com que a VM reconheça um dispositivo USB, pode ser acessado nesse link aqui, no meu caso em um hospedeiro Linux, mas a parte da instalação do "Extension Pack" é igual para qualquer hospedeiro:
https://blog.butecopensource.org/dispositivos-usb-nao-sao-reconhecidos-pelo-virtualbox-host-linux/
Instalando os drivers do adaptador wifi na VM Debian 8
Após o adaptador USB wifi estar instalado e funcional na máquina hospedeira, e o adaptador também esteja visível através das configurações da VM no Virtual Box, é a vez de instalar os drivers na VM Linux Debian 8.
Primeiro é preciso descobrir o id do fabricante e do dispositivo, basta usar o comando, todos com permissão de root:
# lsusb
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 006: ID 0a5c:2110 Broadcom Corp.
Bus 004 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Localize o número Hexadecimal, onde os 4 primeiro dígitos é o fabricante, e os 4 após os "dois pontos" é o id do dispositivo.Ex.: 0a5c:2110
0a5c ==> Fabricante
2110 ==> Dispositivo
Mais informações aqui na wiki do Debian
Após descobrir o id do fabricante e do dispositivo, localize o respectivo driver no nesta página da wiki do Debian. Onde é possível localizar o repositório do driver, ou baixá-lo diretamente.
No meu caso era um Realtek, e tive que usar apenas alguns comandos para atualizar via apt-get, em outros casos é necessário baixar o drivers e realizar a instalação manual.
Programa Hotspotd em python
Como o dispositivo USB funcionando na VM Debian 8, é a hora de instalar os programas necessários para o funcionamento da VM como um access point. Resolvi usar, por escolha própria, um script em python que realiza essa tarefa. O script chama-se hotspotd, e pode ser obtido através do endereço abaixo:
https://pypi.python.org/pypi/hotspotd
Existe uma pegadinha aí na documentação do hostpotd presente no package index, pois antes de realizar a instalação do hotspotd, existe a dependência da instalação de dois pacotes do linux: hostapd e dnsmasq.
Dessa forma, antes de instalar o hotspotd é necessário instalar esses pacotes através do comando abaixo:
# apt-get install hostapd
# apt-get install dnsmasq
Após a instalação, é possível seguir a instalação do hotspotd, com os comandos:
# wget https://github.com/prahladyeri/hotspotd/raw/master/dist/hotspotd-0.1.4.tar.gz # tar xvf hotspotd-0.1.4.tar.gz # cd hotspotd-0.1.4/ # python setup.py install
Para iniciar a aplicação basta digitar
# python hotspotd.py start
A primeira vez será solicitada as configurações de SSID e senha, essas configurações serão salvadas, e o Access Point já aparece disponível na rede wifi.
Encontrei algumas falhas de autenticação, e resolvi deixar a rede aberta. Para isso deve-se alterar o arquivo:
/usr/local/lib/python2.7/dist-packages/hotspotd/run.conf
Deixando como comentário todos as linhas referentes a autenticação, da linha
auth_algs=1
para baixo, colocando um # na frente.
Detalhes do código e funcionamento do hotspotd aqui.
VM Debian 8 iniciando com senha automática
Para que a VM inicie automaticamente e já inicie o hotspotd sem necessidade de autenticação de usuário e senha, foi necessário alterar o linux para autenticar automaticamente com um user. Para isso foi alterado o arquivo com os comandos abaixo:
# cd /etc/systemd/system
# nano getty.target.wants/getty\@getty\@tty1.service
Localize a linha:
ExecStart=-/sbin/agetty --noclear $TERM
Altere para:
ExecStart=-/sbin/agetty --noclear -a robo %I $TERM
Salve e saia pressionando CTRL+X
Isso fará com que o Debian inicie automaticamente com o user robo sem autenticação.
Para carregar e iniciar automaticamente o hotspotd, basta alterar o arquivo .bashrc do usuário, no caso usuário robo
# nano /home/robo/.bashrc
E ao final do arquivo a linha para iniciar o hotspotd, como encontrei intermitência com o adaptador USB, hora ele ficava ativo, hora fica inativo, antes de iniciar o hotspotd, eu ativo o adaptador wireless. Então as linhas ao final do .bashrc ficaram:
sudo ifconfig wlan0 up
cd /home/robo/hotspotd-0.1.6
sudo python hotspotd start
Apesar de se tratar de uma Máquina Virtual, as configurações aqui realizadas, principalmente a parte da instalação do adaptador wireless na Máquina Virtual Debian, o hotspotd e as customizações de inicialização do Debian, podem ser replicadas no Linux Raspbian (distribuição Debian para o Raspberry Pi), podendo transformar um Raspberry Pi em um Roteador WiFi.
Até a próxima.
Nenhum comentário:
Postar um comentário