Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

terça-feira, 30 de agosto de 2011

DD-WRT e OpenWRT: Firmware alternativo


Introdução

Diferente de muitos dos primeiros roteadores e pontos de acesso wireless (como o lendário Linksys WRT54G) que eram baseados em Linux, a grande maioria dos APs e roteadores atuais são baseados em sistemas proprietários como o VxWorks, desenvolvidos com o objetivo de cortar custos, permitindo que os fabricantes reduzam o volume de memória RAM e Flash e possam utilizar SoCs mais baratos.
Um bom exemplo dessa tendência é o que aconteceu com o próprio Linksys WRT54G. A primeira versão do roteador era baseada em um SoC Broadcom BCM4702 de 125 MHz, que foi atualizado para o BCM4712 operando a 200 MHz na versão 2.0. A sequência de upgrades continuou até o WRT54G v4.0, que manteve os 16 MB de memória RAM e 4 MB de memória Flash e rodava Linux, mas a partir do WRT54G v5.0 a Linksys estragou a linha, reduzindo para 8 MB de RAM e meros 2 MB de Flash e passando a usar o VxWorks. Não apenas estes modelos recentes eram mais fracos em relação ao hardware, mas também rodavam um sistema operacional menos robusto e ofereciam um desempenho inferior ao lidar com grandes volumes de tráfego. A versão com Linux foi posteriormente relançada na forma do WRT54GL, mas ele era consideravelmente mais caro devido ao pequeno volume de produção.
O lendário WRT54G
O lendário WRT54G
Ao mesmo tempo, surgiu uma grande segmentação dentro das linhas de produtos, com os aparelhos oferecendo apenas as funções relacionadas às funções às quais são destinados, muito embora o hardware suporte muito mais. Com isso, muitas vezes produtos dentro da mesma linha são diferenciados apenas pelo software, com o fabricante ativando ou desativando funções específicas dentro do firmware de acordo com o modelo.
É possível extrair bem mais funções do seu roteador usando um firmware alternativo, como oDD-WRT (www.dd-wrt.com), OpenWRT (http://www.openwrt.org/) ou o Tomato(www.polarcloud.com/tomato), que liberam este potencial oculto, fazendo com que mesmo modelos baratos e/ou antigos possam oferecer muitas funções encontradas apenas em modelos enterprise, como QoS e VPNs. Um bom exemplo é este velho Netgear WG602-v3:
Originalmente ele é um ponto de acesso bastante limitado, que se limita a oferecer as opções básicas e um suporte bem limitado à funções de bridge e repetidor baseadas no WDS, que funcionam apenas em conjunto com alguns modelos específicos da própria Netgear. Se você quiser usá-lo como um repetidor de um ponto de acesso de outra marca, ativar o QoS, firewall ou mesmo usar um mero servidor DHCP, vai ficar apenas na vontade. Como se não bastasse, o firmware possui um limite de 20 conexões simultâneas, uma pesada limitação até mesmo para algumas redes domésticas.
Instalando o DD-WRT, por outro lado, ele passa a oferecer funções muito mais completas, oferecendo desde um servidor DHCP com possibilidade de definir endereços estáticos para os clientes, até funções avançadas de controle de banda. Ele passa também a poder ser configurado como um repetidor, bridge ou cliente wireless universal, capaz de conversar com produtos de diferentes fabricantes.
Tanto o DD-WRT quanto o OpenWRT são sistemas Linux descendentes do firmware open-source do Netgear WRT54G, que foi liberado em 2003 sob a GPL (o OpenWRT surgiu quase que imediatamente depois que o código foi liberado, enquanto o DD-WRT surgiu como um fork do Sveasoft, um firmware comercial). Em ambos os casos, o objetivo inicial era oferecer suporte apenas aos derivados do WRT54G, mas com o tempo eles passaram a oferecer suporte a um número cada vez maior de modelos e a incluírem nova funções.
O Tomato por sua vez é um firmware mais simples, com foco na facilidade de uso. Ele também oferece suporte a QoS, controle de acesso e WDS, além de oferecer gráficos de uso de banda, permitir aumentar o número de conexões simultâneas (útil ao baixar torrents) e assim por diante. A grande limitação é que ele é compatível apenas com um pequeno número de modelos baseados em chipsets Broadcom, como o as variantes do WRT54G (G, GL, GS, TM, com exceção dos G e GS de fabricação recente, que possuem apenas 2 MB de Flash), Buffalo WHR-G54 e o Asus WL500GE, o que faz com que o uso seja muito mais restrito.
Apesar das origens em comum, o DD-WRT e o OpenWRT se diferenciam em diversos aspectos. De uma forma geral, o DD-WRT é mais amigável, com uma interface web mais consistente, uma base de dispositivos suportados fácil de pesquisar e um bom suporte através dos fóruns. O OpenWRT é desenvolvido sob uma filosofia mais "power-user", com uma ênfase maior na configuração através da linha de comando e melhor acesso aos arquivos de configuração e às entranhas do sistema, complementando as funções disponíveis na interface web. Ambos suportam a instalação de pacotes adicionais, mas o OpenWRT leva vantagem em relação à variedade de pacotes disponíveis. Por outro lado, o DD-WRT (na versão "micro") oferece compatibilidade com muitos APs low-end, com apenas 2 MB de memória Flash que são incompatíveis com o OpenWRT.

Instalando

Em ambos os casos, existem basicamente três formas de instalar o firmware: através da própria interface de administração do roteador, onde você simplesmente grava a imagem do DD-WRT ou OpenWRT, no lugar do firmware do fabricante (em alguns casos a atualização é feita em duas etapas, com uma imagem preparatória sendo gravada primeiro), usando algum utilitário do fabricante para gravar a imagem, ou via TFTP que é o método mais robusto e menos propenso a falhas.
Em ambos os casos, é recomendável fazer a atualização via cabo, com um PC conectado diretamente à porta LAN do roteador usando um cabo cross-over. É fortemente recomendável também que você faça um hard-reset no roteador antes de começar, restaurando as configurações de fábrica.
O DD-WRT é uma boa opção para começar, já que a página inclui um bom localizador de dispositivos suportados, com as instruções para cada um. De uma forma geral, aparelhos baseados em SoCs Broadcom são os melhor suportados, mas o suporte a modelos baseados em SoCs de outros fabricantes vem melhorando a cada nova versão.
Para começar, basta acessar o http://www.dd-wrt.com/site/support/router-database e fazer uma busca pelos primeiros 3 ou 4 caracteres do modelo. Ele retorna a lista com as possibilidades e as instruções de instalação para cada um.
O WG602-v3 por exemplo possui apenas 8 MB de RAM e 2 MB de Flash, o que faz com que ele seja compatível apenas com a versão "micro" do DD-WRT. Apesar do nome, esta é na verdade uma versão bastante completa, carecendo apenas do suporte a VPNs, SSH, Asterisk, gerenciamento de hotspots e algumas poucas outras funções. A versão "Micro_OLSRD" inclui suporte ao OLSR, um protocolo para a criação de redes mesh (similar às usadas com o OLPC), que podem ser uma boa opção para criar redes comunitárias cobrindo grandes espaços. Para alguns modelos é necessário obter uma ativação, que é a parte comercial do projeto. Elas custam US$ 19 para dez usuários, mas é possível obter uma ativação gratuita para uso pessoal.
O processo recomendado de gravação no caso do WG602-v3 é a gravação via TFTP, que é na realidade a mais simples. Comece dando um hard-reset no AP, pressionando o reset por 30 segundos e, sem largá-lo, desconectando o cabo de energia (os mais paranoicos podem repetir isso 3 vezes, o que é chamado de "30/30/30 reset" e garante sem sombra de dúvidas que ele é realizado perfeitamente). Quando ele voltar à vida, verifique se ele voltou mesmo às configurações default (ele usa o IP 196.168.0.227, user "admin" senha "password") e faça a gravação usando o tftp2.exe disponível no http://dd-wrt.com/wiki/index.php/TFTP_flash.
O TFTP é um protocolo simples de transferência de arquivos que é tipicamente usado em APs e roteadores com pouca memória para permitir o carregamento de arquivos, envio de logs e assim por diante. Antes de ser configurado o AP até mesmo aceita a gravação de firmware através dele, bastando com isso usar um cliente de TFTP em qualquer um dos PCs da rede.
No Windows XP o cliente TFTP vem ativado por default, enquanto no Windows 7 e Vista você precisa ativá-lo no "Painel de controle > Programas e recursos > Recursos do Windows" e marque o "Cliente TFTP". Feito isso, abra o tftp2.exe, forneça o endereço IP do modem recém resetado (deixe a senha em branco, indique o arquivo do firmware , coloque o número de tentativas em 50 (ou outro valor alto) e clique no "Upgrade":
No Linux você pode utilizar o comando "tftp", que é instalado através do pacote de mesmo nome. Para usá-lo, use o comando "tftp endereço_IP" e use os comandos "binary" (transmissão binária), "rexmt 1" (tentar de novo a cada 1 segundo) e timeout 60 (por 60 segundos), seguido do comando "put" e o nome do arquivo a transferir, como em:
$ tftp 192.168.0.227
> binary
> rexmt 1
> timeout 60
> put dd-wrt.v24_micro_generic.bin
Em ambos os casos, o cliente ficará em loop tentado fazer a gravação. Neste momento, reinicie o modem e ao acordar ele pegará uma das tentativas e a gravação começará. Se não der certo pela primeira vez, tente novamente: existe uma "janela" de atualização, que fica ativa apenas por alguns segundos cada vez que o modem é iniciado.
Outra forma de fazer isso é abrir uma janela do terminal e usar o comando "ping -t 192.168.0.227 -t" (ou apenas "ping 192.168.0.227") no Linux, o que fará com que o ping fique rodando continuamente. Ao reiniciar o AP, ele vai dar um "Destination Host Unreachable" e em seguida voltar a responder. No exato momento em que você volta a receber respostas, clique no "Upgrade" e você pegará a janela de atualização.
A atualização em si é rápida, mas é bom deixar o AP quieto por uns 10 minutos por garantia. Depois de concluída, reinicie o AP novamente e ele ressuscitará com o novo cérebro. O IP default do DD-WRT é 192.168.1.1, user "root, password "admin". Basca reconfigurar o PC para usar um endereço dentro da mesma faixa e começar a se familiarizar com as opções.
Para outros modems, o processo pode ser um pouco diferente, como no caso do Asus WL500G Premium V2. Ele é um roteador high-end, que possui 32 MB de RAM e 8 MB de Flash, abrindo diversas possibilidades em relação às versões do DD-WRT. Em vez de ficar restrito à versão micro, você pode ir direto para a versão Mega, que inclui todos os recursos suportados, além de, claro poder usar alguma das versões menores caso assim deseje:
O processo de instalação no WL500G é também um pouco diferente. Em vez de gravar diretamente o firmware via TFTP (o que também pode ser feito, mas é mais problemático nesse modelo) o procedimento recomendável é usar uma ferramenta da própria Asus, o "Asus Recovery Tool", para fazer a gravação, gravando primeiro uma imagem de preparação, a "dd-wrt.v24_mini_asus.trx" e gravar a imagem principal a partir dela.

Mais dicas

O DD-WRT, bem como o OpenWRT não estão restritos a roteadores antigos. Eles são também uma boa opção para estender os recursos de roteadores 802.11n recentes, principalmente para os casos em que o sistema oferecido pelo fabricante não oferece alguma opção importante para você.
Uma boa opção é o Netgear WNDR3700, que além de oferecer um hardware bastante poderoso, com um SoC de 680 MHz, 64 MB de RAM, 8 MB de Flash e transmissor wireless dual-band (2.4 e 5 GHz), ele é bem compatível com o DD-WRT:
A instalação é simples, consistindo apenas em gravar uma imagem de preparação e em seguida a imagem do DD-WRT usando a interface web, a partir de um PC conectado ao roteador através de uma das portas LAN.
O principal é sempre dar uma olhada nas instruções do localizador, que fornece as informações disponíveis sobre cada modelo, e fazer uma busca no fórum do projeto caso ele não inclua instruções para o modelo que estiver em mãos. Em caso de problemas, você pode quase sempre regravar a imagem do firmware do fabricante (ou o próprio DD-WRT) via TFTP, seja usando o tftp2.exe ou uma ferramenta do fabricante (como no caso dos modelos da Asus). Similar ao que temos no caso de um PC configurado para dar boot via rede (que depende apenas do BIOS para a função), o sistema de boot via TFTP funciona mesmo que o firmware principal esteja corrompido ou incompleto.
Caso a instalação seja bem-sucedida mas você não consiga se entender com o firmware alternativo, você pode sempre voltar para o firmware original, baixando a versão mais atual a partir do site do fabricante e regravando-a através da própria interface de administração do DD-WRT, no "Administration > Firmware Upgrade".
Concluindo, o DD-WRT possui também uma versão x86, que permite converter PCs com placas de rede compatíveis em roteadores bastante poderosos. Via de regra, roteadores de consumo possuem quantidades muito limitadas de memória e acabam ficando logo sobrecarregados ao receberem muitas requisições simultâneas, mesmo que rodando um sistema mais robusto como no caso do DD-WRT. Um PC por outro lado possui não apenas muito mais memória, mas também mais processamento, o que permite que mesmo um PC com 5 anos de idade ou mais possa substituir um roteador enterprise muito mais caro. Esta versão é fornecida na forma de uma imagem de disco e pode ser instalada rapidamente a partir de uma distribuição Linux live-CD.