|
|
Guia: Configurando Redes WirelessCarlos E. Morimoto 28/06/2006 Usando o wpa_supplicant
Embora não seja infalível, o WPA é um padrão mais seguro, por isso é o preferido em redes onde a segurança é um fator importante. Nem todas as placas são compatíveis com o WPA e, no Linux, existe um complicador adicional, que é o fato de alguns dos drivers não oferecerem suporte a ele, ainda que a placa originalmente suporte. Para usar o WPA em uma rede de médio ou grande porte, é preciso escolher com um certo cuidado quais placas e pontos de acesso usar. Para conectar os clientes Linux à rede, usamos o wpa_supplicant. Algumas distribuições já incluem ferramentas de configuração para ele, mas vou descrever aqui o processo manual de configuração, que você pode usar para corrigir problemas ou, quando não houver nenhuma ferramenta mais simples disponível. Comece instalando o pacote wpa_supplicant" ou "wpasupplicant". Nas distribuições derivadas do Debian, você pode instalá-lo via apt-get: # apt-get install wpasupplicant Uma dica é que, ao usar o Ubuntu você deve primeiro abrir o arquivo "/etc/apt/sources.list" e descomentar a linha referente ao repositório Universe, como em: deb http://br.archive.ubuntu.com/ubuntu dapper universe Depois de salvar o arquivo, rode o "apt-get update" e você poderá instalar o wpa_supplicant via apt-get, usando o mesmo comando do Debian. A partir do Ubuntu 6.6, ele já vem instalado por padrão. No Fedora, instale-o usando o yum: # yum install wpa_supplicant O passo seguinte é criar o arquivo de configuração do wpa_supplicant, contendo o SSID e a senha da sua rede. É possível também criar uma configuração que permita conectar em várias redes diferentes, como veremos a seguir. Rode o comando "wpa_passphrase" seguido do SSID da rede e a passprase (a senha), como em: $ wpa_passphrase minharede minhapassprase Ele retorna a configuração que deve ser incluída no arquivo, como em:
network={ Note que ele inclui duas linhas "psk", onde vai a passprase. A linha que está comentada contém sua passprase real, enquanto a segunda contém um "hash" (verificador), que funciona da mesma forma, mas evita que você precise deixá-la disponível dentro do arquivo para qualquer um ver. Apague a linha comentada, deixando apenas a segunda linha, com o hash. Agora edite (ou crie) o arquivo "/etc/wpa_supplicant.conf", de forma que ele contenha apenas as linhas retornadas pelo comando. Você pode também usar o comando abaixo (como root), que já modifica automaticamente o arquivo, matando os dois coelhos com uma cajadada só: # wpa_passphrase minharede minhapassprase > /etc/wpa_supplicant.conf Falta agora se conectar ao ponto de acesso. Uma ressalva importante é que, para usar o WPA em conjunto com o wpa_supplicant, o ponto de acesso deve estar configurado com a opção "Broadcast SSID" ativada. Caso contrário, o wpa_supplicant não consegue encontrar o ponto de acesso e não estabelece a conexão. Verifique e, caso necessário, altere a configuração do AP:
Agora vem o comando que ativa o wpa_supplicant, especificando a placa de rede que será usada, o arquivo de configuração que acabamos de criar e o driver que será usado: # wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf -d -D madwifi O "ath0" indica a sua placa wireless. O mais comum é que ela seja a "wlan0", mas isso varia de acordo com o driver usado. Sua placa pode ser vista como "eth0" ou "eth1", caso seja uma placa Intel IPW, Orinoco ou ADM, como "ath0", se tiver uma placa com chip Atheros, ou mesmo "ra0", no caso das placas com chip Ralink. O "madwifi" por sua vez, indica o driver que será usado pelo wpa_supplicant. As possibilidades aqui são as seguintes: 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. Se você estivesse usando uma placa Broadcom configurada através do Ndiswrapper e reconhecida pelo sistema como wlan0, por exemplo, o comando seria: # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -d -D ndiswrapper Por causa da opção "-d" que incluímos no comando, ele roda em modo verbose, onde são mostrados detalhes sobre a conexão com o ponto de acesso. Este modo é interessante para descobrir problemas. Se a conexão for bem sucedida, você terá (depois de uma rápida sucessão de mensagens), algo como:
State:
GROUP_HANDSHAKE -> COMPLETED Estas mensagens indicam que ele se conectou ao ponto de acesso com o endereço MAC "00:50:50:81:81:01" e que a conexão está disponível para transmitir dados. A partir daí, você precisa apenas configurar os parâmetros da rede (IP, máscara, gateway e DNS) usando a ferramenta apropriada para que a conexão fique disponível. No Kurumin e outras distribuições derivadas do Knoppix, você pode usar o "netcardconfig", no Fedora pode usar o "system-config-network", no Ubuntu pode usar o "network-admin" (o "Configurar rede no Menu"), no Slackware pode usar o "netconfig" e assim por diante. Se, por outro lado, você receber mensagens como:
Scan
results: 0 ou:
Setting
scan request: 1 sec 0 usec ... significa que a conexão não foi estabelecida. Pode ser que o ponto de acesso esteja configurado para não divulgar o SSID, que o seu notebook está muito longe do ponto de acesso, fora da área de alcance, ou mesmo que a antena do notebook está desativada. No caso da segunda mensagem, é provável que o driver indicado na linha de comando esteja incorreto, ou que não suporte o WPA. Este é o caso de muitas placas configuradas através do Ndiswrapper (por exemplo) ou casos onde você tenta usar o driver "wext" em uma placa que possui um driver específico, como as placas Atheros (madwifi). Depois de testar e ver que a conexão está funcionando corretamente, você pode passar a usar o comando abaixo, trocando o "-d" por "-B". Isso faz com que o wpa_supplicant rode em modo daemon, sem bloquear o terminal nem mostrar mensagens na tela: # wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf -B -D madwifi
Ativando o wpa_supplicant no boot
Se você usa o Ubuntu, Kurumin, ou qualquer outra distribuição derivada do Debian, abra o arquivo "/etc/network/interfaces". Adicione as duas linhas abaixo, contendo os parâmetros do wpa_supplicant, no final do arquivo. Note que agora adicionamos também a opção "w", específica para uso em scripts de inicialização:
up wpa_supplicant
-i ath0 -c /etc/wpa_supplicant.conf -wB -D madwifi Lembre-se de substituir o "ath0" e "madwifi" pelos parâmetros corretos no seu caso. Para que fique tudo certo, o arquivo deve conter também uma seção com os endereços usados pela placa. Veja um exemplo de arquivo completo: # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
auto
lo ath0
iface
ath0 inet static
up
wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf -wB -D
madwifi Como de praxe, ao usar este exemplo como modelo, preste atenção para substituir todos os "ath0" pela interface correta no seu caso e ajustar os endereços de acordo com a configuração da sua rede. Caso você use o Fedora, Mandriva, ou outra distribuição originária do Red Hat, abra o arquivo "/etc/sysconfig/network-scripts/ifup-wireless" e adicione a linha: wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf -wB -D madwifi Crie o arquivo "/etc/sysconfig/network-scripts/ifdown-wireless", contendo a linha "killall wpa_supplicant" e transforme-o em executável:
# echo 'killall
wpa_supplicant' > /etc/sysconfig/network-scripts/ifdown-wireless O arquivo ifup-wireless é executado pelo Fedora ao ativar a placa de rede, enquanto o ifdown-wireless é executado ao desativá-la. Ao editar os dois arquivos, estamos fazendo com que os comandos do wpa_supplicant sejam executados corretamente nas duas situações. Uma observação importante é que, ao ser configurado para rodar em background, o wpa_supplicant ficará o tempo todo tentando se conectar às redes wireless configuradas. Se você quiser se conectar à uma rede cabeada, deverá, além de configurar a rede, desativar o wpa_supplicant, usando o comando: # killall wpa_supplicant
Opções avançadas
Neste caso, você deve especificar cada uma das redes no arquivo "/etc/wpa_supplicant.conf", juntamente com um "peso" ou prioridade para cada uma. O arquivo poderia conter uma entrada para a rede da sua casa, que usa WPA, a rede do escritório, que usa WEP e uma entrada para redes públicas, sem encriptação. O restante da configuração continua igual ao que já vimos. A rede de casa pode ter peso 5, a do escritório peso 3 e as redes públicas peso 1, de forma que ele dá prioridade às duas redes, e tenta se conectar à qualquer rede pública disponível caso nenhuma das duas seja encontrada. Neste caso o arquivo ficaria: # Rede de casa, com WPA (esta é a entrada gerada pelo wpa_passphrase)
network={ # Rede do escritório, com WEP:
network={ # Redes públicas, sem encriptação
network={ Note que incluí a linha "priority", dentro de cada uma das entradas, especificando a prioridade de cada uma. As redes com prioridade mais alta são testadas primeiro, deixando a entrada para redes públicas como último recurso. No caso da entrada para redes WEP, você substituiria apenas o SSID e a chave de encriptação pelos valores corretos, mantendo as linhas "key_mgmt=NOME" e "wep_tx_keyidx=0", que fazem parte da configuração.
O WPA Personal (também chamado de WPA-PSK) é o padrão mais comum, que abordei até agora. Nele você define uma passphrase (pre-shared key) na configuração do ponto de acesso e a fornece na configuração de cada cliente. É um sistema relativamente simples, mas que garante uma boa segurança, desde que você não use uma passphrase fácil de adivinhar. O WPA Enterprise por sua vez, utiliza uma estrutura muito mais complexa, onde o ponto de acesso é ligado a um servidor Radius, que controla a autenticação. Além da senha de acesso, o cliente precisa possuir um certificado digital, que pode ser desde um arquivo no HD, até um smartcard. Quando o cliente se conecta, é criado um túnel encriptado (uma espécie de VPN) entre ele e o servidor, garantindo a segurança dos dados. Por ser bem mais trabalhoso, este é um sistema geralmente usado apenas em empresas e ambientes onde a segurança é essencial, mas mesmo assim é perfeitamente suportado pelo wpa_supplicant. Este é um exemplo de configuração, que você usaria no arquivo "/etc/wpa_supplicant.conf":
network={ Note que neste caso é necessário indicar a localização dos certificados, que devem ser previamente instalados no HD, além de fornecer o login e senha. |