Idioma
Categoria
Pesquisar

Como conectar-se a uma rede Wi-Fi criptografada usando o terminal

Utilizando a linha de comando do Linux para escanear e conectar em redes wi-fi. Veja como carregar as configurações na inicialização do sistema

Em Terminal Por Rudi Drusian Lange
Publicado em
Última atualização

Antes de começar

Se algum programa estiver gerenciando a rede wi-fi é preciso encerrá-lo antes de iniciar as configurações para evitar conflito. Na interface KDE por padrão o script Network Manager gerencia as redes tanto wi-fi como cabeadas.

Os comandos abaixo são exclusivos para Linux Slackware ou distribuições que utilizem o mesmo sistema de inicialização.

# Shell

# Interrompe o Network Manager
/etc/rc.d/rc.networkmanager stop

# Retira o serviço da inicialização do sistema
chmod -x /etc/rc.d/rc.networkmanager

Configurando a rede Wi-Fi

O comando iwconfig configura a interface de rede wireless. Quando executado sem argumentos retorna as informações de todas as interfaces wireless o sistema.

$ Shell

iwconfig

wlan0     IEEE 802.11  ESSID:"Nome da Rede Wi-Fi"
          Mode:Managed  Frequency:2.437 GHz  Access Point: D6:CA:6D:AF:AC:44
          Bit Rate=65 Mb/s   Tx-Power=20 dBm
          Retry short  long limit:2   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=70/70  Signal level=-37 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:2409  Invalid misc:1933   Missed beacon:0

Acima wlan0 é o nome da interface wi-fi, este nome pode variar de acordo com o sistema e o fabricante do dispositivo. Nos comandos e configurações deve ser substituído pelo nome encontrado no sistema em uso. ESSID é o nome da rede wi-fi configurado atualmente na interface.

Definindo parâmetros:

# Shell

# Troca o nome da rede
iwconfig wlan0 essid "Rede Wi-Fi"

# Canal auto: Conecta-se a rede "Rede Wi-Fi" com o maior sinal disponível
iwconfig wlan0 essid "Rede Wi-Fi" channel auto

# Canal manual: Conecta-se a rede com o maior sinal disponível somente no canal 3
iwconfig wlan0 essid "Rede Wi-Fi" channel 3

# Outra forma de escolher o canal é utilizando a frequência
iwconfig wlan0 essid "Rede Wi-Fi" freq 2.422G

Se o canal estiver definido, ao utilizar o comando iwconfig é frequência utilizada aparecerá no resultado da seguinte forma: Frequency:2.422 GHz. Se o canal estiver em auto esta informação é omitida.

Se estiver utilizando uma rede aberta, sem criptografia, somente os comandos acima já são suficiente para se conectar, porém se a rede estiver protegida será necessário configurar também a criptografia.

Ativando a interface Wi-Fi

O comando ifconfig retorna todas as interfaces ativas, seja de rede cabeada ou wi-fi. Se a interface wi-fi não aparecer na lista é necessário ativá-la com o comando:

# Shell

ifconfig wlan0 up

Procurando por uma rede

O comando iwlist permite localizar redes utilizando a linha de comando.

# Shell

# iwlist interface scan - retorna todas as redes disponíveis
iwlist wlan0 scan

# Para encontrar uma rede específica
iwlist wlan0 scan | grep "nome da rede" -B5 -A6

O uso das aspas "" em torno do nome da rede só é necessário se houver espaço entre as palavras.

  • -B5 - se encontrar o nome da rede mostra 5 linhas anteriores
  • -A6 - se encontrar o nome da rede mostra 6 linhas posteriores

É possível usar estes filtros para localizar somente as linhas desejadas.

# Shell

# Exemplo mostrando menos informações
iwlist wlan0 scan | grep "nome da rede" -B5

# Mostra somente o nome de todas as redes disponíveis
iwlist wlan0 scan | grep ESSID

Outra forma de procurar redes é utilizando o comando iw:

# Shell

# Retorna diversas informações sobre as redes escaneadas
iw wlan0 scan

# Retorna somente os nomes das redes
iw wlan0 scan | grep SSID

Também é possível fazer filtros usando grep com as opções -A -B.

Criptografia WPA / WPA2

WPA (Wi-Fi Protected Access) é atualmente o mecanismo de criptografia mais comumente utilizado. WPA é o sucessor da criptografia WEP, corrigindo diversas falhas de seu predecessor. WPA2 é uma atualização do WPA que corrige algumas de suas deficiências e fornece maior segurança. Hoje, WPA2 deve ser considerado o nível mínimo de proteção requerida para uma rede wi-fi. Infelizmente não é possível usar o comando iwconfig para definir a criptografia, para isso utiliza-se um programa chamado wpa_supplicant.

Edite o arquivo /etc/wpa_supplicant.conf usando um editor de texto com as seguintes informações:

# /etc/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root

network={
   ssid="Nome da Rede"
   psk="senha da conexão"
}

Essas são as configurações mínimas para se conectar a uma rede wi-fi.

  • ctrl_interface=/var/run/wpa_supplicant - cria um arquivo com o nome da interface wi-fi em /var/run/wpa_supplicant caso de conexão bem-sucedida.
  • ctrl_interface_group=root - permite que um programa (ex: wpa_cli) seja utilizado por usuários do grupo root. Altere para o grupo desejado.

As informações da conexão são definidas no bloco network. Para configurar mais de uma rede basta criar um bloco network para cada uma das conexões desejadas. O parâmetro priority=N é utilizado para definir qual conexão terá prioridade ao se conectar, são utilizados números inteiros e quanto maior o valor maior a prioridade.

Abaixo um exemplo do arquivo wpa_supplicant.conf com uma configuração mais completa e com duas redes wi-fi:

# /etc/wpa_supplicant.conf

# WPA Supplicant

# verifica associação bem-sucedida
ctrl_interface=/var/run/wpa_supplicant
# grupo com permissão para usar wpa_cli
ctrl_interface_group=root

network={
   # Para redes ocultas, escaneia primeiro
   scan_ssid=1
   # WPA 2
   proto=RSN
   key_mgmt=WPA-PSK
   # Nome da rede
   ssid="Rede Wi-Fi 1"
   # Senha
   psk="Senha do Wi-Fi 1"
   # CCMP, TKIP, or both
   group=CCMP
   pairwise=CCMP
   # Valores mais altos conectam primeiro
   priority=10
}

network={
   scan_ssid=1
   proto=RSN
   key_mgmt=WPA-PSK
   ssid="Rede Wi-Fi 2"
   psk="Senha do Wi-Fi 2"
   group=CCMP
   pairwise=CCMP
   priority=5
}

O comando wpa_passphrase permite gerar a entrada PSK a partir do nome da rede (SSID) e da senha utilizando criptografia 256-bit.

# Shell

wpa_passphrase nomedarede senhadarede

network={
   ssid="nomedarede"
   #psk="senhadarede"
   psk=822d27026b9924855d1e27080023207b6bf1ea390ab9186afc144e62ff298296
}

Use a PSK gerada no lugar da senha no arquivo wpa_supplicant.conf para aumentar a segurança. Mude as permissões para garantir que somente o usuário root possa ler o arquivo.

# Shell

chmod 640 /etc/wpa_supplicant.conf

Conectando

Para iniciar a conexão utilize os comandos:

# Shell

# Inicia a conexão
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf

# Atribui IPs automaticamente
dhclient wlan0
  • -B - executa o comando em segundo plano, liberando o terminal. Remova este parâmetro para depuração.
  • -i - nome da interface wi-fi.
  • -c - caminho do arquivo de configuração.

Finalizar e reiniciar a conexão:

# Shell

# Finalizar
killall wpa_supplicant

# Reiniciar
killall -HUP wpa_supplicant

Para aplicar alterações realizadas em wpa_supplicant.conf é necessário reiniciar a conexão.

Configurando a interface na inicialização do sistema

O arquivo /etc/rc.d/rc.inet1.conf contém as configurações da interface wireless. Edite o arquivo, localize a seção com as configurações para wlan0 e descomente somente as linhas abaixo:

Somente para o Slackware ou distribuições com o mesmo sistema de inicialização.

# /etc/rc.d/rc.inet1.conf

# Nome da interface
IFNAME[4]="wlan0"
# Para IP fixo use abaixo e deixe o DHCP como "no"
#IPADDRS[4]=""
# Habilita DHCP
USE_DHCP[4]="yes"
# Nome da rede Wi-Fi
WLAN_ESSID[4]="Nome da Rede Wi-Fi"
# Indica o uso do wpa_supplicant
WLAN_WPA[4]="wpa_supplicant"
# Tempo máximo para encontrar a rede
WLAN_WPAWAIT[4]=5

Como esta configuração gera atraso na inicialização é recomendável diminuir o tempo máximo para encontrar a rede. Se nenhuma rede for encontrada o script fica procurando por 30 segundos por padrão até interromper por tempo esgotado. Acima foi utilizado 5 segundos, faça testes para verificar a melhor configuração para seu cenário.

Além deste tempo, soma-se mais 15 segundos para o DHCP completar a sua operação, seja a conexão bem-sucedida ou não. Com menos de 15 segundos o DHCP não consegue terminar antes do tempo se esgotar.

Após atualizar o arquivo rc.inet1.conf é possível usar o script rc.inet1 para iniciar e interromper a conexão.

# Shell

Inicia a conexão Wi-Fi usando wpa_supplicant
/etc/rc.d/rc.inet1 wlan0_start

Interrompe a conexão
/etc/rc.d/rc.inet1 wlan0_stop

No ambiente testado neste tutorial, ao iniciar a conexão aparece o seguinte erro:

# Shell

/etc/rc.d/rc.inet1:  wlan0 information: 'Any ESSID'
Error for wireless request "Set Nickname" (8B1C) :
    SET failed on device wlan0 ; Operation not supported.

Aparentemente definir um apelido não é suportado pelo cartão wireless. Este erro não interfere no funcionamento da conexão.

Referências

A maioria das informações deste tutorial foram retiradas da documentação presente no Linux. Utilizando o comando man ou consultando os documentos.

# Shell

# Man pages
man wpa_supplicant
man wpa_supplicant.conf
man wpa_passphrase

# Linux Docs
vi /usr/share/doc/wpa_supplicant-2.10/README.slackware
ls /usr/share/doc/wpa_supplicant-2.10/

Outros sites consultados: