sábado, 28 de março de 2009

REDE AD-DOC 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.


Fonte