Configurando um Adaptador USB Wireless no Ubuntu Server
Esses dias um amigo me emprestou um NUC (a.k.a. Next Unit of Computing) e decidi fazer alguns experimentos utilizando o Ubuntu Server 21.04. Durante esse processo, precisei configurar um Adaptador USB Wireless pois não tinha como conectar o NUC utilizando um cabo UTP (e.g. CAT5, CAT6). Devido ter algumas informações não tão fáceis de encontrar ou um passo a passo bem definido, decidi fazer esse post no intuito de ajudar alguém que eventualmente possa passar por uma situação parecida.
Nesse post iremos aprender a configurar o acesso a internet por meio de um Adaptador USB Wireless, mais especificamente o adaptador TL-WN725N no meu caso, considerando que o servidor não tem disponível uma conexão ethernet.
Durante esse processo, precisaremos lidar com ferramentas como wpa_supplicant, netplan, systemd, dentre outros.
Preparando as dependências
Antes de mais nada precisamos baixar os pacotes necessários para construção e execução do driver para comunicação com o adaptador, e do wpa_supplicant.
Se você tiver outro computador disponível com um Ubuntu, você pode utilizar o
comando apt-rdepends
para baixar os pacotes principais (wpasupplicant
,
make
e gcc
) e suas dependências de forma recursiva.
e.g.
|
|
Porém, se você não tem outro computador disponível com um Ubuntu, você pode baixar os pacotes individualmente aqui, utilizando qualquer dispositivo que tenha a disposição.
Após baixarmos as dependências, precisamos baixar o driver que iremos utilizar.
O driver oficial da TP-Link está em beta e só suporta as versões de kernel entre 2.6.18 e 4.4.3, porém a versão que estou utilizando é a 5.11.0. Até tentei construir o driver, mas sem sucesso. Com isso, decidi seguir com um open source que encontrei e que iremos utilizar mais a frente. Obrigado ao mantenedor do projeto. :)
|
|
Uma vez que possuímos as dependências e o driver, podemos colocá-los em um flash drive.
Instalando as dependências e o driver
Após conectar o flash drive no dispositivo com o Ubuntu Server, você precisará montar o sistema de arquivos dele em um diretório qualquer para podermos utilizá-lo.
No entanto, precisamos saber primeiro qual dispositivo de bloco representa nosso
flash drive. Para isso, você pode utilizar o comando lsblk
para listar os
dispositivos reconhecidos.
A saída será bem parecida com essa:
|
|
Agora podemos montar o sistema de arquivos. Para isso, podemos utilizar o seguinte comando:
|
|
Com o sistema de arquivos montado, podemos instalar os pacotes que estão no flash drive.
|
|
Com as dependências instaladas, podemos agora construir e instalar o driver para o adaptador USB wireless.
Ele irá gerenciar toda comunicação feita com o nosso adaptador, além disso ele criará a interface de rede que iremos utilizar posteriormente com o wpa_supplicant.
|
|
Lembrando que a cada nova atualização do kernel, após o reboot solicitado, você precisará instalar o driver novamente. Por isso, é interessante que salve o repositório do driver em algum diretório local.
e.g.
|
|
Com o driver instalado, remova e insira novamente o adaptador USB wireless.
Ao executar o comando ip a
uma nova interface será exibida, além da de
loopback e a de ethernet.
dmesg
.Configurando o WPA Supplicant
Após a instalação do driver, podemos agora iniciar a configuração do wpa_supplicant.
Uma explicação rápida sobre o wpa_supplicant: ele é como o próprio nome diz, um suplicante (IEEE 802.1X Supplicant), ou seja, é o software que age no lado do cliente e que implementa negociação de chaves com um autenticador WPA. Ele precisa fornecer credenciais ou certificados para se autenticar em um autenticador que está do outro lado da rede (roteador no nosso caso) e conseguir estabeler uma conexão.
Voltando para a sua configuração, o primeiro passo é criar o arquivo que ele utilizará. Para isso precisaremos do SSID, ou nome da rede, em que iremos conectar, e a senha.
|
|
Após a criação do arquivo de configuração, precisaremos adicionar mais alguns parâmetros.
|
|
Ao instalarmos o wpa_supplicant, é criado uma
service unit em /usr/lib/systemd/system/wpa_supplicant.service
para a sua
execução. Precisaremos editar essa unit para adicionar alguns parâmetros ao seu
comando de execução.
Para obter o nome da interface de rede, podemos utilizar o comando ifconfig
ou o comando ip a
.
A flag -D
indica qual driver (interno do
wpa_supplicant) que iremos utilizar. No meu caso,
precisei utilizar o driver wext
.
|
|
Após a modificação da unit precisamos notificar o systemd das mudanças e reiniciar o serviço em execução.
|
|
journalctl -u wpa_supplicant.service -f
.Podemos verificar o status utilizando o wpa_cli
.
|
|
Se você possui mais de um adaptador, ou até mesmo uma placa de rede embutida no seu dispositivo, e deseja utilizar ambos, provavelmente você precisará configurar uma instância do wpa_supplicant para cada interface de rede individualmente.
Configurando o Netplan
Com o wpa_supplicant configurado, agora iremos configurar o netplan.
Para isso, basta editarmos o arquivo que fica em /etc/netplan
, ou criá-lo
caso já não exista. No meu caso, já existia o arquivo 00-installer-config.yaml
,
então apenas o editei.
Precisamos adicionar a seção wifis
com o seguinte conteúdo.
|
|
Após editar o arquivo, basta aplicarmos as mudanças.
|
|
Caso seja necessário, o netplan possui uma flag --debug
para ajudar durante
um troubleshooting.
Para visualizar os logs do networkd podemos utilizar o comando
journalctl -u systemd-networkd -f
.
Após isso, podemos testar nossa conexão fazendo um ping
para algum dispositivo
da rede local, ou para algum endereço externo (e.g. google.com).