Utilizar um placa PCI como Access Point no Debian 4

Este artigo tem por objetivo ajudar na montagem de um servidor de wireless, transformando uma placa PCI em um Access Point, utilizando o sistema operacional Debian 4.

[ Hits: 31.321 ]

Por: Bruno de la Mata Bani Arantes em 20/07/2008


Especificações e configurações



Especificações:
  • Placa PCI Dlink DWL-G520
  • Sistema operacional Debian 4

Nota: Levando em consideração que o Debian já esteja instalado e que tenha uma placa de rede e uma placa wireless PCI Dlink DWL-G520 em seu computador.

Configurações:

1. Primeiro devemos instalar algumas dependências, executando os seguintes comandos como super usuário (root):

# apt-get install kernel-headers-`uname -r` kernel-sources build-essentials bridge-utils dhcp3-client dhcp3-common dhcp3-server wireless-tools ifupdown madwifi-tools madwifi-source

2. Agora execute o seguinte comando para verificar se o placa de wireless está OK:

# modprobe ath_pci
# iwconfig


Nota: Verifique se as configurações da placa de wireless levantaram, e se isso aconteceu quer dizer que está OK.

3. Vamos agora configurar a placa de rede wireless para ela se tornar um Access Point.

a. Precisamos resetar as configurações da placa:

# wlanconfig ath0 destroy
# wlanconfig ath0 create wlandev wifi0 wlanmode AP


b. Precisamos setar o modo de operação:

# iwpriv ath0 mode 1 wds 1 turbo 0 dtim_period 2 bintval 25

Nota: Outros modos de operação, lembrando que depende das especificações da placa PCI.

Modo     Código  Descrição
802.11a  1       5.8 GHz 108 Mb/s
802.11b  2       2.4 GHz 11 Mb/s
802.11g  3       2.4 GHz 54 Mb/s

c. Configurando o SSID, velocidade de operação e potência de saída:

# iwconfig ath0 essid "nome desejado do SSID"
# iwconfig ath0 channel 1
# iwconfig ath0 rate "11M"
# iwconfig ath0 txpower auto


d. Configurando uma bridge para o PC funcionar como AP:

Colocando a interface eth0 em modo promíscuo:

# ip link set dev eth0 promisc on

e. Faça o mesmo com a interface wlan:

# ip link set dev ath0 promisc on

f. Levantando as interfaces ethernet e wlan:

# ip link set dev eth0 up
# ip link set dev ath0 up


g. Criando a bridge:

# brctl addbr br0

h. Inserindo as interfaces ethernet e wlan na bridge:

# brctl addif br0 eth0
# brctl addif br0 ath0


i. Agora definimos um endereço IP para a bridge:

# ip addr add 192.168.0.1/21 brd + dev br0

j. Acrescentamos a bridge na tabela de roteamento default:

# ip route add default via 192.168.0.1 dev br0

k. Precisamos habilitar o IP forwarding entre as interfaces de rede da máquina.

# echo 1 > /proc/sys/net/ipv4/ip_forward

Nota: Com isso temos nossa placa PCI funcionando com um Access Point, precisamos agora de implementar alguma segurança:

    Próxima página

Páginas do artigo
   1. Especificações e configurações
   2. Segurança
   3. Configuração do DHCP
Outros artigos deste autor

Samba + LDAP + Squid no Debian

Leitura recomendada

Fontes com filtros LCD no Arch Linux

Instalação e configuração da impressora HP 3745 (e similares)

Instalação da impressora HP LaserJet M1005 no Ubuntu 7.10

Configurando o CACIC (parte 1) - Atualizado

Nagios - Configurando níveis de acesso e autenticação centralizada no Active Directory

  
Comentários
[1] Comentário enviado por marcelogpl em 21/07/2008 - 09:12h

Bruno

muito bom o artigo, principalmente o fechamento agradecendo a quem nos oferece todo o conhecimento.

Uma dúvida este AP que vc fez, pode funcionar como REPETIDOR? E qual seria a configuração?

[2] Comentário enviado por douglasdiasn em 21/07/2008 - 11:48h

Bom artigo, estava atras de algo assim para implementar na minha empresa

att

Douglas Noronha

[3] Comentário enviado por mvalho em 21/07/2008 - 12:38h

Muito bom o artigo, acho interessante isso, por que se tivermos um maquina parada em casa ou na empresa da pra por uma placa pci e transformá-lo num ap :D, assim que possivel vou fazer isso! vai pros favoritos!

valeu Bruno, parabéns!

[4] Comentário enviado por eloi em 21/07/2008 - 13:56h

Parabéns pelo Artigo ;)

[5] Comentário enviado por clediomir em 21/07/2008 - 23:10h

sabe me dizer se funciona com adaptadores USB?

[6] Comentário enviado por fabiomattes2011 em 18/09/2008 - 09:17h

Cara estive atrás disso um já faz um tempinho, hehehe ta no favoritos....

[7] Comentário enviado por fabiomattes2011 em 03/10/2008 - 11:35h

Só uma duvida:

Se eu reiniciar a maquina, terei que fazer todo esse processo novamente, posso implementalo em um script caso ela perca a cofiguração?

[8] Comentário enviado por carlosalberto4ti em 16/03/2009 - 18:12h

Muito bom aqui funcionou muito bem , mas foi uma dúvida se puderem responder :

aqui em casa é um pc e um note asus eee 701 .

eu tenho um asus eee , fiz os procedimentos e funcionou , agora só não navego no note asus mas enxergo minha rede wireless no outro pc normalmente , tem como mudar isso para o note navegar também ?

[9] Comentário enviado por networker em 23/03/2009 - 11:57h

Muito bom o artigo, mas daria para complementar informando as ferramentas de LOG, para podermos visualisar usuários que estão autenticados, usuários que estão errando a chave, etc?

[10] Comentário enviado por paulohahn em 23/05/2010 - 17:45h

Bom fiz tudo que esta aqui, e li muito mais em outros lugares..... estou dias nisto
Criei este script sh pra facilitar, esta com alguns "echo" pra facilitar o diagnóstico, e marquei o ponto onde inicia a falha:

#!/bin/bash
#
# Script Por Paulo Hahn, livre para ser usado e alterado, não precisa citar eu
# Um breve script para configurar um linux debian como ponto de acesso de rede sem-fio/wireless

# Programas Requeridos
IPT=`which iptables`;
WLC=`which wlanconfig`;
IWP=`which iwpriv`;
IWC=`which iwconfig`;

# Interface da rede sem-fio
IF_SEMFIO="ath0";

# Porta Física da Placa sem-fio
WLHD="wifi0";

# Interface da rede Com Acesso à Internet
IF_EXTERNA="eth0";

# Definição da rede sem-fio
RSF_ESSID="hahn";
RSF_RANGE="10.1.1.0/24"
RSF_GATEW="10.1.1.1";
RSF_CHANN="1";
RSF_RATE="54M";
RSF_TXPOW="auto";
RSF_SENHAWEP="012345abcdef012345abcdef26";

wln_start()
{
#
# Configurando Interface Sem Fio
#
# Zera a interface
$WLC $IF_SEMFIO destroy
# Recria no modo master/AP
$WLC $IF_SEMFIO create wlandev $WLHD wlanmode AP
# Configurando alguns parametros opcionais especificos do driver
$IWP $IF_SEMFIO mode 1 wds 1 turbo 0 dtim_period 2 bintval 25
# O nome da rede sem-fio
$IWC $IF_SEMFIO essid $RSF_ESSID
# Canal em que irá operar
$IWC $IF_SEMFIO channel $RSF_CHANN
# Velocidade
$IWC $IF_SEMFIO rate $RSF_RATE
# Potência de Transmissão
$IWC $IF_SEMFIO txpower $RSF_TXPOW

#
# Implementando a segurança
#
$IWC $IF_SEMFIO key restricted $RSF_SENHAWEP

#
# Criando a ponte entre a as interfaces
#

echo "Colocando as interfaces em modo promiscuo.."
ip link set dev $IF_EXTERNA down
ip link set dev $IF_SEMFIO down
ip link set $IF_EXTERNA promisc on
ip link set $IF_SEMFIO promisc on
ip link set dev $IF_EXTERNA up
ip link set dev $IF_SEMFIO up
ifconfig

ping $RSF_GATEW -c 1 -W 1
# Esse ping funcionou

echo "Criando a ponte br0"
brctl addbr br0
brctl addif br0 $IF_EXTERNA
brctl addif br0 $IF_SEMFIO

ping $RSF_GATEW -c 1 -W 1
# Esse ping NÃO MAIS
# Esta claro que a coisa toda para de funcionar por causa da bridge.... continua no fim

echo "Bota o endereço nela"
ip addr add $RSF_RANGE brd + dev br0
ping $RSF_GATEW -c 1 -W 1
echo "Gateway.."
ip route add default via $RSF_GATEW dev br0
ping $RSF_GATEW -c 1 -W 1
echo "Liga a passagem para frente de pacotes"
echo 1 > /proc/sys/net/ipv4/ip_forward

ping $RSF_GATEW -c 1 -W 1
echo "Levanta a ponte"
ifconfig br0 up
}

wln_stop(){
echo 0 > /proc/sys/net/ipv4/ip_forward
ip addr del $RSF_RANGE dev br0
ifconfig br0 down
brctl delbr br0
ip link set dev $IF_EXTERNA down
ip link set dev $IF_SEMFIO down
ip link set dev $IF_EXTERNA promisc off
ip link set dev $IF_SEMFIO promisc off
ip link set dev $IF_EXTERNA up
ip link set dev $IF_SEMFIO up
}

help_ajuda(){
echo
echo "$0 (start | stop)"
echo
echo "start - Ativa o Ponto de Acesso Sem-Fio"
echo "stop - Desativa o Ponto de Acesso Sem-Fio"
echo "restart - Reinicia o Ponto de Acesso Sem-Fio"
}
case $1 in

start)
wln_start;
;;

stop)
wln_stop;
;;

restart)
wln_stop;
wln_start;
;;

*)
help_ajuda;
exit;
;;

esac

Após a execução do script os micros conectados ao AP navegam tranquilamente, o problema é que o Gateway fica inacessível para o Linux Access Point, isto é, o micro que ta compartilhando a internet fica sem ela!

Se alguém tiver uma idéia... sei que estou quase lá! É sobre a bendita bridge.

[11] Comentário enviado por paulohahn em 25/05/2010 - 01:12h

Encontrei o problema!
Era a rota padrão o tal do "ip route add default via $RSF_GATEW dev br0"

Depois da ponte estar rodando eu dava um "netstat -r" e a eth0 aparecia como rota padrão, ora, quando a interface entra na bridge ela fica travada na bridge a gente tem de usar a própria bridge como placa, foi só colocar um comando pra tirar ela de lá, no meu caso fiz da seguinte forma:

route add default gw $RSF_GATEW dev br0
route del default gw $RSF_GATEW dev $IF_EXTERNA

Neste caso já estava utilizando "route" ao invés de "ip".

Agora que estou mais por dentro quero destrinchar como colocar todas as configurações já durante o boot, antes mesmo de logar, para ficar como um servidor.
Depois que o servidor wireless estiver carregando as configurações automaticamente já com WPA, vou para o gerenciamento de usuários.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts