Como conectar via linha de comando do Linux em redes wi-fi WPA/WPA2

image_pdfimage_print

As ferramentas que serão utilizadas neste artigo, passo a passo, para se conectar numa rede WiFi WPA/WPA2 são:

  • wpa_supplicant
    • É uma ferramenta para a placa wireless efetuar conexão a uma rede WPA/WPA2
  • iw
    • É uma ferramenta básica para questões relacionadas a redes WiFi, como por exemplo, encontrar nome do dispositivo WiFi, efetuar a procura por pontos de acesso.
  • ip
    • É uma ferramenta utilizada para habilitar ou desabilitar dispositivos e encontrar informações em geral de uma interface de rede
  • ping

Os passos para conectar numa rede WPA/WPA2 pelo shell do Linux são:

  1. Encontre o nome do dispositivo wifi de seu computador que será utilizado para efetuar a conexão:
    1. /sbin/iw dev
      phy#0
      	Interface wlan0
      		ifindex 3
      		type managed
      
      1. A saída do comando acima mostra que:
        1. o sistema tem uma placa WiFi física como phy#0.
        2. o nome do dispositivo é wlan0
        3. O modo de operação que o dispositvo wireless está, no caso, ‘managed’, que significa que o dispositivo é uma estação wifi ou cliente que conecta em um ponto de acesso wifi (access point)
  2. Verifique se o dispositivo wifi está ativado
    1. ip link show wlan0
      3: wlan0: (BROADCAST,MULTICAST) mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
          link/ether 75:f4:33:01:cc:e5 brd ff:ff:ff:ff:ff:ff
      
    2. Procure pela palavra “UP” dentro do parenteses na resposta para ver se a interface está levantada. No exemplo acima, verificamos que a interface não está ativa
    3. Para ativar, basta: (necessário poderes de root)
      1. ip link set wlan0 up
    4. Executando novamente o comando ip link show wlan0, o resultado será:
      1. ip link show wlan0
        3: wlan0: (NO-CARRIER,BROADCAST,MULTICAST,UP) mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
            link/ether 75:f4:33:01:cc:e5 brd ff:ff:ff:ff:ff:ff
        
    5. Agora temos a palavra “UP” entre parenteses. O dispositivo está ativado.
  3. Verifique o status da conexão
    1. /sbin/iw wlan0 link
      1. A provável resposta é “Not connected” ou “Não conectado”.
      2. Isto demonstra que sua interface de rede wireless não está conectada a nenhuma rede no momento
  4. Vamos efetuar a varredura para encontrar redes WiFi disponíveis:
    1. Execute o comando (necessário poderes de root)
      1. /sbin/iw wlan0 scan
    2. A saída retornada poderá variar muito. Existindo uma ou mais redes WiFi disponíveis, o detalhe importante no retorno deste comando é o SSID da rede e o protocolo de proteção / segurança da rede, que no caso deste tutorial é WPA/WPA2. No resultado deste comando, se o protocolo indicado for RSN, isto pode ser entendido como WPA2.
  5. Agora é hora de efetuarmos a conexão na rede WiFi de nosso interesse.
    1. Para isto, já confirmamos que o protocolo de segurança / proteção da rede é compatível com as ferramentas que estamos utilizando, no caso WPA / WPA2
    2. E já temos o nome da rede, que é o SSID da rede
    3. Com tudo isto em mãos, será necessário efetuar 2 passos para efetuar a conexão:
      1. Primeiro passo é gerar o arquivo de configuração para o wpa_supplicant que conterá o passphrase para a rede wifi (é necessário privilégio de root para efetuar os procedimentos abaixo)
        1. wpa_passphrase NOME_DA_REDE_SSID_AQUI >> /etc/wpa_supplicant.conf
        2. Será perguntado a senha da rede. Digite e aperte enter
        3. Terá sido criado ou adicionado os dados ao arquivo  /etc/wpa_supplicant.conf
        4. cat /etc/wpa_supplicant.conf
          1. E será visto o conteúdo
        5. Estando tudo ok, vamos ao passo seguinte
      2. O segundo passo é executar o wpa_supplicant com este novo arquivo de configuração é executar o comando de conexão. Para isto, basta:
        1. wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf
          1. -B indica para o comando ser executado em background (segundo plano)
          2. -D indica o driver a ser utilizado, no caso o wext é um driver genérico
          3. -C indica o arquivo de configuração a ser utilizado
          4. -i indica qual interface de rede deve ser utilizado. Coloque o nome de sua interface de rede aqui
    4. Use o comando iw para verificar se você está conectado ao SSID informado
      1. sbin/iw wlan0 link
        1. Deverá aparecer uma resposta que contém
          1. Connected ou Conectado a rede MAC_ADDRESS_AQUI (on wlan0)
          2. SSID: Nome da sua rede
          3. E mais alguns outros dados
    5. Estando tudo ok, é necessário obter um ip. Basta executar o comando abaixo:
      1. ​dhclient wlan0
    6. Em seguida, pode ser verificado com o comando abaixo se um ip foi corretamente obtido:
      1. ip addr show wlan0
        1. inet ou inet6 ou ambos devem conter um valor válido de ip, inet sendo padrão IPv4 e inet6 no padrão IPv6
    7. Adicionar regras de roteamento
      1. Verifique se sua tabela de roteamento indica a saída para a rede wifi, principalmente se esta for sua conexão com a internet. Neste caso, todas as saídas que não forem para sua rede local deveriam estar indo para a internet via seu saída via rede wifi.
      2. Execute o comando: (todos os comandos necessitam de poderes de root)
        1. ip route show
        2. Se a saída conter algo como:
          1. 192.168.25.0/24 dev wlan0 proto kernel scope link src 192.168.25.10
        3. Sendo 192.168.25.10 o seu ip, significa que apenas há o roteamento dos pacotes do seu computador para a rede local. Não há saída configurada para a internet.
        4. A regra acima apenas faz com que todos os pacotes destinados a rede 192.168.25.x sejam direcionados a wlan0. Será necessário adicionar então uma rota default, indicado pelo comando abaixo:
        5. ip route add default via 192.168.25.1 dev wlan0
          1. No caso, o ip 192.168.25.1 deve ser o ip do seu gateway (1, 253 e 254 são os valores mais comuns, mas pode ser qualquer valor válido na rede)
        6. Agora verifique sua tabela de roteamento
        7. ip route show
          1. Que deverá ter duas linhas relativos a sua interface de rede wireless, aqui no caso, wlan0
          2. default via 192.168.25.1 dev wlan0
          3. 192.168.25.0/24 dev wlan0 proto kernel scope link src 192.168.25.10
    8. Agora basta efetuar o ping numa conexão externa para saber se a ligação com a internet via rede wifi foi efetuada corretamente
      1. ping 8.8.8.8

E pronto!

O processo acima descrito é relativamente bem detalhado de todos os passos necessários para efetuar uma conexão WPA/WPA2 a uma rede wifi. Alguns passos podem ser ignorados na ocasião de uma nova conexão a um access point anteriormente configurado. Num caso como este, já será conhecido o WIFI SSID (nome da rede), e o arquivo de configuração já deverá estar corretamente criado. Portanto, os passos necessários são apenas aqueles que são referentes a efetuar a conexão em si.

O processo acima descrito deve ser utilizado conforme cada situação específica exigir.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!