Conectar a Wi-Fi A partir do Terminal no Ubuntu 18.04/20.04 com WPA Supplicant

Neste tutorial, vamos aprender como ligar à rede Wi-Fi a partir da linha de comando no Ubuntu 18.04/20.04 servidor e desktop usando wpa_supplicant. Numa rede sem fios doméstica moderna, as comunicações são protegidas com WPA-PSK (chave pré-partilhada) em oposição a WPA-Enterprise, que é concebida para redes empresariais. WPA-PSK é também conhecido como WPA-Personal. wpa_supplicant é uma implementação do componente WPA-supplicant. Um suplicante em LAN sem fios é um software cliente instalado no computador do utilizador final que precisa de ser autenticado para aderir a uma rede.

Passo 1: Encontrar o nome da sua interface sem fios e rede sem fios

Executar iwconfig comando para encontrar o nome da sua interface sem fios.

iwconfig

wlan0 costumava ser um nome comum para interface de rede sem fios em sistemas Linux sem Systemd. Como o Ubuntu usa Systemd, vai descobrir que a sua interface de rede sem fios é denominada algo como wlp4s0. Também pode ver que não está associado a nenhum ponto de acesso neste momento.

servidorubuntu connect to wifi terminal

Se a sua interface sem fios não for mostrada, talvez precise de a trazer à tona com o seguinte comando.

sudo ifconfig wlp4s0 up

Então encontre o nome da sua rede sem fios digitalizando as redes próximas com o comando abaixo. Substitua wlp4s0 pelo seu próprio nome de interface sem fios. ESSID é o identificador do nome da rede.

sudo iwlist wlp4s0 scan | grep ESSID

ubuntu 19.04 ligar à linha de comando wifi wpa supplicant

Passo 2: Ligar à rede Wi-Fi Com WPA_Supplicant

Agora instalar wpa_supplicant no Ubuntu 18.04/20.04 a partir do repositório de software padrão.

sudo apt install wpasupplicant

Precisamos de criar um ficheiro chamado wpa_supplicant.conf usando o utilitário wpa_passphrasewpa_supplicant.conf é o ficheiro de configuração que descreve todas as redes a que o utilizador quer que o computador se ligue. Execute o seguinte comando para criar este ficheiro. Substitua a frase-chave ESSID e Wi-Fi pela sua própria.

wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf

wpa_passphrase

Nota que na imagem acima, embrulhei o meu ESSID com aspas duplas, porque o meu ESSID contém um espaço em branco.

A saída de wpa_passphrase comando será canalizado para tee, e depois escrito para o ficheiro /etc/wpa_supplicant.conf. Agora utilize o seguinte comando para ligar o seu cartão sem fios a um ponto de acesso sem fios.

sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0

A saída seguinte indica que o seu cartão sem fios está ligado com sucesso a um ponto de acesso.

Successfully initialized wpa_supplicantwlp4s0: SME: Trying to authenticate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz)wlp4s0: Trying to associate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz)wlp4s0: Associated with c5:4a:21:53:ac:ebwlp4s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0wlp4s0: WPA: Key negotiation completed with c5:4a:21:53:ac:eb wlp4s0: CTRL-EVENT-CONNECTED - Connection to c5:4a:21:53:ac:eb completed 

Nota que se estiver a utilizar a edição de desktop Ubuntu, então terá de parar o Network Manager com o seguinte comando, caso contrário causará problemas de ligação ao utilizar o wpa_supplicant.

sudo systemctl stop NetworkManager

E desabilitar o NeworkManager arranque automático no momento do arranque executando o seguinte comando.

sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager

Por defeito, o wpa_supplicant corre em primeiro plano. Se a ligação estiver concluída, abrir outra janela de terminal e executar

iwconfig

É possível ver que a interface sem fios está agora associada a um ponto de acesso.

enable wifi on ubuntu usando o comando do terminal

P>P>Pode premir CTRL+C para parar o processo wpa_supplicant actual e executá-lo em segundo plano adicionando o -B bandeira.

sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0

embora estejamos autenticados e ligados à rede sem fios, mas ainda não temos um endereço IP. Para obter um endereço IP privado do servidor DHCP, use o seguinte comando:

sudo dhclient wlp4s0

Agora a sua interface sem fios tem um endereço IP privado, que pode ser mostrado com:

ip addr show wlp4s0

ubuntu dhclient obter endereço IP privado

Agora pode aceder à Internet. Para libertar o endereço IP privado, execute

sudo dhclient wlp4s0 -r

Conectar à rede sem fios oculta

Se o seu router sem fios não emite ESSID, então precisa de adicionar a seguinte linha em /etc/wpa_supplicant.conf ficheiro.

scan_ssid=1

Like below:

network={ ssid="LinuxBabe.Com Network" #psk="12345qwert" psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195 scan_ssid=1}

Passo 3: Auto Connect At Boot Time

Para nos ligarmos automaticamente à rede sem fios no momento do arranque, precisamos de editar o ficheiro wpa_supplicant.service. É uma boa ideia copiar o ficheiro de /lib/systemd/system/ directório para /etc/systemd/system/ directório, depois editar o conteúdo do ficheiro, porque não queremos uma versão mais recente de wpa_supplicant para anular as nossas modificações.

sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service

Editar o ficheiro com um editor de texto de linha de comando, tal como Nano.

sudo nano /etc/systemd/system/wpa_supplicant.service

Encontrar a seguinte linha.

ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant

Alterar para o seguinte. Aqui adicionámos o ficheiro de configuração e o nome da interface sem fios ao ficheiro ExecStart command.

ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp4s0

Recomenda-se sempre tentar reiniciar o wpa_supplicant quando for detectada uma falha. Adicione o seguinte logo abaixo do ExecStart line.

Restart=always

Se encontrar a seguinte linha neste ficheiro, comente-a (Adicione o caracter # no início da linha).

Alias=dbus-fi.w1.wpa_supplicant1.service

Guardar e fechar o ficheiro. (Para guardar um ficheiro no editor de texto Nano, prima Ctrl+O, depois prima Enter para confirmar. Para sair, prima Ctrl+X). Em seguida, recarregar systemd.

sudo systemctl daemon-reload

Enable wpa_supplicant service to start at boot time.

sudo systemctl enable wpa_supplicant.service

Tambem precisamos de iniciar dhclient no momento do arranque para obter um endereço IP privado do servidor DHCP. Isto pode ser conseguido através da criação de uma unidade de serviço systemd para dhclient.

sudo nano /etc/systemd/system/dhclient.service

P>Coloque o seguinte texto no ficheiro.

Description= DHCP ClientBefore=network.targetAfter=wpa_supplicant.serviceType=forkingExecStart=/sbin/dhclient wlp4s0 -vExecStop=/sbin/dhclient wlp4s0 -rRestart=always WantedBy=multi-user.target

Guardar e fechar o ficheiro. Depois active este serviço.

sudo systemctl enable dhclient.service

Como obter um endereço IP estático

Se quiser obter um endereço IP estático, então precisa de desactivar dhclient.service.

sudo systemctl disable dhclient.service

Precisamos de utilizar o netplan para configurar um endereço IP estático no Ubuntu 18.04/20.04. Criar um ficheiro de configuração em /etc/netplan/.

sudo nano /etc/netplan/10-wifi.yaml

Adicionar as seguintes linhas a este ficheiro. Substitua 192.168.0.102 pelo seu endereço IP preferido. Por favor, tenha cuidado com a indentação. Um espaço extra tornaria a configuração inválida.

network: ethernets: wlp4s0: dhcp4: no addresses: gateway4: 192.168.0.1 version: 2

Guardar e fechar o ficheiro. Depois aplicar as configurações.

sudo netplan apply

Também se pode ligar a opção --debug se não funcionar como esperado.

sudo netplan --debug apply

se houver outra .yaml ficheiros sob /etc/netplan/ directório, então netplan fundirá automaticamente configurações de ficheiros diferentes. netplan utiliza systemd-networkd como o renderizador de rede backend. Recomenda-se configurar o wpa_supplicant.service corre antes de systemd-networkd.service, para que o sistema se associe primeiro com um ponto de acesso Wi-Fi, e depois obtenha um endereço IP privado.

sudo nano /etc/systemd/system/wpa_supplicant.service

Encontra a seguinte linha.

Before=network.target

Alterar para:

Before=network.target systemd-networkd.service

Guardar e fechar o ficheiro.

Outra forma de obter um endereço IP estático é fazendo login na interface de gestão do seu router e atribuindo um IP estático ao endereço MAC da sua placa sem fios, se o seu router suportar esta funcionalidade.

Usando um Hostname para aceder a serviços no Ubuntu

Atualmente, não tem de obter um endereço IP estático para a sua caixa Ubuntu. O Ubuntu pode utilizar mDNS (Multicast DNS) para anunciar o seu hostname à rede local e os clientes podem aceder aos serviços na sua caixa Ubuntu com esse hostname. Este hostname pode sempre ser resolvido para o endereço IP da sua caixa Ubuntu, mesmo que o endereço IP mude.

Para utilizar o mDNS, é necessário instalar avahi-daemon, que é uma implementação de código aberto do mDNS/DNS-SD.

sudo apt install avahi-daemon

Inicie o serviço.

sudo systemctl start avahi-daemon

Activar o arranque automático no momento do arranque.

Avahi-daemon ouve no UDP 5353, pelo que necessita de abrir esta porta na firewall. Se utilizar UFW, então execute o seguinte comando.

sudo ufw allow 5353/udp

Então deve definir um hostname único para a sua caixa Ubuntu com o comando hostnamectl. Substitua ubuntubox pelo seu hostname preferido, que não deve já ser tomado por outros dispositivos na rede local.

sudo hostnamectl set-hostname ubuntubox

Agora reinicie avahi-daemon.

sudo systemctl restart avahi-daemon

Se verificar o estado com

systemctl status avahi-daemon

pode ver o hostname mDNS, que termina com o domínio .local.

avahi-daemon mdns hostname

No computador cliente, também é necessário instalar um software mDNS/DNS-SD.

  • Os utilizadores do Linux devem instalar avahi-daemon.
  • Os utilizadores do Windows precisam de activar o serviço Bonjour instalando o serviço de impressão Bonjour ou instalando o iTunes.
  • Em macOS, o Bonjour está pré-instalado.

Agora pode aceder aos serviços utilizando o ubuntubox.local hostname, eliminando a necessidade de verificar e escrever o endereço IP.

Desbloquear Wifi no Raspberry Pi

O Ubuntu ARM OS para Raspberry Pi bloqueia a interface sem fios por defeito. É necessário desbloqueá-lo com:

sudo rfkill unblock wifi

Para desbloqueá-lo no momento do arranque, criar uma unidade de serviço systemd.

sudo nano /etc/systemd/system/unblock-wifi.service

Adicionar-lhe as seguintes linhas.

Description=RFKill Unblock WiFi DevicesRequires=wpa_supplicant.serviceAfter=wpa_supplicant.serviceType=oneshotExecStart=/usr/sbin/rfkill unblock wifiExecStop=RemainAfterExit=yesWantedBy=multi-user.target

Guardar e fechar o ficheiro. Activar o arranque automático no momento do arranque.

sudo systemctl enable unblock-wifi

Descobri que o unblock-wifi.service deve correr após o arranque do wpa_supplicant.service, caso contrário não pode desbloquear o wifi. Note que se tiver instalado um ambiente de trabalho, provavelmente há um gestor de rede em execução que pode interferir com a ligação. É necessário desactivá-lo. Por exemplo, utilizo o ambiente de trabalho leve LXQT no Raspberry Pi (sudo apt install lubuntu-desktop) e preciso de desactivar connman.service e NetworkManager.service.

sudo systemctl disable connman.service NetworkManager.service

Múltiplas Redes Wi-Fi

O /etc/wpa_supplicant.conf ficheiro de configuração pode incluir múltiplas redes Wi-Fi. wpa_supplicant seleccionará automaticamente a melhor rede com base na ordem dos blocos de rede no ficheiro de configuração, nível de segurança de rede, e força do sinal.

Para adicionar uma segunda rede Wi-Fi, execute

wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant.conf

Nota que necessita de utilizar a opção -a com o comando tee, que anexará, em vez de apagar o conteúdo original, a nova rede Wifi ao ficheiro.

Wrapping Up

Espero que este tutorial o tenha ajudado a ligar o Ubuntu 18.04/20.04 à rede Wi-Fi a partir da linha de comando com o WPA Supplicant. Como sempre, se achou este post útil, então subscreva a nossa newsletter gratuita para obter mais dicas e truques 🙂

Contecte este tutorial

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *