TL;DR OpenWRT é uma distro Linux embarcável em roteadores que permite customizar e instalar serviços sem a necessidade de compilar um novo firmware. Em outras palavras, é um “firmware on steroids” para roteadores.
Mas por quê?
- Economia. Apenas substituindo o firmware do roteador é possível adicionar funcionalidade e recursos, economizando uma grana preciosa com dispositivos semelhantes, como AppleTV, NAS dedicado, etc.
- Funcionalidade. Provavelmente o roteador fica ligado 100% do tempo na sua casa, sendo utilizado apenas para compartilhar a internet. Praticamente um servidor disponível 24 horas por dia sem utilizaçao! Não mais…
- Diversão. Substituir o firmware do seu roteador por uma distro baseada em Linux e configurar todos os serviços manualmente… é diversão pura!
- Por que eu quero (e posso)!
Instalação
Atenção: existe a possibilidade (embora pequena) de algo sair muito errado e você ganhar um peso de papel. Prossiga por sua conta e risco… ou se tiver coragem!
O primeiro passo é descobrir o modelo do seu roteador e verificar a compatibilidade nesta página: http://wiki.openwrt.org/toh/start. Se não encontrar o modelo ou houver um aviso de não-compatibilidade, sinto muito mas não vai rolar para você.
Se seu roteador for compatível, haverá o target da imagem e um link para uma wiki com um how-to específico do modelo, instruções de instalação, resolução de problemas, etc. Procure pelo nome da release que você deverá baixar daqui http://downloads.openwrt.org. A imagem tem o formato openwrt-TARGET-generic-MODELO-VERSAO-squashfs-factory.bin
Por exemplo, meu roteador é um TP-Link WR1043ND. Procurando na página http://wiki.openwrt.org/toh/start, o target compatível com meu roteador é ar71xx:
Acessei a página de downloads, naveguei pelos diretórios da release, depois target e encontrei o arquivo openwrt-ar71xx-generic-tl-wr1043nd-v1-squashfs-factory.bin para download.
Quando baixar a imagem, é só fazer a atualização de firmware normalmente no seu roteador pelo admin:
Confirme e reze muito! Aguarde o roteador atualizar e reiniciar.
Deste ponto em diante, será necessário conectar no roteador com cabo, para setar uma senha de root e configurar o wifi. Este processo é relativamente trivial, basta utilizar a interface web do admin, sem segredo…
Uma vez definida a senha e o wifi configurado, é possível acessar seu roteador via ssh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Se você chegou até aqui, parabéns! Você teve coragem. E felizmente a parte difícil já passou…
Nota: dependendo do seu roteador, a versão do OpenWRT pode variar. Leia a wiki do modelo do seu roteador para instruções específicas e resolução de problemas.
Importante: caso o pior aconteça (como acabar a energia no meio do processo de flash da firmware) e você não queira utilizar seu roteador como peso de papel, tente seguir os procedimento de “debriking” em http://wiki.openwrt.org/doc/howto/generic.debrick
Configurando o NAS
Para o NAS, vamos montar as partições do HD externo e configurar uma partição de swap pois o roteador provavelmente não tem memória interna suficiente para dar conta do recado.
Neste exemplo, vou usar meu HD de 1TB com uma partição formatada em ext4 e outra partição de 1GB formatada como linux+swap. Não vou usar FAT32 nem NTFS e nem recomendo! A idéia aqui é deixar o HD plugado eternamente no roteador e acessá-lo pela rede.
Instalando os pacotes necessários
Para nossa sorte, o OpenWRT conta com um gerenciador de pacotes que facilita (e muito) a instalação das libs e módulos necessários para montar o HD externo e compartilhá-lo na rede via Samba ou NFS.
Logue no roteador via ssh e instale os seguintes pacotes:
1 2 |
|
O ultimo pacote vai depender do sistema de arquivos do seu HD. Por exemplo, kmod-fs-ext2, etc. Veja os módulos disponíveis em http://wiki.openwrt.org/doc/howto/storage
Verifique se as partições já foram detectadas rodando blkid:
1 2 3 |
|
Montando as partições do HD
Agora vamos configurar o fstab para montar as partições automaticamente quando o roteador for ligado. Edite o arquivo /etc/config/fstab com o seguinte (use o vi):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
No meu caso, vou montar a partição /dev/sda1 em /mnt/media, então é necessário criar o diretório de destino, ativar e iniciar o serviço fstab:
1 2 3 |
|
Pronto, seu HD externo pode ser acessado em /mnt/media e o swap foi montado na segunda partição.
Compartilhando na rede
Vou utilizar NFS para compartilhar a partição na rede, mas você também pode utilizar Samba seguindo http://wiki.openwrt.org/doc/howto/cifs.server
1 2 |
|
Edite (ou crie) o arquivo /etc/exports com o conteúdo:
1
|
|
Ative e inicie os serviços necessários:
1 2 3 4 |
|
Pronto! O server (roteador) está configurado. Para montar esta partição no client, por exemplo Ubuntu, siga:
1 2 3 |
|
Groovy! Seu NAS foi montado no seu desktop em /media/nas. Pode compartilhar seus arquivos a vontade!
Configurando o MediaServer (minidlna)
Logue no roteador e instale os pacotes necessários:
1 2 |
|
Para configurar, basta editar o arquivo /etc/config/minidlna como segue:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Ative e inicie o serviço:
1 2 |
|
Pronto! O MediaServer está configurado e compartilhando seus arquivos via DLNA na rede. Aqui na minha SmartTV aparece assim:
Configurando o BitTorrent client (transmission)
Vamos instalar os pacotes:
1 2 |
|
E configurar o serviço editando /etc/config/transmission e alterando as opções a seguir (mantenha todas as outras configs):
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Ative e inicie o serviço:
1 2 |
|
O Transmission roda como um daemon, sendo controlado remotamente. Para isso, será necessário adicionar a seguintes regra de farewall, adicionando no final do arquivo /etc/config/firewall:
1 2 3 4 5 |
|
Reinicie o firewall executando /etc/init.d/firewall restart
Para gerenciar seus torrents, instale a extensão .torrent to Transmission no Chrome, baixe o Transmission Remote GUI para Windows, Mac e Linux ou ainda o Remote Transmission para Android.
Caso seu roteador tenha espaço disponível, você pode instalar o pacote transmission-web para gerenciar seus torrents diretamente do navegador.
Ao adicionar um .torrent pelo GUI, o mesmo será baixado diretamente no seu roteador!
Conclusão
Embora relativamente complicado, todo procedimento para instalação e configuração não é nada diferente do que estamos acostumados a fazer diariamente no Linux, como devops, seja configurando uma VPS ou montando um NAS na rede.
A liberdade que o OpenWRT oferece é imensa. O repositório é recheado com pacotes bem úteis e muito fáceis de configurar. Sem falar na economia comparando com um aparelho como AppleTV (que não ofecererá tantos recursos) ou outros media servers do mercado.
E aí, tem coragem??? Poste sua experiência nos comentários! :)
Referências
- http://wiki.openwrt.org/doc/howto/usb.storage
- http://wiki.openwrt.org/doc/howto/nfs.server
- http://wiki.openwrt.org/doc/uci/minidlna
- http://wiki.openwrt.org/doc/uci/transmission
- http://wiki.openwrt.org/toh/tp-link/tl-wr1043nd
- http://www.rodrigorodrigues.info/index.php/2012/01/openwrt-fazendo-magica-com-linux-no-roteador-parte-1/
- http://knowhow.bart.prokop.name/install/openwrt/wr1043nd