GDH Press: Blog » Configurando redes wireless ad-hoc, no Linux
 
RSS

Configurando redes wireless ad-hoc, no Linux

Publicado em 13/12/2008 – 07:35
por Carlos Morimoto

Continuando as dicas do post anterior, vamos agora às dicas para configurar redes wireless ad-hoc no Linux.

A maior parte dos utilitários de configuração de redes wireless no Linux suportam também o uso de redes ad-hoc. Ao usar o Ubuntu, Kubuntu ou outra distribuição que utilize o networkmanager, por exemplo, a rede ad-hoc aparece na lista de redes disponíveis e você pode se conectar diretamente depois de fornecer a passphrase. Ele suporta inclusive o uso do WPA-None (do Windows XP), ou do WPA2 suportado no Vista. A dica é que você precisa indicar corretamente o tipo de chave usada (ele não detecta sozinho), caso contrário ele não consegue se conectar:

É possível também criar uma nova rede ad-hoc usando a opção "Criar nova rede sem fio" na janela de seleção de rede, indicando o SSID, o sistema de encriptação e a passphrase desejados:

Como pode ver no screenshot, é possível usar o WPA-Pessoal (WPA-PSK) como sistema de encriptação. Entretanto, ao usar essa opção, o PC passa a atuar de forma similar a um ponto de acesso, trocando a chave de encriptação periodicamente e distribuindo as novas chaves aos demais PCs. Com isso, a rede ad-hoc deixa de ser uma rede não-hierárquica e pára de funcionar caso o PC responsável seja desligado.

No Mandriva você pode utilizar o wizard disponível no "Mandriva Control Center > Rede & Internet > Configurar uma nova interface de rede > Wireless". Na tela em que ele mostra a lista das redes disponíveis, use a opção "Não listada -- editar manualmente". Na tela seguinte, escolha a opção "Ad-hoc" e indique o SSID da rede e a chave de encriptação. Com isso você cria uma nova rede ad-hoc em vez de se conectar a uma rede existente.

É possível também configurar a rede em modo ad-hoc via linha de comando. Comece logando-se como root e rode o comando "cat /proc/net/wireless" para verificar como o sistema detectou sua placa wireless (no exemplo ela é a "eth1"):

# cat /proc/net/wireless

Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 20
eth1: 0000 98. -25. -85. 0 104 0 0 75 0

Comece ativando a placa usando o comando "ifconfig $placa up", seguido do comando do iwconfig que coloca a placa em modo ad-hoc, como em:

# ifconfig eth1 up
# iwconfig eth1 mode Ad-Hoc

O próximo passo é definir o SSID da rede, dessa vez usando o parâmetro "essid" do iwconfig, como em:

# iwconfig eth1 essid gdh

Falta agora definir a chave de encriptação. Ao usar uma chave WEP contendo caracteres ASCII, use o parâmetro "key restricted s:", seguido pela chave, como em:

# iwconfig eth1 key restricted s:minhachave123

Se for usada uma chave contendo caracteres em hexa, remova o "s:", especificando a chave diretamente, como em:

# iwconfig eth1 key restricted 1234567890

Com isso a rede ad-hoc está configurada. Falta apenas ajustar os endereços. Para configurar a rede via DHCP, use:

# dhclient eth1

Para definir o endereço e a máscara manualmente, use:

# ifconfig eth1 10.0.0.1 netmask 255.0.0.0 up
(a faixa de endereços usada na rede ad-hoc deve ser diferente da usada na rede cabeada)

Aqui vai a lista dos comandos para referência, com os campos que devem ser alterados em negrito:

ifconfig eth1 up
iwconfig eth1 mode Ad-Hoc
iwconfig eth1 essid gdh
iwconfig eth1 key restricted s:minhachave123
ifconfig eth1 10.0.0.1 netmask 255.0.0.0 up

Estes mesmos comandos podem ser usados tanto para criar uma nova rede ad-hoc quanto para conectar máquinas Linux a uma rede já existente. Como a rede ad-hoc usa um sistema ponto a ponto, você precisa apenas fazer a mesma configuração em todos os micros. Eles são comandos genéricos, funcionam em todas as placas, sem depender de nenhum utilitário adicional.

A exceção fica por conta das placas Atheros, que utilizam o driver madwifi (onde a placa de rede é vista pelo sistema como "ath0"). Nelas (apenas nelas), antes de executar os comandos, você deve rodar os três comandos abaixo para colocar a rede em modo ad-hoc. Sem eles, a placa continua funcionando em modo infra-estrutura, e a rede ad-hoc não funciona:

# ifconfig ath0 down
# wlanconfig ath0 destroy
# wlanconfig ath0 create wlandev wifi0 wlanmode adhoc

A lista completa dos comandos ao usar uma placa Atheros seria:

ifconfig ath0 down
wlanconfig ath0 destroy
wlanconfig ath0 create wlandev wifi0 wlanmode adhoc
ifconfig ath0 up
iwconfig ath0 mode Ad-Hoc
iwconfig ath0 essid gdh
iwconfig ath0 key restricted s:minhachave123
ifconfig ath0 10.0.0.1 netmask 255.0.0.0 up

Continuando, caso o micro Linux tenha duas interfaces de rede, você pode compartilhar a conexão com os micros da rede ad-hoc usando os três comandos abaixo. Note que o "eth0" é a interface da rede cabeada (ou a interface onde está a conexão) e não a placa wireless:

# modprobe iptable_nat
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

O terceiro comando diz que quando um dos PCs da rede ad-hoc tentar acessar a web, os pacotes devem ser encaminhados para a placa eth0, que no exemplo é a interface da rede local. Como no exemplo não instalamos um servidor DHCP, é necessário configurar manualmente os endereços dos PCs da rede ad-hoc, configurando-os para usar o micro Linux como gateway e os endereços DNS do provedo.

É possível também configurar o PC Linux para atuar como um bridge entre a rede ad-hoc e a rede local, assim como fizemos no Windows no tópico anterior. Nesse caso, precisaremos do pacote "bridge-utils", que pode ser instalado usando o gerenciador de pacotes, como em:

# apt-get install bridge-utils

O pacote contém o utilitário "brctl", que é usado para ativar o bridge, criando uma nova interface que agrupa a interface da rede local e a da rede ad-hoc. A configuração não é tão simples quanto poderia ser, mas também está longe de ser difícil.

Comece limpando os endereços das duas placas (wireless e local). No exemplo, a eth0 é a interface da rede local e a eth1 (uma Intel ipw2200) é a placa wireless. As duas devem ficar ativas, mas usarão o endereço "0.0.0.0":

# ifconfig eth0 0.0.0.0 up
# ifconfig eth1 0.0.0.0 up

Em seguida, crie a interface bridge usando o comando "brctl addbr". O segundo comando soluciona um problema comum com o uso do DHCP através do bridge:

# brctl addbr br0
# brctl setfd br0 0

Com a interface br0 criada, use o comando "brctl addif" para adicionar as duas interfaces no bridge. A lógica é a mesma de quando você seleciona as duas interfaces e ativa a opção "Conexões de ponte" no Windows:

# brctl addif br0 eth0
# brctl addif br0 eth1

Com isso a configuração está pronta. Falta apenas ativar a interface br0 para ativar o bridge. É normal que ele demore alguns minutos antes de começar a transmitir os pacotes, pois é necessário que ele construa a tabela com os endereços MAC dos micros conectados a cada uma das interfaces, necessária para que ele possa fazer seu trabalho.

Note que no comando é necessário especificar também o endereço IP e a máscara que serão usados pela interface. É a partir dele que o PC Linux passará a ser acessado em ambas as redes:

# ifconfig br0 192.168.1.23 netmask 255.255.255.0 broadcast 192.168.1.255 up

Para que você possa navegar e acessar a rede no PC Linux, é necessário definir o gateway da rede. Se o endereço do gateway for "192.168.1.1", o comando seria:

# route add default gw 192.168.1.1 dev br0

Revisando, a lista completa dos comandos necessários para criar o bridge, já configurando a interface para que o PC possa continuar acessando a rede, seria:

ifconfig eth0 0.0.0.0 up
ifconfig eth1 0.0.0.0 up
brctl addbr br0
brctl setfd br0 0
brctl addif br0 eth0
brctl addif br0 eth1
ifconfig br0 192.168.1.23 netmask 255.255.255.0 broadcast 192.168.1.255 up
route add default gw 192.168.1.1 dev br0

Como de praxe, lembre-se de substituir os parâmetros em negrito pelas interfaces e os endereços que se aplicam ao seu caso. No último comando, o "192.168.1.1" é o endereço do gateway da rede. A interface do bridge pode receber outro nome (escolhido por você), o "br0" é apenas um exemplo.

Se quiser desativar o bridge mais tarde, use os comandos:

# ifconfig br0 down
# brctl delbr br0

É necessário também reconfigurar as duas interfaces de rede, já que eles foram configuradas com o endereço "0.0.0.0" durante a ativação do bridge.

Infelizmente, muitos dos drivers para placas wireless atualmente disponíveis no Linux (início de 2008) não oferecem suporte ao modo promíscuo (onde a placa escuta todas as transmissões da rede, inclusive as destinadas a outros endereços MAC), o que faz com que o bridge não funcione. O PC Linux com as duas placas de rede consegue enxergar simultaneamente os PCs dos dois segmentos de rede, mas os PCs de um segmento não conseguem enxergar os outros, já que os frames não são encaminhados.

Nesses casos, não existe muito o que fazer, mas você ainda pode utilizar a dica anterior, usando os comandos para compartilhar a conexão, permitindo, assim, que os micros da rede ad-hoc tenham acesso à web.

» Mais posts

  1. 15 respostas para “Configurando redes wireless ad-hoc, no Linux”

  2. julio leme em 14 dez, 2008

    Carlos seria possível compartilhar a internet através de
    2 usb bluetooth(dongle usb) um em cada micro?
    Utilizo o K7 e Kng e se possivel, gostaria de um tutorial de como configurá-lo.

  3. Carlos Morimoto em 14 dez, 2008

    Você pode fazer usando o pand, tem um exemplo de uso aqui: http://www.gdhpress.com.br/blog/wmmodem/
    O princípio para fazer uma rede local entre dois micros seria o mesmo.
    Provavelmente não vai funcionar no K7 devido às versões antigas dos pacotes. Você precisaria atualizar para o Lenny ou mudar para outra distro.

  4. julio leme em 14 dez, 2008

    Obrigado. Vou tentar no Kng, visto que tenho os dois em dual boot.

  5. Luciano em 16 dez, 2008

    Caríssimo Morimoto,

    Recebo internet por uma antena externa que tenho em casa. A antena se liga ao meu computador por um cabo coaxial. Meu problema é que quando eu quero ligar o notebook, eu tenho que ligar o computador (o computador tem duas placas de rede sem fio, uma onde está ligada a antena pelo cabo coaxial e uma para se comunicar com o notebook). Gostaria de pegar o sinal da antena e irradia-lo dentro de casa, mas todos os roteadores wifi que conheço não atendem minha necessidade, já que geralmente eles só permitem uma antena e irradiariam de volta pela antena externa. O que eu poderia fazer?

  6. Carlos Morimoto em 16 dez, 2008

    O mais fácil é mesmo usar um PC para conectar à rede do provedor e compartilhar a conexão com os PCs da cada. Uma opção seria, em vez de usar duas placas wireless no roteador, substituir a segunda por uma placa cabeada e ligá-la a um ponto de acesso, que ficará encarregado de distribuir o sinal dentro de casa.

  7. Luciano em 16 dez, 2008

    Duas idéias que encontrei foram:
    - Colocar um divisor no cabo da antena e ligar uma antena numa ponta e um repetidor ou amplificador de sinal na outra. Nesse caso, eu teria que encontrar alguma modelo que não fosse extremamente caro, mas ainda não encontrei.
    - Ligar outra antena no cabo, oq seria um repetidor passivo. O problema disso é que a atenuação do sinal pode chegar em 50%.

    O que vc acha?

  8. darkbex em 16 dez, 2008

    O Fedora 10 esta com um ótimo suporte para plcas wireless (inclusive as usb), no meu caso eu espetei uma wusb54lan (linksys)e ele reconheceu e instalou automaticamente.
    O suporte a configuração esta muito fácil também, no icone do network manager é só clicar e em criar rede sem fio ou se conectar em alguma rede que esteja ao alcance.

  9. Carlos Morimoto em 16 dez, 2008

    Nesse caso acredito que o repetidor passivo não vai funcionar, pois o sinal que chega através do cabo já deve estar perto do mínimo (caso contrário provavelmente não estariam usando uma antena externa em primeiro lugar).
    Os repetidores são dispositivos especializados e por isso geralmente muito caros, diferente do roteador, onde você pode simplesmente utilizar um PC antigo.

  10. Fabiano em 27 dez, 2008

    Excelente post. Obrigado pelas instruções.

  11. Luciano em 27 dez, 2008

    Pesquisando, encontrei o Edimax BR-6216mg MIMO XR
    http://www.bjorn3d.com/read.php?cID=1081

    Pelos comentários que encontrei no ML, ele permite oq quero. Vc já testou este modelo?
    Obrigado pela ajuda.

  12. Thiago em 12 jan, 2009

    Gostaria de um tutorial para configurar rede Ad-hoc no Fedora 8.

  13. Douglas em 14 abr, 2009

    Caro Carlos,

    não consigo fazer funcionar a rede ad-hoc usando um desktop que está conectado a rede através de uma conexão adsl que chega a placa eth0. Modifiquei nos comandos apenas substituindo eth0 por ppp0. E nada. Entretanto, no gnome-manager aparece a rede (no desktop) e aparece no outro (notebook). Mas não conecta. O que estará errado? Quando eu faço uma investigação da rede ela dá

    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

    Espero está errando, e muito, em alguma coisa.

    Douglas

  14. Frederico Martini em 14 mai, 2009

    Caro Morimoto:
    Estou com problemão aki em casa para dividir a net!!
    Assim ohh:
    Estou utilizando o ubuntu 9.04 sou novato no linux e minha net chega através de antena wirelles com ips gateways dns's tudo fixo e eu queria dividir para outros computadores em minha rede particular, no windows era muito fácil pois fazia a ponte de rede e configurava certinho, porém aki no linux ja estou a quaze 2 meses e nada, DA UMA LUZZZZZZZ !! HEHE
    abraçoo|!

  15. sergio em 19 nov, 2009

    esse livro pode ser enviado pelo correio e pagar quando receber.não gosto de divulgar informações pela rede tipo n de cartão.será que não tem um tutorial que ensine a configura passo a passo uma rede sem fio pelo ubuntu 9.04 ou outras distribuições linux e comparar com configurações de rede no windows do tipo:no windows você faz assim, mas no linux é assim.

  16. sergio em 19 nov, 2009

    Já tentei devárias maneiras mas não deram certo ou as informações que li não foram bem compreendidas.
    Quando instalei o ubuntu 9.04 tinha dois objetivos
    1-instalar internet
    2-instalar programas off line do tipo playes de videos


Comente: