Discuta este tópico no fórum

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

terça-feira, 29 de setembro de 2015

OpenWRT: Fazendo Backups

Mais um artigo da série sobre o OpenWRT.

Antes de comentar como atualizar para a próxima versão do OpenWRT, achei interessante comentar sobre um assunto relacionado, mas tão importante que merece um artigo próprio: backups.

Tem gente que ainda confia em tecnologia. Brinco dizendo que não adianta rezar, só backup salva. Depois de fotos, vídeos, documentos, os roteadores são a última coisa que as pessoas se preocupam em fazer backup. Afinal de contas, para os mais simples, ele só contém o nome da rede e a senha. Porém, com o OpenWRT, seu roteador pode ser muito mais do que isto. O meu, em especial, é a central de comunicação, entreterimento e armazenamento da casa. Na prática, um servidor na rede com múltiplas funções. Como configurá-lo exige uma significativa quantidade de trabalho, sempre é bom evitar que você tenha que refazê-lo caso algo aconteça com ele.

Saindo do ambiente residencial, o tempo de restauração normalmente é crítico para ambientes empresariais. Neste caso, um backup "na mão" facilita em muito restaurar rapidamente um equipamento com defeito. Fora isto, backup podem ser utilizados para replicação "em massa", evitando o retrabalho de configurar o roteador "do zero" (para este fim, tem que recriar a entrada da ULA do IPv6).

Neste artigo, vou considerar que você conhece um básico do OpenWRT, como a estrutura que usa o squashfs com a overlay.

O OpenWRT tem backup? Sim, mas não de tudo. O backup do OpenWRT guarda somente configurações e dados selecionados do /etc. A lista do que ele copia pode ser vista com o comando "sysupgrade -l":
root@router:~~# sysupgrade -l
/etc/config/dhcp
...
/etc/sysctl.conf
/etc/sysupgrade.conf
São alguns arquivos pré-definidos, listados em /lib/upgrade/keep.d/ (pelos pacotes) ou em /etc/sysupgrade.conf, pelo usuário. Programas instalados não serão salvos, mas somente suas configurações (se estiverem em /etc/config ou forem explicitadas pelo mantenedor do pacote). É isto que é preservado quando você faz uma atualização do OpenWRT e pede para salvar as configurações. Compare isto com o conteúdo da overlay. Tudo que estiver lá foi modificado no seu sistema desde a instalação. O que estiver lá e não na listagem do sysupgrade, será perdido utilizando esta forma de backup. 

E quanto aos programas? Se você usa a firmware no formato squashfs, existem duas opções. A primeira é guardar a lista dos pacotes instalados e reinstalá-los. Para facilitar, você pode ver na /overlay:

root@router:~# ls /overlay/usr/lib/opkg/info/*control | sed -e 's%.*/%%;s/\.control//' | xargs

aiccu bind-dig bind-host bind-libs binutils block-mount coreutils-du coreutils ddns-scripts diffutils e2fsprogs...

Com a lista de pacotes salva, basta instalá-los após a restauração da configuração.

A segunda opção é guardar toda a overlay. Para salvar tudo mesmo que você fez desde a instalação do OpenWRT, é bom copiar a partição overlay. Um tar simples pode fazer o serviço. De um computador com Linux, execute:

$ ssh root@router tar -czv /overlay | dd of=backup-roteador.20150925.tgz

Isto compacta a /overlay em um tar e envia para o arquivo local backup-roteador.20150925.tgz sem criar o arquivo no roteador, que nem sempre tem espaço para isto. O WinSCP poderia copiar a overlay mas provavelmente você teria problemas com a permissão (perdida) dos arquivos. Se a overlay for pequena, você pode fazer o tar no /tmp (memória RAM) e copiar com o WinSCP:

root@router:~# tar -czvf /tmp/backup-roteador.20150925.tgz /overlay

Caso use Linux, fiz um pequeno script que faz a cópia do backup do OpenWRT, da lista de pacotes e da overlay em um único passo. Se seu roteador está em 192.168.1.1, só chamar:

$ ./fullbackup 192.168.1.1

E se eu não uso a firmware em squashfs? Primeiro você é corajoso pois se fizer algo de errado, não terá como usar a recuperação do OpenWRT. Contudo, isto não é um problema se o OpenWRT foi instalado em um PC ou VM. Para estes casos, faça o tar de todo o conteúdo. Só precisa tomar o cuidado de excluir os diretórios de dados voláteis (/proc, /sys, /tmp, /var/tmp, ...) ou simplesmente use a opção "--one-file-system" do tar para não sair da partição raíz.

E para restaurar tudo isto? Se for o backup do OpenWRT, pode ser feito pela interface web ou pelo comando sysupgrade. Se for pela overlay, recomendo entrar no modo de recuperação, zerar o roteador, montar a overlay e descompactar o conteúdo diretamente sobre a partição. Escrever na overlay enquanto ela estiver usada resulta em comportamentos incertos.

E, reforçando, não adianta rezar: só backup salva!

Se pintar um problema, tem sempre o fórum deste blog. Até a próxima.

sexta-feira, 25 de setembro de 2015

OpenWRT: Lançamento da versão 15.05 Caos Calmer (CC)

Mais um artigo da série sobre o OpenWRT.

Salve a todos! Depois de um ano de desenvolvimento, finalmente foi lançada uma nova versão estável do OpenWRT. É a Caos Calmer (CC), com o número 15.05.

E o que temos de novo? Que "caos" que esta versão venho acalmar? A grande mudança nesta versão é que o repositório de pacotes foi renovado. O OpenWRT estava dividido em duas grandes partes: o núcleo principal, com a base do OpenWRT e pacotes indispensáveis para seu funcionamento e uma segunda parte com os pacotes "extra". O núcleo principal era e é cuidado com cautela, com o acesso de escrita bem restrito. Contudo, o repositório de pacotes ficava em segundo plano. Pela grande quantidade de pacotes, eles normalmente eram mantidos por pessoas não diretamente ligadas ao desenvolvimento principal do OpenWRT. Normalmente elas montavam o pacote, ele era aceito no repositório e depois ninguém aparecia para dar manutenção e atualizar o pacote. Fora isto, era comum que contriuições enviadas por voluntários nunca serem apreciadas e se perdiam no tempo. Como os pacotes não tinham pai, ninguém tomava a iniciativa de aceitar a contribuição.

Para resolver este dilema, já na versão anterior (BB) foi criado um repositório no github para substituir o packages antigo. Neste, todos os pacotes tem necessariamente que possuir um mantenedor.  As contribuições são enviadas por "Pull Request" (PR), facilitando em muito o controle destas alterações e a contribuição de pessoas não diretamente ligadas ao projeto. Pacotes adotados eram importados neste repositório e removidos do antigo (renomeado para oldpackages). Na versão anterior do BB, isto não foi muito sentido pois o oldpackages foi compilado junto com o novo repositório. Com o lançamento do CC, isto não ocorre mais. Se um pacote não foi adotado, ele estará ausente na versão atual. Resumindo, temos uma menor oferta de pacotes mas com uma qualidade muito superior e com atualizações mais frequentes.

Sentiu falta de um pacote? Você pode ir pelo caminho "Faça você mesmo" e, inclusive, contribuir com a melhoria para o projeto.

Fora esta mudança nos pacotes, como sempre, ocorreram as melhorias de desempenho, correção de bugs e novas funcionalidades vindas das atualizações de versões dos componentes do sistema. Para os usuários normais, podem se destacar:
  • Suporte a protocolos de escalonamento de pacotes que evitam o Bufferbloat, reduzindo a lentidão (latência) quando sua internet estiver sobrecarregada;
  • Melhor desempenho do firewall (novamente menor latência);
  • Maior segurança, com o uso de DNSSEC, opções de hardening na compilação e assinatura de pacotes.

Enfim, temos uma bela versão de firmware para seu roteador, mais rápida, segura e com mais recursos (exceto pelo menor número de pacotes).

No próximo artigo, dicas sobre como atualizar. Até mais.