Configurando a rede wireless no Slackware

Por: Julio Cesar Bessa Monqueiro

Assim como praticamente todas as distribuições atuais, o Slackware inclui o udev, que se encarrega de detectar e ativar a placa wireless quando os drivers necessários estão disponíveis. Ele também inclui a maior parte dos drivers disponíveis, incluindo os firmwares. Entretanto, ele não inclui o networkmanager, nem nenhuma outra ferramenta de configuração amigável, o que torna necessário configurar a rede wireless usando diretamente o iwconfig e o wpa_supplicant, as ferramentas de configuração manual. Vamos então a um resumo sobre a configuração da rede no Slackware.

Você pode verificar se sua placa wireless foi detectada pelo sistema usando o comando “cat /proc/net/wireless”, como em:

# cat /proc/net/wireless

Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 22
wlan0: 0000 0 0 0 0 0 0 0 0 0

Veja que no exemplo minha placa wireless foi detectada e é vista pelo sistema como “wlan0”, uma informação que vamos precisar ao ativar a conexão. Se, por outro lado, o comando não retornar nada, significa que sua placa ainda não foi detectada, nesse caso, veja as dicas seguintes.

Se você utiliza uma rede com encriptação WPA ou WPA2, a conexão é feita usando o wpa_supplicant, que nas versões recentes do Slackware está disponível dentro da categoria “N”. Ele é instalado por default, de forma que se você não o desmarcou durante a instalação, ele já estará disponível.

Para usá-lo, o primeiro passo é criar o arquivo de configuração do wpa_supplicant, contendo o SSID e a passphrase da sua rede. Para isso, rode o comando “wpa_passphrase” seguido do SSID da rede e a passphrase (a senha), como em:

$ wpa_passphrase minharede minhapassphrase

Ele retorna a configuração que deve ser incluída no arquivo, como em:

network={
ssid="minharede"
#psk="minhapassphrase"
psk=24b0d83ee1506019e87fcf1705525ca60abbd9b24ac5bedf183620d0a22ab924
}

Note que ele inclui duas linhas “psk”, onde vai a passphrase. A linha que está comentada contém sua passphrase 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. Se preferir, você pode usar também o comando abaixo (como root), que já modifica automaticamente o arquivo:

# wpa_passphrase minharede minhapassphrase > /etc/wpa_supplicant.conf

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 wlan0 -c /etc/wpa_supplicant.conf -d -D wext

O “wlan0” no comando indica a interface de rede, e naturalmente deve ser alterado conforme necessário. O “wext” é o driver (interno do wpa_supplicant) que será usado.

Atualmente, o driver wext é usado em quase todos os casos, inclusive no caso de placas configuradas através do ndiswrapper (usando o driver do Windows) e no caso das placas com chipset Intel. A única exceção fica por conta das placas com chipset Atheros, onde você deve substituir o “wext” por “madwifi”.

Por causa da opção “-d” que incluímos no comando anterior, o wpa_supplicant é executado 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
CTRL-EVENT-CONNECTED -- Connection to 00:50:50:81:81:01 completed (auth)
EAPOL: External notification -- portValid=1
EAPOL: External notification -- EAP success=1
EAPOL: SUPP_PAE entering state AUTHENTICATING
EAPOL: SUPP_BE entering state SUCCESS
EAP: EAP entering state DISABLED
EAPOL: SUPP_PAE entering state AUTHENTICATED
EAPOL: SUPP_BE entering state IDLE
EAPOL: startWhen --> 0

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.

Para confirmar, rode o comando “iwconfig”, que mostrará algo como:

# iwconfig

lo no wireless extensions.
eth0 no wireless extensions.
eth1 IEEE 802.11g ESSID:"casa"

Mode:Managed Frequency:2.447 GHz Access Point: 00:50:50:81:81:01
Bit Rate=54 Mb/s Tx-Power:32 dBm
RTS thr=2347 B Fragment thr=2346 B
Encryption key:
Security mode:restricted
Power Management:off
Link Quality:65/100 Signal level:-54 dBm Noise level:-96 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Isso significa que ele se conectou com sucesso ao ponto de acesso. 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.

Se, por outro lado, você receber mensagens como:

Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
Wireless event: cmd=0×8b1a len=8

… significa que a conexão não foi estabelecida. Pode ser que o seu notebook está muito longe do ponto de acesso, fora da área de alcance ou mesmo que o transmissor da placa wireless do notebook está desativado.

Caso o ponto de acesso tenha sido configurado para não divulgar o SSID, experimente encerrar o wpa_supplicant, definir o SSID da rede manualmente usando o iwconfig e em seguida iniciá-lo novamente, como em:

# killall wpa_supplicant
# iwconfig wlan0 essid casa
# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -d -D wext

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 wlan0 -c /etc/wpa_supplicant.conf -B -D wext

Depois de conectar na rede, falta apenas fazer a configuração dos endereços, da mesma forma que faria ao configurar uma placa de rede cabeada. Para configurar a rede via DHCP, usamos o comando “dhclient”, seguido pela interface de rede, como em:

# dhclient wlan0

Para configurar a rede manualmente, usamos o comando “ifconfig” (que permite definir o endereço IP e a máscara) e o “route” (que define o gateway), como em:

# ifconfig wlan0 192.168.1.2 netmask 255.255.255.0 up
# route add default gw 192.168.1.1 dev wlan0

Veja que ao usar o route é necessário especificar a interface no final do comando. Finalmente, é necessário editar o arquivo “/etc/resolv.conf”, especificando o endereço do(s) servidor(es) DNS. Uma forma rápida de fazer isso é usar o echo para escrever diretamente no arquivo:

# echo "nameserver 208.67.222.222" > /etc/resolv.conf

Para não precisar ficar digitando o comando novamente a cada boot, você pode criar um script, contendo os comandos de configuração e passar a executá-lo quando quiser se conectar à rede. Basta criar um arquivo de texto contendo os comandos para conectar ao ponto de acesso e configurar os endereços da rede, como em:

# Conecta ao ponto de acesso usando o wpa_supplicant
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B -D wext

# Configura a rede via DHCP
dhclient wlan0

ou:

# Concta ao ponto de acesso usando o wpa_supplicant
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B -D wext

# Configura a rede manualmente
ifconfig wlan0 192.168.1.65 netmask 255.255.255.0 up
route del default
route add default gw 192.168.1.1 dev wlan0
echo "nameserver 208.67.222.222" > /etc/resolv.conf

Depois de salvar o arquivo, ative a permissão de execução, usando o comando “chmod +x scrip”, como em:

# chmod +x /usr/local/bin/conectar-wireless

A pasta “/usr/local/bin” é um bom lugar para salvar seus scripts, pois ela faz parte do path (o que faz com que os scripts passem a ser vistos como comandos de sistema) e ela vem vazia por padrão na maioria das distribuições. Você pode também salvar os scripts dentro do home ou em outra pasta qualquer, mas nesse caso você vai precisar especificar o caminho completo ao executar o script.

Você pode também adicionar os comandos ao final do arquivo “/etc/rc.d/rc.local”, o que faz com que eles passem a ser executados automaticamente a cada boot.

Uma observação importante é que ao ser executado usando o parâmetro “-B”, como fizemos dentro do script, o wpa_supplicant fica ativo continuamente, tentando se conectar ao ponto de acesso até conseguir. Se você precisar alterar a configuração da rede, precisa primeiro finalizá-lo antes de poder executar o script novamente, usando a nova configuração. Para isso, finalize o processo usando o comando “killall”, como em:

# killall wpa_supplicant

Se, você precisar se conectar a redes sem encriptação, ou a redes com encriptação WEP, a conexão é mais simples, feita usando o comando “iwconfig”.

Para se conectar ao ponto de acesso, o primeiro passo é definir o SSID da rede, como em:

# iwconfig wlan0 essid casa

Para as redes sem encriptação, este único comando é suficiente para se associar à rede. Para as redes com ecnriptação via WEP, o próximo passo é especificar a chave usando o parâmetro “key”. Ao usar caracteres hexadecimais, a chave terá 10 dígitos (123456789A no exemplo) e o comando será:

# iwconfig wlan0 key restricted 123456789A

Se a chave for em ASCII, onde cada caracter equivale a 8 bits, a chave terá apenas 5 dígitos (qwert no exemplo) e o comando será:

# iwconfig wlan0 key restricted s:qwert

Veja que ao usar uma chave em ASCII você precisa adicionar o “s:” antes da chave. Ao configurar o ponto de acesso para usar uma chave de 128 bits, a chave terá 26 dígitos em hexa ou 13 em ACSII. Depois de terminar a configuração inicial, você pode ativar a interface com o comando:

# ifconfig wlan0 up

Para as placas que não são suportadas pelo sistema (e não aparecem ao rodar o “cat /proc/net/wireless”), a opção mais simples é usar os drivers do Windows através do Ndiswrapper. Ele não está disponível nos repositórios do Slackware, mas você pode instalá-lo através do SlackBuild disponível no http://www.slackbuilds.org/.

Para usar o Ndiswrapper, você precisa ter em mãos o driver da placa para Windows XP, que pode ser encontrado no CD de instalação ou no site do fabricante. Comece descompactando o arquivo do driver em uma pasta qualquer do sistema, de forma que os arquivos “.inf” que fazem parte do driver fiquem visíveis. No caso dos arquivos disponibilizados no formato .exe, você pode descompactar usando o comando cabextract, como em “cabextract sp36684.exe”.

Para carregar o driver, acesse a pasta contendo os arquivos e carregue o arquivo .inf usando o comando “ndiswrapper -i”, como em:

# ndiswrapper -i net5211.inf

Rode agora o comando “ndiswrapper -l” para verificar se o driver foi mesmo ativado. Você verá uma lista como:

Installed ndis drivers:
gplus driver present, hardware present

Com o driver carregado, ative o módulo com o comando:

# modprobe ndiswrapper

Se tudo estiver ok, o led da placa acenderá, indicando que ela está ativa. As placas ativadas através do Ndiswrapper são sempre detectadas como “wlan0”, independentemente do driver usado. Com a placa ativa, falta apenas configurar a rede, usando o wpa_supplicant ou o iwconfig, usando os mesmos passos que vimos anteriormente.

Se a placa não for ativada, você ainda pode tentar uma versão diferente do driver. Neste você precisa primeiro descarregar o primeiro driver. Rode o ndiswrapper -l para ver o nome do driver e em seguida descarregue-o com o comando “ndiswrapper -e”.

Se o driver se chama “gplus”, por exemplo, o comando seria:

# ndiswrapper -e gplus

Você pode então testar um driver diferente, carregando-o com o comando “ndiswrapper -i”. Em alguns casos o próprio driver para Windows XP que acompanha a placa funcionará. Em outros é preciso usar alguma versão específica do driver. Você pode encontrar várias dicas sobre placas testadas por outros usuários do Ndiswrapper no http://ndiswrapper.sourceforge.net/, na seção “Documents/Wiki > List of cards know to work”.

Para que a configuração seja salva e o Ndiswrapper seja carregado durante o boot, você deve rodar o comando:

# ndiswrapper -m

Em seguida, adicione a linha “ndiswrapper” no final do arquivo “/etc/modules”, para que o módulo seja carregado durante o boot.

Sobre o Autor