Discuta este tópico no fórum

Se este conteúdo te ajudou, deixe um presente!

terça-feira, 1 de maio de 2012

Ubuntu 12.04 LTS com Suporte para Processadores Antigos (sem PAE)

A Canonical lançou a nova versão semestral do seu famoso sistema operacional Ubuntu. Além disto, esta é uma versão LTS, com suporte estendido de 5 anos. É ideal para aqueles ambientes onde você só quer que o sistema funcione por muito tempo sem você ter trabalho . Indico principalmente para a instalação em computadores velhos, dos pais, da mulher... No meu caso, era exatamente o que eu precisava para o meu antigo EeePC 701. \o/ Acho que ele não vai aguentar mais 5 anos de uso...

Mas pera ai! Olha que interessante: a Canonical resolveu que iria abandonar o suporte aos processadores sem o recurso de PAE. Cuma? Physical Address Extension. É um recurso que permite o endereçamento de mais de 4GB de memória em ambientes 32-bit. Nunca dei muita bola para este recurso pois já havia migrado para o 64-bit um bom tempo antes de chegar no limite da memória do 32-bit. Exceto, claro, pelo EeePC.

Para a minha infelicidade, o EeePC 700 (e de mais alguns modelos 900) possuem o processador Celerom Pentium M de 900 Mhz (mas rodando a 600 Mhz). Bem, como se trata de um processador antigo reaproveitado, ele ainda não teve conhecimento da existência do PAE (e como o EeePC suporta o máximo de 2GB de RAM, realmente não fazia muito sentido). Mas então é adeus ao Ubuntu? Ainda não!

O Ubuntu não quis mais gerar os CDs com suporte a processadores sem PAE, mas ainda compila os kernels para estes processadores. Menos mal. A ideia é permitir uma última chance de atualização para estes processadores mais antigos. A próxima versão, 12.10, já não terá mais qualquer suporte para processadores non-pae. Mas por que não permitir uma instalação nova? Por que não gerar um simples LiveCD a mais?! Para que dificultar a vida dos usuários? É difícil de entender...

Pesquisando um pouco, identifiquei duas possíveis alternativas:
  1. Fazer a instalação pela rede (que ainda possui versão para processadores nonpae)
  2. Instalar a versão anterior do ubuntu (10.10) e realizar um live upgrade (novamente pela rede)
Depois de ter baixado o CD, eu realmente não estava afim de baixar novamente todo o conteúdo durante uma instalação. Ainda mais, nem teria certeza se iria funcionar. Bem, pelo menos, como se trata de um ambiente de Software Livre, nem tudo está perdido. Sempre podemos sujar as mãos.

O Ubuntu possui um tutorial de como modificar um LiveCD. A ideia era realizar o transplante de cérebro: trocar o kernel pae pelo kernel non-pae. Mount pra cá, mkisofs para lá, mais uns ajustes e voilà! Um LiveCD para sistemas antigos.

Editado 2: Atenção, o dropbox bloqueia o tráfego além de 10GB/dia. Então, se retornar um erro de "overtraffic", tente novamente em outro dia ou entre em contato comigo.

Editado 4: Adicionei um link magnet. Porém, sou o único seeder no momento.
Editado 5: Adicionei um link para o Google Drive também, caso o dropbox esteja bloqueado.


http://dl.dropbox.com/u/1286502/ubuntu-12.04-desktop-i386-nonpae.iso
magnet:?xt=urn:btih:KKUJ7U5Z6XH3RECGK77DLCA32OOFVQVO
http://wtrns.fr/3wgMpBgr_Kzj6t
https://docs.google.com/file/d/0B54xzz44RpW6RkVLc3d4WEdpMEU/edit?usp=sharing
MD5SUM 7435d1d1740dcf16fbbba2e746de4de1
SHA1SUM 4fb527b2e2c6a00499677102df36ec466e79c373
SHA256SUM a8e4427889fa6786e4cfe82ad578fcbf833fe66146a180f90abcc5caa6fe6dbb

Só baixar e instalar. Se alguém tiver algum problema, só avisar.

Ainda acho que eu não deveria precisar de todo este trabalho mas, pelo menos, outros podem aproveitar meu o trabalho.

sexta-feira, 30 de março de 2012

OpenWRT: Balanceamento entre múltiplas conexões com a Internet

Mais um artigo da série sobre o OpenWRT. Neste artigo trato do uso de múltiplas conexões com a internet.

A internet é cada vez mais um recurso indispensável para o nosso dia a dia. Hoje, o computador muito mais um "terminal de acesso" do que um equipamento para executar programas locais. Tudo muito bom, tudo muito bem, até que, um belo dia, alguém chuta um cabo, pisa na fibra, cava um buraco... Uma das formas de mitigar os problemas de conexão com a internet é a utilização de múltiplas conexões com a internet, preferencialmente com infraestrutura e provedores independentes.

O uso de múltiplas conexões com a Internet (WAN) ainda não é muito comum em residências (exceto por alguns maníacos por download que conheço). Contudo, quando o número de clientes aumenta um pouco, o custo de ficar sem internet se torna muito maior do que o custo da contratação de uma conexão sobressalente com a internet. Principalmente em ambientes corporativos e internet em condomínios, a redundância já é a regra.

Existe soluções de mercado para implementar a redundância, algumas até com um custo bem interessante. Porém, ao invés de comprar um produto próprio, porque não utilizar o mesmo roteador que já roda o OpenWRT? Vale lembrar que não é muito recomendado usar um roteador de uso residencial para uma grande empresa. Nada contra o OpenWRT, que aguentaria a carga. O problema é a própria especificação do equipamento. Então, nada de colocar 1000 usuários no roteador de R$100, com alguns usuários de torrent. Provavelmente não vai ter memória suficiente.

O gerenciamento de múltiplas conexões é feito pelo programa no pacote multiwan. Existe também a opção do módulo da interface web para facilitar a configuração no pacote luci-app-multiwan que já instala como dependência o pacote anterior. Só instalar como é feito com qualquer outro pacote.

Um dos primeiros problemas para implementar o MultiWAN é o número de interfaces. Caso o roteador possua uma USB, pode-se utilizar um modem 3g para a segunda conexão. Normalmente, os roteadores possuem 3 interfaces: 1 porta de WAN, múltiplas portas para LAN e a rede sem fio. Como, em geral, é necessário conectar um cabo diretamente ao equipamento, o número de interfaces é insuficiente. Mas, como já escrevi anteriormente, se o roteador suportar, podemos dividir as portas LAN em redes isoladas e aproveitar cada uma das portas para a conexão com um provedor diferente.
Nota: Em alguns roteadores o recurso de VLAN é usado, por padrão, para separar as LAN das WAN. Um exemplo seria o TL- WR1043ND, onde a porta WAN e as LAN estão fisicamente em um mesmo "switch" e a separação é feita utilizando o recurso de VLAN.
Para balancear entre duas conexões com a internet e ainda manter o uso das demais portas locais é necessário separar uma das portas da LAN e configurá-la como uma nova interface. O mais comum, neste caso, é usar o nome WAN2 para esta nova interface (usar este nome vai facilitar mais adiante). Conecte o cabo e configure a nova interface WAN2, assim como também é feito para a WAN "original". Lembre-se de definir a zona do firewall para esta interface, em geral, zona wan.

No módulo de configuração da MultiWAN em "Rede/Multi-WAN", deve existir uma entrada para cada interface WAN. Se você manteve o padrão WAN e WAN2, ele já virá pre-configurado. Caso contrário, remova as configurações que não casam com o nomes de interface WAN e adicione novas configurações correspondentes.

Um ponto importante é definir qual método será utilizado para decidir que uma conexão está inoperante. O mais comum é "pingar" um servidor DNS externo, como o DNS do google (8.8.8.8 e 8.8.4.4). Alternativamente, pode ser testado a conectividade com o roteador da WAN que, na teoria, ficaria dentro da infraestrutura do provedor. Porém, este último não notaria uma falha mais sistêmica do provedor onde, apesar de não perder conexão na última milha com usuário, a saída deles para a internet está inoperante.

Existe dois métodos de distribuição da carga: Fast Balancer (melhor distribuição) e Load Balancer (melhor compatibilidade). Teste cada método para verificar o que se enquadra melhor para o seu caso. O primeiro utiliza recursos do firewall enquanto o segundo regras de roteamento.

Mas nem tudo são flores. Algumas páginas, principalmente de bancos, páginas com cookies, SSL, e-commerce são sensíveis a troca do endereço IP do cliente. Nestes casos, é bom criar exceções (no final da página de configuração da MultiWAN) definindo um outro algoritmo de balanceamento ou mesmo fixando a saída por uma interface. Enviar todo o HTTPS para um canal também pode ser útil.

Explore um pouco os parâmetros disponíveis para fazer o ajuste fino de suas configurações. Depois disto, basta ativar, salvar e aplicar.

Se for partir para o "modo texto", recomendo as páginas sobre o MultiWAN presentes na wiki do projeto.

Se quiser testar o MultiWAN mas não tem o privilégio de ter duas conexões WAN, pode similar as duas conexões usando um segundo roteador. Este segundo roteador pode fornecer conectividade internet por duas redes como, por exemplo, (192.168.1.0/24) e  (192.168.2.0/24) e o seu roteador de teste usar ambas como saída para a internet. Ele nem vai notar que são duas redes falsas.

Abraço pessoal,

sábado, 24 de março de 2012

OpenWRT: Túneis e Proxy na sua Casa ou "Escapando do Big Brother"

Mais um artigo da série sobre o OpenWRT. Este vai ser um artigo não diretamente um recurso do OpenWRT mas o que você poderá fazer com ele.

Várias vezes fui questionado de qual seria a vantagem de instalar o OpenWRT se corro o risco de não dar certo e, além disto, perder a garantia. O grande diferencial do OpenWRT não são propriamente os recursos desenvolvidos pela comunidade OpenWRT, que já são muito melhores dos originais, mas a possibilidade de usar todos os recursos desenvolvidos para o ambiente Linux diretamente no seu roteador. Vou comentar neste artigo o uso de túneis e proxy SOCKS sobre um conexão SSH.

O SSH surgiu como um substituto seguro dos finados rlogin, rsh e telnet (ainda não muito morto). Ele é usado como uma das formas de gerenciar seu roteador, além da interface WEB. Porém, mais do que reimplementar as funcionalidades dos programas finados, o SSH foi além e acrescentou diversos recursos. Um dos mais interessantes, mas ainda pouco conhecidos, é a criação de túneis.

Os túneis ou encaminhamento de porta no SSH são como despachantes. Você indica onde quer conectar e ele abre a conexão para você. Para quem recebe a conexão, quem está conectando é o despachante e não você. Um bom exemplo de "homem do meio". O SSH pode criar túneis tanto do servidor para o cliente (-R) como do cliente para o servidor (-L). Na conexão com a opção "-L", uma porta local é aberta no computador cliente. Ao receber uma conexão nesta porta, o SSH solicita que o servidor conecte em um destino pré-definido e todo o tráfego fluindo por esta conexão trafegará pelo SSH. Para todos os casos, quem está efetivamente conectando ao destino é o servidor SSH e não a máquina cliente. A opção "-R" é simplesmente o inverso: o servidor abre uma porta local que, ao ser acessava, quem conecta ao destino é o cliente SSH.

Vamos a um exemplo simples. Suponha que você está em casa, sem camisa, na sua folga, tomando uma cervejinha e alguém liga do trabalho que uma conta de um usuário importante no banco de dados está bloqueada. Se você tiver um SSH dentro da empresa acessível pela internet, poderá resolver o problema antes de esquentar a cerveja:
computador-casa$ ssh usuario@servidor-ssh.empresa.net -L 6666:servidor-banco.intranet:5432
servidor-ssh$ 
Ao completar a autenticação, você receberá o shell de sempre. Porém, devido ao comando -L, o cliente SSH local abrirá uma porta local: a 6666. Você poderá verificar isto usando o netstat ou o ss. Aponte o cliente do banco de dados para conectar nesta porta local no computador local:
computador-casa$ psql -h localhost -p 6666 -U usuarioadm -W
Quando o cliente SSH rodando em computador-casa receber o pedido de conexão na porta 6666, ele solicitará ao servidor servidor-ssh.empresa.net que este conecte em servidor-banco.intranet na porta 5432. Tudo isto utilizando uma conexão cifrada entre o computador-casa e o servidor-ssh. Seu cliente de banco de dados vai achar que existe um servidor de banco de dados rodando na máquina local na porta 6666. O servidor de banco de dados vai achar que o servidor-ssh.empresa.net está conectando nele. Simples. Resolva o problema e volte para a cervejinha. 
Nota: se a solução for utilizar um cliente em modo texto, como o psql, normalmente faz mais sentido simplesmente rodar o psql no servidor-ssh ou conectar a partir deste em um computador que o tenha e conectar de dentro da própria rede.
Isto também pode ser usado para a WEB, usando a porta 80. Porém, as inúmeras referências externas do HTML, o uso de referências absolutas e servidores que utilizam virtualhosts baseados em nomes fariam com que esta técnica de tunelamento individual se torne improdutiva. Para sanar este problema, foi criada a opção "-D" para a criação de túneis dinâmicos, simulando um servidor SOCKS.

A opção "-D porta" cria um servidor SOCKS (protocolo de PROXY não específico para HTTP), no computador cliente, fazendo com que as conexões saiam pelo servidor SSH.  Isto funciona com a maioria dos servidores e clientes SSH, incluindo o dropbear presente no OpenWRT. Vamos ao exemplo.

Imagine que você deseja acessar no trabalho um endereço sem o conhecimento do administrador da sua rede local (desde que o administrador não seja eu). Supondo que você instalou o OpenWRT na sua casa e o SSH está liberado para acesso remoto, bastaria você executar:
computador-empresa$ ssh root@ip-do-meu-roteador -D 8888
Isto abrirá uma porta local 8888. Agora, basta configurar o seu navegador para utilizar um proxy SOCKS no endereço localhost:8888. Todas as suas requisições do navegador serão enviadas para o cliente SSH local, cifradas, enviadas ao seu roteador em casa e este sim acessará o site desejado. Simples e seguro. Como seu roteador também vê a rede interna, você pode utilizar o mesmo recurso para acessar um serviço na sua rede local (192.168.x.x). Tudo isto abrindo para a Internet no seu roteador apenas o serviço SSH.

Em geral, os bons programas tem suporte a usar um servidor SOCKS. Para os demais casos, você pode usar uma biblioteca/programa que intercepte as conexões e as envie ao servidor PROXY. Desta forma, funciona para quase todos os casos.

Claro, é bom lembrar que rastros ficam no computador cliente como logs, cache do navegador e essas coisas. Se o objetivo é ser "furtivo", deve tomar mais alguns cuidados.


Não é bem o caso mas, se seu cliente necessariamente é um Windows, o Putty também possui estes recursos de encaminhamento de porta e proxy.

Happy hacking...

domingo, 5 de fevereiro de 2012

OpenWRT: Instalando em um computador ou VM

Mais um artigo da série sobre o OpenWRT.

Apesar de recomendar o uso do OpenWRT para os "computeiros" em geral, trocar o firmware do seu roteador "para ver como é" o OpenWRT não é uma boa prática. Se este é o seu caso, este artigo foi feito para você.

O OpenWRT, devido a sua gama de roteadores suportados, tem a portabilidade como um fator fundamental de sucesso. Ele precisa operar tanto em dispositivos com ARM, Mips e outros processadores um tanto quanto exóticos para quem somente trabalha com a arquitetura Intel clássica.  Se ele funciona para tantas arquiteturas diversas, por que então não funcionaria com um computador i586? Bem, ele funciona.

No mesmo local onde é encontrado os firmwares para os roteadores, existe um "alvo" específico para a arquitetura x86 (ix86, i586). É neste link aqui e é chamada de x86_generic. Assim como para qualquer outra arquitetura, existe também o ImageBuilder que já comentei anteriormente. Porém, o espaço em disco não é problema para um x86, onde o armazenamento gira em torno dos Gigabytes e não Megabytes. No link que passei, como sempre, existe vários arquivos. Dentre as opções de imagens, foi destacar algumas.
  • openwrt-x86-generic-combined-ext2.img.gz
  • openwrt-x86-generic-combined-ext2.vdi
  • openwrt-x86-generic-combined-ext2.vmdk

A versão "combined" não possui a partição /overlay. Ele funciona como a raiz de uma distribuição Linux clássica: alteração direta no disco. Se você apagar o que não deve, pode precisar começar do zero. Bem, isto não é tão crítico em um PC. Basta usar um LiveCD ou reinstalar o OpenWRT. Das três opções que eu listei são, em ordem: uma imagem (compactada com gzip) para ser copiada no disco (usando dd, por exemplo), um disco para VirtualBox e um disco para Vmware. Para experimentar, as duas últimas são as mais indicadas. Existe também a versão rootfs-squashfs, similar ao utilizado em um roteador embarcado, mas ainda não experimentei.

A arquitetura x86_generic também pode ser utilizada não como um "experimento" mas sim como um roteador em produção. Já precisei mais de uma vez montar um roteador com Linux utilizando um PC. No meu caso, até hoje, só utilizei distribuições clássicas, e isso dá um pouco de trabalho. Porém, hoje em dia, diante das facilidades de configuração do OpenWRT, eu optaria por utilizá-lo como "distribuição" dos meus roteadores.

Se for utilizar as versões virtuais (vdi, vmdk) em produção, vale a pena dar uma olhada se os drivers de rede estão "acelerados". Não sei se os drivers paravirtualizados (vmware-tools, vboxadditions) estão integrados na imagem. Mesmo sem eles, acho que o desempenho de um roteador com um processador Core 2 Duo moderno deve ser mais performático do que um processador de 400 Mhz dos roteadores "residenciais" ou SOHO. Com recurso de VLAN, pode-se montar um ambiente bem interessante.

Até a próxima.

quarta-feira, 1 de fevereiro de 2012

OpenWRT: Multiplique suas redes: MultiLAN com VLAN

Mais um artigo da série sobre o OpenWRT.

No artigo anterior, comentei sobre o uso de múltiplas redes wireless. Hoje, vou falar sobre múltiplas redes LAN.

Em geral, os roteadores possuem duas interface de rede cabeadas: LAN e WAN. A primeira representa as portas da rede local, normalmente umas 4 ou 5 delas. A segunda é utilizada para a conexão ao enlace superior, o que normalmente é a sua conexão com a Internet. Na figura abaixo, a porta azul é a WAN, enquanto as amarelas são para a conexão LAN.


Neste roteador com OpenWRT, a eth0 "representa" o acesso as várias portas da rede local (as amarelas). Fazendo uma analogia com um computador, o que existe "dentro da caixa" é um switch de 4 portas externas e uma interna (chamada CPU), sendo esta interna conectada à interface eth0.  A eth0, por padrão, é agregada com a interface wireless, wlan0, para que as duas redes troquem pacotes. Tudo isto já comentei anteriormente. A figura seguinte ilustra aproximadamente esta "rede interna".


Este arranjo também muda de equipamento para equipamento. Tem casos onde a porta WAN está neste switch e eth1 não existe, outros a wireless é eth1 e assim por diante.

Como qualquer interface de rede no OpenWRT, a sua finalidade pode ser reajustada de acordo com a necessidade do administrador. Caso não fosse necessário a conexão com a Internet, como no caso de um access-point, a interface eth1 poderia ser anexada junto na interface LAN, operando como uma quinta porta local. Porém, o mais interessante não é juntar as interfaces mas sim, dividi-las.

Se seu roteador suportar o recurso de VLAN (olhe a coluna VLAN no site do OpenWRT), você poderá dividir estas portas em redes isoladas. VLAN é uma tecnologia de Virtualização de Redes Locais. Ela foi criada para que o isolamento entre duas redes pudesse ocorrer dentro de um switch e não exigir toda uma estrutura em paralelo. Assim, parte das portas de um switch podem pertencem a uma rede enquanto outras pertencem a uma segunda rede, sem comunicação entre elas. A troca de pacotes entre as redes é intermediada por um roteador, que pode controlar quem troca que pacotes com quem.
Dica: recomendo que as configurações do switch interno sejam feitas pela rede wireless, uma vez que esta não participa do switch. Assim, será mais difícil que uma mudança de configuração resulte em falta de conectividade.
Para configurar, vá para a configuração de rede, switch. Se não estiver habilitado, habilite o recurso de vlan. Você notará que já existe uma vlan 1 com todas as portas marcados como "não etiquetadas/not tagged". O que é esta etiqueta? Vou tentar explicar em poucas linhas.

VLAN são identificadas por um número único na rede local, chamado de VLAN ID. A VLAN padrão nos diversos equipamentos de rede no mercado é a de número 1. As outras, 2, 3, etc, são criadas de acordo com a necessidade do administrador.

As portas do switch podem estar em 2 estados básicos: pertencer a uma VLAN (estado "não etiquetado") ou não pertencer a uma VLAN (estado "desligado"). O primeiro, "não etiquetado", faz com que a porta envie e receba pacotes da VLAN correspondente. Cada porta pode estar presente em apenas uma VLAN para não misturar os tráfegos. Se selecionar para uma mesma porta duas VLANs como "não etiquetadas", a configuração não irá salvar e você receberá uma bela mensagem de erro. O outro estado, como o nome sugere, informa que esta porta está "desligada" da VLAN.

E quanto a esta "etiqueta"? A limitação de uma VLAN por porta não resolve todos os problemas. Porém, as VLANs não podem se "misturar" em uma mesma porta. Para resolver este problema, foi criada as etiquetas (tags) do protocolo 802.1Q. As etiquetas, nada mais são que um envelope envolvendo o pacote IP e informando de qual VLAN aquele pacote pertence. Assim, os pacotes da VLAN marcada como "etiquetado" recebem uma camada extra com o ID da VLAN de destino enquanto os "não etiquetado", onde a VLAN é chamada de VLAN nativa, são enviados normalmente pela rede.

Temos então 3 opções:
  • "desligado" significa porta não está naquela VLAN;
  • "não etiquetadosignifica porta está naquela VLAN e somente nesta;
  • "etiquetado" significa porta está naquela VLAN mas todos os pacotes vindo desta ou destinados para ela serão envolvidos em um envelope.
Este "envelope" faz com que os sistemas operacionais e demais equipamentos de rede não reconheçam-no como um pacote IP normal. Contudo, tantos os switches e roteadores como os sistemas operacionais tem suporte, quando configurado, para interpretar estas etiquetas. 

Vamos então a um exemplo simples onde 2 das quatro portas serão configuradas para uma outra rede. Ainda em rede, switch, crie uma nova VLAN. O número não importa muito, desde que seja único na rede. Nesta nova VLAN, marque a porta CPU como "etiquetado/tagged", e as portas 3 e 4 como "não etiquetado/not tagged". Como somente uma VLAN pode ter a porta como "não etiquetado", configure as portas 3 e 4 na VLAN 1 como "desligado". Aplique as configurações. Isto irá criar uma nova interface, eth0.2, onde 2 é o ID da VLAN. Ela pode ainda estar abaixada mas já vamos resolver isto. E a porta 5? Todas as configurações que eu fiz nela foram inócuas. Pela pesquisa que eu fiz, é uma porta de gerenciamento.

Agora precisamos criar uma nova interface para esta rede. Vá para "Rede" e "Interfaces" e adicione uma nova interface. Você irá notar que existe uma nova interface chamada de "Interface VLAN: "eth0.2"". Selecione ela e configure a sua nova interface como desejar. Só não esqueça de utilizar uma faixa de endereços independente das demais interfaces. Ajuste o firewall "a gosto".

Agora que já passamos pelo MultiWLAN e MultiLAN, no próximo artigo vou comentar como criar uma MultiWAN, com balancemento de carga e redundância entre diversas conexões com a Internet.

Até mais.

sexta-feira, 27 de janeiro de 2012

OpenWRT: Multiplique suas redes: MultiWLAN

Mais um artigo da série sobre o OpenWRT.

Um dos recursos mais úteis para ambientes corporativos é a possibilidade de multiplicar seu roteador com OpenWRT. A pedidos, neste artigo vou tratar o uso de múltiplas redes sem fio (MultiWLAN). Acho que vocês irão achar interessante. Em outros artigos na sequência, tratarei dos demais casos de "multiplicação de redes" como de múltiplas conexões com a Internet (MultiWAN) e múltiplas redes locais (MultiLAN).

Se seu roteador suportar (e a maioria suporta), você poderá criar diversas redes Wireless compartilhando o mesmo rádio. E para que serve isto? Bem, tive um problema recente na minha casa onde um computador visitante, com M$ Vista, não autenticava na minha rede WPA2/AES. Ele ganhava IP, enviava pacotes mas não os recebia. A solução mais "elegante" foi criar uma segunda rede Wireless com uma configuração de segurança diferenciada e um SSID próprio. E sim, WPA2/AES funcionou sem problemas quando usei um Linux LiveCD.

Outro caso que pode ser interessante é a utilização da rede Wireless para a conexão WAN. Não tem a rede aberta do vizinho que não pega muito bem? Pode usar um roteador Wireless para conectar como cliente da rede alheia ao mesmo tempo que você conecta normalmente na sua rede wireless local (mas não façam isto sem autorização, OK?). Para os casos mais avançados, poderia criar uma rede em malha, interligando diversos roteadores espalhados, como no caso de um condomínio, e difundir a Internet de um ponto central para todos os condôminos. Isto, ao mesmo tempo que os laptops continuam a conectar nos roteadores como se estes fossem roteadores "normais", conectados por cabo na Internet. Ainda não consegui reunir uma quantidade de roteadores significativa para realizar o teste da rede em malha (mesh), mas um dia chego lá.

Bem, tudo isto possui, eu diria, um "limitador". Todas as redes Wireless do seu roteador irão compartilhar as configurações de hardware como o canal e a potência. Afinal, mesmo com três antenas, você tem somente uma placa wireless. Contudo, acredito que não será um grande problema.

Agora a configuração: este é bem simples de ser feito. Pela interface Web, na configuração de rede, Wifi, clique em "Adicionar". A parte superior é a configuração do dispositivo, comum a todas as redes. A de baixo é a da sua rede, onde você pode escolher o modo, segurança, nome da rede Wireless, essas coisas. Uma configuração importante é a qual "interface" ela pertencerá. Não é a interface "Linux" tradicional mas as interfaces do OpenWRT, como já descrevi anteriormente (para os mais curiosos, a primeira interface wireless aparece como "wlan0" enquanto as demais ganham sufixos como "wlan0-1"). Você pode colocar esta rede como uma conexão LAN (ficando lado a lado com a rede local, assim como a rede wireless original) ou como uma conexão WAN (em conjunto com a interface já existente). Porém, o mais interessante são as configurações onde uma nova interface é criada.

O que eu vou colocar aqui é genérico e vale também para qualquer caso onde seja criado outras interfaces, como veremos em outro artigo sobre MultiLAN. Com a configuração de uma nova interface independente, você terá uma nova rede, com uma nova faixa de endereços IP, regras de firewall e tudo mais. Pode criar, por exemplo, um ambiente DMZ (zona desmilitarizada), com máquinas prestando serviços. Não confundir com o recurso DMZ dos roteadores wireless que apenas encaminham todas as requisições externas para um endereço IP interno que, para mim, não tem nada do conceito de "zona desmilitarizada". Está mais para "terra de ninguém".

Outra coisa interessante seria criar duas redes wireless. Uma rede segura, com somente máquinas "confiáveis", e com regras mais permissivas, e uma outra "de baixo escalão", para visitas indesejadas e máquinas Windows suspeitas. Pode também exercitar sua caridade "para com os outros" e criar uma rede "aberta", isolada das demais e fornecer acesso gratuito a quem conseguir alcançar seu roteador.

As redes são independentes e a comunicação entre elas é definida pelas regras do Firewall.  Bem, mas isto é assunto longo e para outro artigo. Ainda preciso escrever este artigo sobre regras do Firewall...

Boa noite e bom hacking!

quarta-feira, 25 de janeiro de 2012

OpenWRT: Customizando sua firmware

Mais um artigo da série sobre o OpenWRT.

Em geral, a palavra "firmware" assusta as pessoas. Dá a impressão de algo imutável e complexo. Uma "firmware" ou "imagem", no caso do OpenWRT, nada mais é que uma imagem de um sistema operacional para dispositivos embarcados, similar às imagens feitas por um Ghost ou mesmo um dd. Claro, tudo isto dentro do formato esperado de cada dispositivo.

Mas por que alterar a "firmware" do OpenWRT? Um dos maiores problemas dos dispositivos embarcados é o limitado espaço em disco. 4MB é bem pouco para os mais sonhadores. Preciosos kbyte podem ser recuperados se você montar uma imagem que não contém algum pacote desnecessário. Se você é um feliz proprietário de um dispositivo com 8MB ou mais, parabéns, provavelmente este artigo não será útil para você. Instale a imagem padrão e posteriormente os demais pacotes desejados.

Então, tenho pouco espaço em disco. A estratégia é retirar tudo que eu conseguir, criando um a imagem enxuta, e instalar individualmente os pacotes após a gravação? Não, os arquivos presentes na ROM são mais econômicos do que os mesmos arquivos salvos na partição de alteração (overlay). O mais econômico é que, após selecionar os pacotes desejados, seja criada uma imagem com tudo pré-instalado, sempre deixando o espaço vazio para as configurações e para instalações não planejadas que, idealmente, serão embutidas em uma nova firmware para posterior gravação.

Outro bom motivo é a mais fácil reinstalação de um dispositivo ou a sua instalação em lote. Ao instalar o OpenWRT com a "firmware" padrão, os programas instalados anteriormente serão removidos. Colocando-os diretamente na "firmware", eles já estarão prontos logo após a nova instalação. Para o caso da instalação em lote, o mesmo vale para configurações padrão, que podem ser embutidas na firmware. Muito cuidado neste ponto pois o modo de emergência não irá ser útil caso a falha de configuração já estiver na firmware!

Pela característica de um projeto de Software Livre, tudo no OpenWRT é customizável. Basta baixar, alterar e recompilar. Porém, isto dá um pouco de trabalho. Para a customização dos pacotes instalados e de arquivos diversos, o OpenWRT desenvolveu o construtor de  "firmwares" chamado ImageBuilder. Ele fica localizado no mesmo nível das "firmwares" no download do OpenWRT. No caso da arquitetura que tenho usado (ar71xx), seria este arquivo. É um arquivo tar.bz2 grande, aproximadamente 420MB contendo todos os pacotes do OpenWRT compilados para esta arquitetura e os scripts de construção de novas "firmwares".

Depois de descompactá-lo, entre no diretório criado e use o comando "make". "make help" irá dar algumas instruções de como usá-lo. Ah, o pacote de tradução do Português do Brasil pode ser colocado no subdiretório packages e os scripts irão achá-lo.


No meu ambiente, estou usando o seguinte comando:
make image PROFILE=TLWR740NV1 PACKAGES="luci-i18n-portuguese_brazilian ip6tables libiwinfo wpad-mini luci-app-wol luci-theme-openwrt uhttpd wol netstat-nat ifstat luci-theme-base luci-app-qos luci-app-upnp luci-app-firewall luci-app-ddns kmod-input-polldev -ppp -ppp-mod-pppoe aiccu radvd ddns-scripts libiptc resolveip luci-mod-admin-full libiwinfo-lua"
Ele gerará a imagem para o dispositivo "TLWR740NV1" e selecionará os pacotes necessário para o suporte IPv6, que comentei anteriormente, o programa netstat-nat, para mostrar as conexões do NAT, programas para o Wake-on-LAN (WOL), UPnP, scripts para serviços de DynDNS. O que eu retirei? Suporte a PPP. Para o meu caso onde o modem fornece o endereço IP por DHCP, ele é desnecessário (e bem grande). Com isto, você ainda terá 320 KBytes livres para configurações e outros pacotes. Para listas todos os PROFILES possíveis use:
make info
O PROFILE padrão é a geração de imagens para todos os "firmware", o que leva algum tempoPorém, notei um problema com o construtor do OpenWRT: ele não respeita o parâmetro PROFILE. O patch do bugreport resolve o problema. Outra alternativa é esperar ele gerar as imagens até que a desejada esteja pronta e, então, o processo pode ser abortado (ctrl+c é suficiente). As imagens são geradas no subdiretório bin/<alvo>, e seguem o mesmo nome encontrado no download do site.

Depois de uma certa experiência, o administrador pode, inclusive, optar por não instalar a interface Web. Com isto, será preservado um bom espaço em disco, permitindo a instalação de muito mais programas, mesmo em um disco limitado. Que tal um servidor VPN? Um cliente VPN? Um relay TOR? Suporte a uma rede em malha (mesh)?

Boa sorte, pessoal!