Access Point com cartão Atheros em Slackware 12.0
Access points baseados em PCs são formidáveis, muito superiores aos APs convencionais que empregam processadores de pequeno porte como os ARM e MIPS. Podem ainda agregar todos os serviços de um gateway de internet, DNS, proxy, autenticação e mesmo outros serviços, tudo reunido em um AP.
Preparando o Kernel
Primeiramente devemos baixar o driver Madwifi, o site do projeto é http://www.madwifi.org e a versão empregada em nosso caso foi a 0.9.4 a mais recente em 30 de abril de 2008.
Há duas formas de compilar o Madwifi, separadamente ou inserindo um patch ao Kernel e compilá-lo juntamente com o kernel como módulo ou built-in. A que adotaremos é a segunda como built-in.
Descompactando o driver:
# tar -zxvf madwifi-0.9.4.tar.gz
Certifique-se que há o link simbólico /usr/src/linux para manter a compatibilidade, caso não haja crie-o com o comando:
# cd /usr/src/
# ln -sf linux-2.6.25 linux
Zere todas as opções do kernel com o comando:
# make mrproper
Se isso não for feito o patch não será instalado na árvore do kernel.
Feito isso vá ao diretório patches que se encontra dentro do diretório onde você descompactou o driver Madwifi e execute o script install.sh:
# ./install.sh
Em seguida vamos configurar o kernel com o comando:
# make menuconfig
Devemos habilitar o recurso de bridge no kernel, que encontra-se no caso do 2.6.25 no seguinte ramo da árvore de configuração:
Networking -> Networking options -> 802.1d Ethrnet bridiging , marque-a como YES (built-in)
Devemos habilitar o suporte a wireless do kernel, que no caso do 2.6.25 encontra-se em:
Networking -> Wireless
Marque como YES (built-in) as seguintes opções:
<*> Improved wireless configuration API
[*] nl80211new netlink interface support
<*> Generic IEEE 802.11 Networking stack (mac80211)
< > Generic IEEE 802.11 Networking stack (DEPRECATED)
<M> IEEE 802.11 WEP encryption (802.11x)
Obs: Compile as opções abaixo se desejar implementar criptografia ao seu AP/servidor
< M> IEEE 802.11i CCMP support
< M> IEEE 802.11i TKIP encryption
<*> Software MAC add-on to the IEEE 802.11 networking stack
Obs: Esta opção é útil se você desejar alterar o endereço MAC de sua interface wireless
Habilitando o Madwifi no kernel no seguinte ramo da árvore do Kernel:
Device drivers -> [*] Network device support -> Wireless LAN
Desmarque todas as opções referentes ao chipset Atheros defaults do kernel e marque apenas as que foram habilitadas pelo patch.
<*> Atheros PCI/Cardbus cards
Atheros: Default transmition Rate Control Algorithm (Sample) --->
[*] Adaptive Mult-Rate Retry Control Algorithm
[*] Atsushi Onoe's rate control algorithm
-*- Sample rate rontrol algorithm
[*] A wandering minstrel rate rontrol algorithm
Não abordamos outras configurações de opções de rede do kernel neste artigo por não fazerem parte do escopo do mesmo, estou partindo da premissa que o administrador ou usuário tenha este conhecimento prévio.
Compilando e instalando o novo kernel
# cd /usr/src/linux
# make clean && make bzImage && rm /boot/config /boot/System.map && cp System.map /boot/System.map-2.6.25-ap && cp .config /boot/config-2.6.25-ap && cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.25-ap
Criando os links simbólicos:
# cd /boot/
# ln -sf vmlinuz-2.6.25-ap vmlinuz-2625-ap && ln -sf config-2.6.25-ap config && ln -sf System.map-2.6.25-ap System.map
Compilando e instalando os módulos:
# cd /usr/src/linux
# make modules && make modules_install
Configurando o Lilo:
Acrescente o novo kernel ao seu /etc/lilo.conf:
image = /boot/vmlinuz-2625-ap
root = /dev/sda1
label = 2.6.25-ap
read-only
Execute o lilo para que ele acrescente as novas alterações ao MBR do seu disco.
Configurando sua interface Atheros e suas interfaces de rede
O driver Madwifi instalou o utilitário wlanconfig em seu sistema, agora vamos usá-lo.
Resetando o cartão e setando-o como AP (modo master):
# wlanconfig ath0 destroy
# wlanconfig ath0 create wlandev wifi0 wlanmode ap
Configuraremos o modo de operação a/b/g ou auto conforme nossa necessidade.
O exemplo abaixo configura o seu cartão Atheros para operar em 802.11b 11Mb/s 2.4GHz:
# iwpriv ath0 mode 2 wds 1 turbo 0 dtim_period 2 bintval 25
Caso deseje outro modo de operação segue abaixo a tabela de opções:
Modo Código Descrição
Auto 0 Modo de Seleção Automático
802.11a 1 ou 11a 5.8 GHz 108 Mb/s (caso o seu chipset suporte)
802.11b 2 ou 11b 2.4 GHz 11 Mb/s
802.11g 3 ou 11g 2.4 GHz 54 Mb/s
Configurando o SSID, velocidade de operação e potência de saída:
# iwconfig ath0 essid "Atheros_01"
# iwconfig ath0 channel 1
# iwconfig ath0 rate "11M"
# iwconfig ath0 txpower auto
Caso deseje especificar uma potência de saída, primeiro você deve listar qual o range de potências disponíveis para o seu cartão, pois variam de modelo para modelo. No meu caso é um cartão Toshiba com o chipset AR5212. O comando é:
# iwlist ath0 txpower
A saída será parecida com o seguinte:
ath0 8 available transmit-powers :
0 dBm (1 mW)
4 dBm (2 mW)
6 dBm (3 mW)
8 dBm (6 mW)
10 dBm (10 mW)
12 dBm (15 mW)
14 dBm (25 mW)
16 dBm (39 mW)
Current Tx-Power=16 dBm (39 mW)
Configurando uma bridge para o PC funcionar como AP:
Um access point nada mais é do que uma bridge entre uma interface ethernet e uma wlan e é exatamente o que nós faremos agora.
Estou partindo da premissa que sua(s) interfaces de rede não possuam nenhuma configuração de TCP/IP, ou seja, estejam sem IP e desativadas.
Colocando a interface eth0 em modo promíscuo:
# ip link set dev eth0 promisc on
Faça o mesmo com a interface wlan:
# ip link set dev ath0 promisc on
Levantando as interfaces ethernet e wlan:
# ip link set dev eth0 up
# ip link set dev ath0 up
Criando a bridge:
# brctl addbr br0
Inserindo as interfaces ethernet e wlan na bridge:
# brctl addif br0 eth0
# brctl addif br0 ath0
Agora definimos um endereço IP para a bridge:
# ip addr add 192.168.0.1/21 brd + dev br0
Acrescentamos a bridge na tabela de roteamento default:
# ip route add default via 192.168.0.1 dev br0
Agora precisamos alterar algumas configurações no sistema /proc para nossa bridge funcionar.
Habilitando o proxy-arp para as interfaces ethernet e wlan:
# echo "1" > /proc/sys/net/ipv4/conf/br0/proxy_arp
# echo "1" > /proc/sys/net/ipv4/conf/eth0/proxy_arp
# echo "1" > /proc/sys/net/ipv4/conf/ath0/proxy_arp
Precisamos habilitar o IP forwarding entre as interfaces de rede da máquina.
# echo "1" > /proc/sys/net/ipv4/ip_forward
A maioria dos cartões wireless possuem saída para duas antenas onde podemos configurá-los como repetidoras etc. Precisamos definir qual será nossa antena padrão e desativar o recurso de uso das duas antenas.
# echo "0" > /proc/sys/dev/wifi0/diversity
# echo "1" > /proc/sys/dev/wifi0/txantenna
# echo "1" > /proc/sys/dev/wifi0/rxantenna
Configurações avançadas
Criando uma whitelist de endereços MAC (permite somente os listados).
Primeiramente zeramos a lista do cartão:
# iwpriv ath0 maccmd 3
Agora criamos a whitelist:
# iwpriv ath0 maccmd 1
Agora inserimos os MACs que poderão acessar no AP:
# iwpriv ath0 addmac 00:12:0E:A1:87:AB
Para removermos o MAC da whitelist:
# iwpriv ath0 delmac 00:12:0E:A1:87:AB
E para rompermos a conexão do MAC, visto que se este mac estiver conectado não bastará excluí-lo da blacklist, para que não tenhamos que derrubar nossa interface de rede ou esperar que o cliente desconecte, usamos o seguinte comando:
# iwpriv ath0 kickmac 00:12:0E:A1:87:AB
Segue abaixo uma tabela para criação e manipulação de listas de acesso por endereços MAC:
# iwpriv athX maccmd 3
Zera as listas existentes sejam brancas ou negras
# iwpriv athX maccmd 1
Cria uma whitelist (permite acesso somente de MACs listados)
# iwpriv athX maccmd 2
Cria uma blacklist (nega acesso somente aos MACs listados)
# iwpriv athX addmac 00:01:02:AB:CD:EF
Adiciona um MAC a lista
# iwpriv athX addmac 00:01:02:AB:CD:EF
Remove um MAC da lista
# iwpriv athX kickmac MAC
Desfaz uma conexão ativa de um MAC
Nem é preciso falar que esta técnica de bloqueio por endereço MAC é muito fraca, pois pode-se facilmente spoofar um MAC. Sugiro que leiam meu artigo sobre isso neste link ou aqui no VOL em Gateway autenticado com Apache, Iptables e CGI em shell.
Modos de autenticação:
# iwpriv athX authmode 1
Sistema aberto (default)
# iwpriv athX authmode 2
Usa chaves compartilhadas
# iwpriv athX authmode 3
Usa o 802.11x
Impedindo que os clientes se enxerguem:
# iwpriv ath0 ap_bridge 0
(para permitir o parâmetro é 1)
Melhorando a performance de links ponto-a-ponto e de uma rede sem fio infra-estruturada.
Em links dedicados ponto a ponto e em access points é completamente desnecessária a varredura de fundo empregada para a identificação das redes sem fio disponíveis, podemos melhorar e muito a performance desabilitando esta funcionalidade. O comando é:
# iwpriv ath0 bgscan 0
Considerações finais
Os recursos dos chipsets Atheros e do drivers Madwifi são muitos, que não seria possível descrevê-los todos nestas poucas linhas, portanto sugiro que pesquisem no wiki existente no site do projeto, este artigo já atinge seu objetivo para quem precisa de um AP possante aliado aos recursos de um servidor. O que proporciona um enorme ganho de performance, e economia de banda para provedores de todos os portes proporcionando, inclusive a segurança necessária que os APs tradicionais não possuem.
Fontes de consulta:
- Créditos ao meu amigo Carlos Affonso Henriques.
Gostou deste artigo? Então assine nosso Feed ou receba os artigos por email.Se este site foi útil para você, considere fazer uma doação |
Seja o primeiro a comentar
Postar um comentário
Muito obrigado pelo comentário.