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.
# 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:
# /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: