Índice das dicas

Configurando redes wireless ad-hoc, no Linux

Por Carlos E. Morimoto em 13 de dezembro de 2008 às 07h35

15

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.

15 comentáriosPor Carlos E. Morimoto. Revisado 23 de março de 2011 às 11h31

Comentários

 
por sergio (anônimo) em 19 de novembro de 2009 às 10h09
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
 
por sergio (anônimo) em 19 de novembro de 2009 às 10h03
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.
 
por Frederico Martini (anônimo) em 14 de maio de 2009 às 01h32
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|!
 
por Douglas (anônimo) em 14 de abril de 2009 às 19h31
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
 
por Thiago (anônimo) em 12 de janeiro de 2009 às 10h28
Gostaria de um tutorial para configurar rede Ad-hoc no Fedora 8.
 
por Luciano (anônimo) em 27 de dezembro de 2008 às 13h23
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.
 
por Fabiano (anônimo) em 27 de dezembro de 2008 às 00h09
Excelente post. Obrigado pelas instruções.
 
por Carlos E. Morimoto em 16 de dezembro de 2008 às 14h04
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.
 
por darkbex (anônimo) em 16 de dezembro de 2008 às 13h52
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.
 
por Luciano (anônimo) em 16 de dezembro de 2008 às 12h52
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?