De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Configurando cliente na rede Wireless com criptografia WPA - Debian

Colaboração: Rafael Henrique da Silva Correia

Data de Publicação: 29 de abril de 2008

Há algum tempo atrás, na minha faculdade, estava tranquilamente usando o meu notebook com Debian, conectando a wireless sem criptografia e que distribuia dhcp pelo servidor, até que a galera daqui resolveu mudar as configurações e o roteador wireless passou a ter criptografia. Eles começaram a usar WPA. Para quem não conhece, WPA é um tipo de criptografia wireless muito conhecida (não inquebrável como todas as coisas, porém muito boa).

Fazendo a coisa toda funcionar...

Passo 1

Seu dispositivo wireless já tem que estar funcionando pois este tutorial não visa ensinar a configurar dispositivos mas sim botá-los para funcionar com criptografia WPA.

Passo 2: (comando a executar como root = # )

Existe um comando muito bom no Linux que garanto que a maioria conhece, mas para quem não conhece é bico de se testar, se você está em dúvida se existe um access point (vou escrever access point como AP) perto de você para listar os APs disponíveis use o comando:

  # iwconfig wlan0 scan

Onde wlan0 será sua interface wireless, podendo modificar tanto de nome como de número (caso exista mais de um dispositivo wireless). Para saber que dispositívos wireless você tem no momento use o comando:

  # ifconfig

Passo 3:

Temos que gerar a chave WPA para nos conectarmos ao AP.... Para isso instalamos o pacote wpasupplicant:

  # apt-get install wpasupplicant

ou

  # aptitude install  wpasupplicant

Feito isso execute o seguinte comando:

  # wpa_passphrase  < Ssid>  < senha>

Onde Ssid tem que ser substituido pelo ESSID mostrado no comando:

  # iwlist wlan0 scan

Exemplo:

  teste:/home/rafael# iwlist wlan0 scan
  wlan0     Scan completed :
  Cell 01 - Address: 00:12:A9:06:40:5B
  ESSID:"3Com"
  Protocol:IEEE 802.11g
  Mode:Managed
  Frequency:2.412 GHz (Channel 1)
  Quality:15/100  Signal level:-86 dBm  Noise level:-96 dBm
  Encryption key:on
  Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 11 Mb/s
  12 Mb/s; 24 Mb/s; 36 Mb/s
  Extra:bcn_int=100
  Extra:atim=0
  IE: WPA Version 1
  Group Cipher : CCMP
  Pairwise Ciphers (1) : CCMP
  Authentication Suites (1) : PSK
  
  teste:/home/rafael# wpa_passphrase "3Com" 12345678
  network={
  ssid="3Com"
  #psk="12345678"
  psk=ada307b24bb72fdf49732cb954b1cef25365c106d2257fdb43df5cc1c49ae559
  }

O comando o wpa_passphrase gera uma saída que tem que ser redirecionada para um arquivo de configuração, que é o arquivo que vai ser lido por outro comando para que possamos conectar.

Portanto no meu caso eu chamei o arquivo de wpa_supplicant.conf gravando-o em /etc, ficando da seguinte forma:

  teste:/home/rafael# wpa_passphrase "3Com" 12345678 > /etc/wpa_supplicant.conf

Mais um alerta! Se você não quiser que os outros vejam qual a senha da sua rede apague a linha comentada #psk. No meu exemplo é esta linha:

  #psk="12345678"

Passo 4:

Como me conectar por dhcp nesse AP??

Simples, rápido e eficiente :-)...

O comando para fazer a coisa funcionar é o wpa_supplicant! A linha que eu costumo usar aqui é:

  # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -D wext

O comando wpa_supplicant faz a mágica baseada em um driver! Eu uso o ndiswrapper para usar meu dispositivo wireless, usei o driver wext do wpa_supplicant e ficou perfeito! Roubando uma dica do Carlos Morimoto:

ndiswrapper : Indique este driver ao ativar a placa de rede usando o Ndiswrapper, usando o driver do Windows. Note que muitas placas funcionam perfeitamente no Ndiswrapper em redes sem encriptação ou WEP, mas ficam instáveis ao usar o WPA, justamente por que ele utiliza mais camadas e por isso tem uma possibilidade maior de apresentar problemas diversos.
wext: Este é um driver genérico, que dá suporte a muitas das placas que possuem drivers nativos. Se a sua placa não possui um driver específico (cheque os abaixo), é bem provável que funcione com ele. Em geral, as placas IPW 2200 funcionam melhor com o wext do que com o driver "ipw". Experimente as duas opções caso esteja tendo problemas com sua placa.
madwifi: O driver para placas com chipset Atheros, como a que estou usando no exemplo.
broadcom: Este é o driver nativo para as placas com chipset Broadcom, desenvolvido via engenharia reversa. Estas placas podem ser configuradas também através do Ndiswrapper. Cheque a forma como está configurada no seu micro.
ipw: Placas com os chipsets Intel IPW2100 e IPW2200, usadas nos notebooks Intel Centrino.
prism54, hermes e atmel: Estes três drivers são os mais incomuns, usados (respectivamente) pelas placas com chipset Prism (em suas várias versões), Hermes e Hermes II (da Agere) e Atmel.

No meu caso eu uso o ndiswrapper para emular meu driver wireless e no wpa_supplicant não posso usá-lo senão não consigo me conectar. O melhor a fazer é testar para ver qual funciona com seu driver.

Quando aparecer uma resposta mais ou menos assim do comando:

  Trying to associate with 00:12:a9:06:40:5b (SSID='3Com' freq=2412 MHz)
  Associated with 00:12:a9:06:40:5b
  WPA: Key negotiation completed with 00:12:a9:06:40:5b [PTK=CCMP GTK=CCMP]
  CTRL-EVENT-CONNECTED - Connection to 00:12:a9:06:40:5b completed (auth) [id=0 id_str=]

Significa que está funcionando.

Se aparecer algo do tipo:

  Trying to associate with 00:12:a9:06:40:5b (SSID='3Com' freq=2412 MHz)
  Association request to the driver failed
  Authentication with 00:00:00:00:00:00 timed out.
  Trying to associate with 00:12:a9:06:40:5b (SSID='3Com' freq=2412 MHz)
  Association request to the driver failed

Significa que ainda não está funcionando. Mas não desista, insista, uma hora vai dar certo, com algum driver!

Agora depois temos que entrar na rede! Para isso:

  teste:/home/rafael# dhclient wlan0

Aí pegamos um ip por DHCP! :-)

Se dermos um ifconfig e tiver um ip válido na interface wlan0 (lembrando que o nome pode ser diferente) significa que você ta conectado!!!

Passo 5:

Agora que fizemos o pc se conectar, precisamos gravar as configurações no arquivo /etc/network/interfaces, para automatizar a conexão diretamente no boot da máquina.

  # WIRELESS
  
  auto wlan0
  iface wlan0 inet dhcp
  #iface wlan0 inet static
  #       address x.x.x.x
  #       netmask x.x.x.x
  #       gateway x.x.x.x
  #       broadcast x.x.x.x
  #       network x.x.x.x
  
  up wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -wB -D wext
  down killall wpa_supplicant

O -wB é para que o comando rode em plano de fundo (background), up significa que quando subir ele executará este comando e down significa que quando eu pedir para baixar a interface ele executará este comando. O comando killall mata processos de acordo com o nome passado, portanto se eu der um killall wpa_supplicant eu mato o comando que fez a interface subir, finalizando a conexão. Eu coloquei uma configuração comentada para quem quer usar ip estático na rede lembrando que temos que trocar o monte de x por números de ip válidos!

Referências

Mais sobre WPA

Mais sobre AP:

Roteador

Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)