Discuta este tópico no fórum

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

sábado, 18 de maio de 2013

OpenWRT: Utilizando conexões wireless para ligar duas redes - configuração

Depois de apresentar o problema do uso de uma conexão wireless para interligar dois segmentos de redes, vamos a parte de configuração. Sabendo o que está sendo feito, é uma configuração ligeiramente simples, próxima do uso de duas redes WLAN.

Neste exemplo, estou tentando conectar dois roteadores por uma rede sem fio e ainda permitir que os equipamentos conectados nas suas portas cabeadas ou na rede sem fio se comuniquem. Meus roteadores são dois Tp-Links: TL-WR 2543ND e um TL-WR740N (um patrocínio em hardware da Tp-Link Brasil seria bem vindo). WDS de fabricantes diferentes é receita para problemas. Porém, não sei se estes "fabricantes diferentes" vale também para roteadores de fabricantes diferentes mas ambos com OpenWRT. Se o fabricante da wireless for o mesmo (atheros, broadcom), a chance de funcionar é grande. Como todos os meus são Tp-Links e atheros, não tive problemas.

O primeiro passo é criar uma nova rede wireless em um dos roteadores. Optei por configurar como o "master" meu roteador principal que está conectado na internet. Como são somente 2 roteadores, não faz diferença em quem será o mestre ou cliente.

É importante conhecer a diferença entre duas coisas: o rádio e a rede wireless. O rádio é a sua "placa wireless" dentro do roteador, em geral um só. A rede são configurações para usar este rádio, podendo existir várias. Em modelos recentes existe placas dual-band independentes, que permitiria configurações próprias para cada rádio. No meu caso, e para a maioria dos mortais, tenho um roteador com um rádio (o TL-WR 2543ND trabalha em 2.5GHz ou 5GHz mas não ao mesmo tempo). Com isto, todas as redes criadas compartilharão o mesmo canal, potência e demais atributos do rádio. Vamos à configuração.

Além desta conexão wireless entre os roteadores, pretendo manter a função de AP do roteador para meus clientes wireless convencionais. Portanto, vou adicionar uma nova rede e manter a antiga. Pela interface Web, no roteador escolhido para ser o "mestre", em configuração de rede, Wifi, clique em "Adicionar". Lembre-se que a parte superior é do rádio e, se alterada, aplica-se a todas as redes wireless. Na parte inferior temos a configuração da rede wireless. Escolha o tipo "Ponto de Acesso (AP) WDS". O nome é de sua livre escolha. Como quero estender a minha rede LAN, coloquei ela na interface LAN, junto com a rede wireless antiga e as portas LAN locais. Na parte de segurança, defina a criptografia e senha. Pode ser uma senha difícil pois ela será usada apenas mais uma vez.

A configuração pela interface Web adicionará estas linhas em /etc/config/wireless:
/etc/config/wireless: 
config wifi-iface
option device 'radio0'
option mode 'ap'
option ssid 'minha_rede_wds'
option wds '1'
option network 'lan'
option encryption 'psk-mixed'
option key 'minha_senha_super_secreta'
Não temos mais configurações no roteador master. Basta agora configurar o cliente WDS no outro roteador.

O cliente é um pouco mais complicado. Primeiro você precisa desativar as funcionalidades que caracterizam um roteador. A interface WAN não será usada e pode, inclusive, ser realocada como outra porta LAN. Se mantida e não usada, não terá problemas. O firewall também não deve ter uso pois a rede LAN não é normalmente protegida. O principal que precisa ser alterado é desativar o servidor DHCP para a rede LAN e usar um IP na mesma rede mas não conflitante com o outro roteador. O DHCP usado pelos clientes conectados neste roteador será do roteador principal. Vamos a configuração da rede.

Em Rede/Interfaces, edite a rede LAN. O IP fixo é o padrão. Se o primeiro roteador mantiver o IP original (192.168.1.1), use, por exemplo, 192.168.1.2. Configure como roteador e servidor DNS o roteador principal (192.168.1.1). No final da página, existe a opção para desativar o servidor DHCP nesta rede: "Desabilita DHCP para esta interface".

A configuração da rede wireless é similar à feita no roteador master. A diferença fica apenas no modo, que deve ser "Cliente (WDS)" e na possibilidade de especificar o BSSID (endereço MAC da interface wireless do roteador). Cuidado com o BSSID, que ele pode ser diferente para a rede principal, em modo AP, e as secundárias, em nodo "AP WDS". Segurança e rede são iguais ao feito no roteador principal. A configuração no cliente fica desta forma: 
/etc/config/wireless: 
config wifi-iface
option ssid 'minha_rede_wds'
option encryption 'psk2'
option device 'radio0'
option mode 'sta'
option bssid '92:F6:52:FF:FF:FF'
option key 'minha_senha_super_secreta'
option wds '1'
option network 'lan'
Neste momento, o roteador secundário está pronto para receber clientes cabeados. Eles terão o mesmo acesso dos clientes conectados por cabo no roteador principal, inclusive acesso à internet.

Uma das características do protocolo 802.11 é que, quando disponível mais de uma rede com o mesmo nome, os clientes devem escolher a com melhor qualidade ou mesmo mudar se uma delas estiver pior. Além de permitir o uso de clientes cabeados conectados no segundo roteador, quero que os clientes wireless possam usar este segundo roteador como um repetidor wireless. Por isto, configurei uma segunda rede wireless com exatamente as mesmas configurações da interface em modo AP do roteador principal. Por compartilhar o mesmo rádio da conexão WDS, o canal ainda será o mesmo.

Pronto, agora você pode utilizar um segundo roteador como uma extensão de sua rede cabeada e repetidor wireless. Com dois AP, você terá uma cobertura sem fio muito melhor, mesmo quando estiver perambulando. Ainda, se um dos roteadores estiver próximo da sua TV, home theather, você terá um sinal de qualidade mesmo com dispositivos sem fio de baixa recepção. Ou melhor, para que comprar o adaptador sem fio extremamente caro da sua TV? Você pode usar um cabo conectado ao roteador secundário! Posso apostar que a qualidade será muito superior.

Até a próxima.

sábado, 11 de maio de 2013

OpenWRT: Configurando memória swap

Mais um artigo da série sobre o OpenWRT.

Como sempre, o limitador do que pode ser feito em um roteador com OpenWRT é o seu hardware. Quanto ao processador, não temos o que fazer mas, em geral, ele é suficiente, exceto se você quiser fazer transcoding de vídeo em tempo real (não, não dá para fazer no seu roteador). O disco é um dos problemas mais incômodos e já foi tratado em um outro post. Neste foi apresentar a alternativa para contornar a falta de memória RAM.

Se você leu o artigo sobre fazer download de torrents no roteador, pode estar enfrentando problemas com a falta de memória. O sintoma é de processos que desaparecem e avisos de "out of memory" nas mensagens do kernel (dmesg). Pessoalmente, não tive problemas com memória e torrent pois meu roteador tem 64 MB de RAM, o dobro do normalmente disponível em modelos anteriores. Porém, enfrentei a falta de memória ao utilizar um servidor DLNA, enquanto ele varria os arquivos de vídeo.

A solução para a pouca disponibilidade de memória é a mesma faz muito tempo: jogar informações menos usadas em uma memória mais lenta, como o disco. No Linux, chamados esta área em disco de memória swap, ou área de troca. Alguns também chamam de "memória virtual", mas não gosto do termo por confundir a técnica de utilizar endereçamento virtual para regiões de memória.

Para configurar a swap, em primeiro lugar, você precisa de um local para armazená-la. Ele pode ser um disco montado remotamente (NFS), uma unidade remota (NBD) ou simplesmente uma unidade de armazenamento conectada na USB. Nem pense em usar a swap na flash interna do roteador. Além de ser mais escaço que a própria memória RAM, ela não é feita para ser reescrita um grande número de vezes e, se der problema, não é facilmente substituível. Por isto, o primeiro passo é ter acesso a esta unidade externa.

A swap no Linux pode ser implementada em qualquer coisa que se assemelha, na filosofia UNIX, a um arquivo: um arquivo no sistema de arquivos, uma partição, um disco inteiro. A forma mais simples é utilizar uma partição dedicada para esta função.

Reparticione seu disco e deixe uma pequena partição para a swap. Faça com sua ferramenta de particionamento favorita (partition magic, gparted). Pode, inclusive, ser pequena, como 128 MB. Se quiser exagerar, 1 GB é muito mais do que o seu roteador um dia pensou em usar. O problema de ter muita memória swap é quando um processo se perde e começa a usar indefinidamente memória. Quanto maior a memória, mais tempo até o processo conseguir encher a memória e ser morto pelo kernel.

A partição tem que ter o identificador de uma partição swap. Em hexadecimal, é o valor 0x82. Isto é feito com as ferramentas de particionamento, mas pode também ser feito mais adiante com o fdisk, inclusive se instalado no roteador. A saída de um comando "fdisk -l" deve ter uma linha similar a em destaque abaixo:
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63   123758591    61879264+   7  HPFS/NTFS/exFAT
/dev/sdb2       125853210  2928904191  1401525491    f  W95 Ext'd (LBA)
/dev/sdb3       123758592   125851647     1046528   82  Linux swap
Com a partição pronta e com a identificação correta, é o momento de "formatar" a partição. O formatar para uma partição swap é basicamente escrever uma assinatura no começo do disco. É bem rápido. Também é interessante definir o nome da partição, que pode ser usado para referenciá-la mais adiante (no exemplo, "minhaswap").
mkswap -L minhaswap /dev/sdb3
O /dev/sdb3 é o dispositivo da sua partição, como listado na saída do comando "fdisk -l". Para utilizar a swap no seu roteador, você precisará dos utilitários básicos para swap, como o mkswap. Instale o pacote swap-utils.
opkg updateopkg install swap-utils

Agora é a hora de testar a swap. Ative-a com o comando swapon:
swapon /dev/sdb3
Você poderá ver o espaço disponível pelo comando free:
# free             total         used         free       shared      buffersMem:         61700        60480         1220            0         1160-/+ buffers:              59320         2380Swap:      1046524        18884      1027640

Se a linha swap estiver zerada, não está funcionado. Caso contrário, você já estará usando sua nova swap. Contudo, esta configuração feita pelo swapon é volátil. Ao reiniciar o roteador, ela será perdida. Para ativar automaticamente, vamos usar o mesmo recurso que usamos para montagem de disco externo: o arquivo /etc/config/fstab. No arquivo, é possível configurar a montagem de uma swap. A configuração é um pouco mais simples do que partições de arquivos pois não precisa especificar onde será montada. Basta adicionar:
/etc/config/fstab:
config swap
option label "minhaswap"
option enabled 1

Note que o "label" é o mesmo que foi definido ao formatar a partição. Assim como o caso de uma partição de arquivos, também poderia referenciar o disco pela opção "device" ou "uuid". Alternativamente, existe também a opção autoswap, que ativará qualquer partição com identificação 0x82 e formatada como swap.

/etc/config/fstab: 
config global autoswap
option from_fstab 0
option anon_swap 1
Reinicie o roteador para garantir que tudo funciona após reiniciar. Observe se o espaço da swap estará disponível pelo comando free.

Pronto! Pode abusar de seu roteador que agora ele terá memoria extra, mas mais lenta, para suas tarefas.

Peraí, mas não quero mexer com partições! Tem como fazer com um arquivo simples? Tem sim. Em primeiro lugar, crie um arquivo com o tamanho da swap desejada. Use o dd para isto. O tamanho é passado pela opção "count" e é em blocos de 512. Sendo assim, por exemplo, escolha 2 par 1K, 2000 para 1M, 200000 para 100M, e assim por diante. Para uma swap de 50 MB, use:
dd if=/dev/zero of=/mnt/meudisco/swap count=100000
O arquivo /mnt/meudisco/swap deve ficar no disco externo e será, incialmente, completamente zerado. Vai demorar um pouco se for feito no roteador. Depois, você poderá usar os comandos "mkswap" e "swapon" diretamente sobre o arquivo:
mkswap /mnt/meudisco/swapswapon /mnt/meudisco/swap
O problema desta abordagem é que, por não poder usar o /etc/config/fstab, vai se perder ao reiniciar o roteador. Você precisará executar o swapon toda vez que o roteador foi ligado, ou colocar em alguns script como o "/etc/rc.local".

Até a próxima.

quarta-feira, 8 de maio de 2013

OpenWRT: Utilizando conexões wireless para ligar duas redes - conceitos


Como este post vai ficar um pouco longo, vou dividi-lo em partes. Nesta vou apresentar o problema. Nas próximas vemos as configurações.

Um dos problemas mais comuns de redes wireless é a cobertura do sinal. Vigas, vidro e diversas coisas desconhecidas podem prejudicar seu sinal. Além disto, o sinal do seu equipamento receptor pode não ser uma das melhores maravilhas. Notei isto logo que recebi minha SmartTV. A qualidade do sinal wireless é péssima. A solução para problemas de cobertura são basicamente: reposicionar seu roteador, melhorar a antena e aumentar a potência.


Também comprei um home theater que tem rede mas a wireless é paga "a parte", e muito cara. Isto é comum também nas TVs, mas não é o meu caso. Pelo preço, prefiro comprar outra coisa. Para solucionar o problema de cobertura e para substituir a necessidade de "módulo wireless", optei por adicionar um segundo roteador.

Roteador como AP


O que, em geral, temos em casa é um roteador wireless, que faz o papel de uma ponte da rede sem fio com as portas da rede LAN cabeada (função AP). A função "roteador" é composta de outras funcionalidades como NAT, DHCP, firewall, fazendo a interligação da rede LAN, cabeada ou sem fio, ao mundo externo, geralmente conectado na porta WAN. Portanto, um roteador wireless inclui as funções de um AP simples. Para usá-lo como somente um AP, basta não usar a porta WAN e desativar o DHCP (não preciso nem dizer que dois servidores DHCP ligados em uma mesma rede é receita para desastre). Isto é comum quando o roteador é fornecido pela telecom (roteador ADSL). Achei esta figura que ilustra como ficaria a conexão entre os dois roteadores (e um modem cabeado):


Fonte:https://lantechca.files.wordpress.com/2011/05/add-wireless-ap.png

Mas essa é a melhor forma de ligar os dois roteadores? Sim. E se eu ligar a LAN do roteador da esquerda na WAN do roteador da direira? Sim, pode funcionar. Se as redes LAN dos dois roteador não forem conflitantes (ex: 10.0.0.0/24 e 192.168.1.0/24), você terá conectividade. Porém, você estará fazendo duas vezes a NAT. Se a NAT é ruim para as aplicações pear-to-pear (skype, torrent, emule), duas é um desastre. Não existe técnica de transversão NAT que ajude. Além disto, computadores que estiverem conectados nas portas LAN do roteador da esquerda não irão "enxergar" os computadores conectados no roteador da direita, seja por cabo ou sem fio (mas o inverso sim). E, para os que gostam de jogar online, vai ter ainda mais latência. Ah, e nada de IPv6 no roteador da direita.

Múltiplos access-point wireless

A tecnologia sem fio 802.11 já foi pensada na possibilidade de um usuário se deslocar ao longo de um determinado local, onde o sinal é fornecido por uma série de equipamentos. O princípio é bem simples: quando existir mais de uma rede com as mesmas características (nome, segurança, senha), é função do equipamento cliente escolher o access-point que forneça o melhor sinal. Isto sem mesmo informar a desconexão ao usuário. No máximo deve ser sentido uma pequena engasgada durante a nova autenticação. Tudo isto funcionará se as estações sem fio estiverem operando como APs e compartilharem a mesma rede local.

Aproveitando, independente do OpenWRT, se for construir uma pequena rede sem fio composta de uma série de APs conectados a uma mesma rede e que usam a mesma senha, não escolha SSID diferentes para cada uma! Só vai te atrapalhar e dificultar a vida do usuário.

Roteador Wireless e AP fornecendo múltiplos access-point wireless

Agora vamos juntar os dois conceitos: roteador operando como AP e mais de uma estação fornecendo a mesma rede sem fio. Voltando a figura anterior, se o roteador "Router" fosse substituído por um roteador wireless, você teria dois provedores do sinal da sua rede sem fio. Um seria o roteador principal, operando como roteador da rede e estação wireless, e o segundo roteador wireless operando apenas como um AP. A interconexão entre os dois é feita através de um cabo convencional. Para qualidade de conexão, é a melhor situação. Os equipamentos conectados, seja por cabo ou sem fio, em ambos os roteadores irão enxergar qualquer outro equipamento conectado.

Para ajudar a melhorar o sinal da rede sem fio, os dois roteadores wireless precisam ficar afastados. Passar um cabo de rede longo pode não ser o que a maioria deseja. Inclusive eu. Não seria melhor que os dois roteadores se comunicassem pela rede sem fio? Seria ótimo! Mas tem alguns problemas ao utilizar redes sem fio para ponte. Vamos simplificar na situação onde é desejado conectar duas áreas de rede, com diversos computadores, através de uma conexão wireless.

Interligando dois setores de rede por conexão wireless

A tecnologia Ethernet cabeada e sem fio operam de maneira diferente. Tanto na cabeada quanto na sem fio, os equipamentos são identificados por um endereço físico (MAC). Por um cabo podem trafegar inúmeras conversas entre computadores diversos. Já em uma conexão sem fio, o access-point wireless somente aceitará dados oriundos do mesmo endereço MAC do cliente que fez a conexão. Isto é um problema? Não para o uso comum. Sim para o nosso caso. Vejamos a figura seguinte, onde é mostrado dois computadores conectados por cabo em equipamentos wireless (um em modo cliente e outro access-point) e estas conversando por sinal wireless:

Fonte:https://wiki.openwrt.org/doc/howto/clientmode

O computador "Bridged Host" está conectado por cabo no cliente wireless "W-LAN Client". Este está conectado como um cliente wireless no "W-LAN AP" que, por fim, conecta em um segundo computador "Target". Esta seria a tentativa de conversa entre "Bridged Host" e "Target":
  1. "Bridged Host" prepara um pacote para "Target"  colocando seu endereço MAC de origem e o MAC do computador "Target" como destino. O pacote é enviado à estação "W-LAN Client".
  2. A estação "W-LAN Client" recebe o pacote e o envia para "W-LAN AP". Porém, antes de enviar, ela troca o MAC de origem, antes com o MAC do "Bridged Host", pelo seu próprio MAC. Caso contrário, a estação "W-LAN AP" não aceitaria.
  3. A estação "W-LAN AP" recebe o pacote e o retransmite para o computador "Target".  Pelo endereço MAC de origem, "Target" acha que quem está falando com ele é "W-LAN Client" e não "Bridged Host".
  4. A resposta é enviada para "W-LAN AP"
  5. "W-LAN AP" retransmite o pacote sem modificação pois a limitação de usar seu próprio MAC é dos clientes e não da estação.
  6. "W-LAN Client" não sabe do que se trata tal pacote e ignora
  7. "Bridged Host" nunca recebe uma resposta
Existem algumas soluções para este problema. Vou mostrar as mais interessantes.

WDS - Wireless Distribution System

A solução mais limpa e elegante é utilizar a tecnologia WDS. Com ela, a comunicação entre os equipamentos wireless preservam o MAC de origem. A figura é igual a anterior, com a diferença que, na comunicação entre o "W-LAN Client" e "W-LAN AP", é utilizado o padrão WDS.


Fonte:https://wiki.openwrt.org/doc/howto/clientmode

A figura mostra que existem 4 endereços MAC em todos os pacotes na comunicação wireless WDS: origem e destino das placas sem fio, e origem e destino dos dados. Assim, a informação das entidades envolvidas não é perdida e a comunicação pode se realizar. Porém, WDS depende da implementação do driver e dos softwares envolvidos. Se ambos forem o mesmo equipamento e com OpenWRT, não é problema. Se for com fornecedores diferentes, pode não funcionar.

Ponte com NAT (possivelmente duplo NAT)

Uma segunda solução seria transformar o equipamento "W-LAN Client" em um roteador, traduzindo os endereços por NAT.

Fonte:https://wiki.openwrt.org/doc/howto/clientmode

A conexão "W-LAN Client" funcionaria como uma conexão WAN. Isto é possível com o OpenWRT. Porém, seria a mesma situação do caso onde a ligação entre o roteador da internet e o roteador wireless era feita pela porta WAN: você terá duas NAT, os computadores da rede azul não falarão diretamente com os computadores da rede vermelha, exceto se existir um encaminhamento de porta.

Roteamento entre Redes

Uma última sugestão apresentada aqui seria o uso de roteamento. Ao invés de esconder os computadores atrás de uma NAT, usar uma outra subrede e configurar rotas estáticas nos roteadores da rede azul e vermelha.

Fonte:https://wiki.openwrt.org/doc/howto/clientmode


Esta é uma solução mais complexa de ser implementada. Porém, preserva a conectividade. Ainda assim, os computadores não estarão na mesma rede e algumas facilidades como a descoberta automática de serviços na rede local não irá funcionar entre as redes.

Ainda existem outras soluções como a utilização de um aplicativo que rastreia as conversas que passam pelo "W-LAN Client" e fazem a tradução dos endereços e outras alternativas baseadas em protocolos proprietários. Porém, acho que as 3 propostas apresentadas aqui são as mais recomendadas na maioria das situações.

No próximo artigo vou mostrar como transformar um segundo roteador em uma ponte entre as redes cabeadas e, ao mesmo tempo, um repetidor de sinal wireless.

Até a próxima.

quarta-feira, 1 de maio de 2013

OpenWrt: 12.09 chegou! Como faço o Upgrade?

Depois de um ano e pouco desde o último lançamento de uma versão estável (10.03.1), foi lançado o OpenWRT 12.09. Já sou usuário desta versão faz um bom tempo, desde o seu tempo de beta e RC. Recomendo-o aos atuais usuários do OpenWRT.

Como sempre, temos diversas melhorias, novas plataformas e modelos suportados na versão estável, pacotes atualizados. O kernel passou para 3.3, a interface deu uma melhorada, mais funcionalidades no firewall, mais fácil usar uma unidade externa como raiz, e assim vai...

Com a evolução do código, também ocorre outro efeito: algumas plataformas antigas são descontinuadas. Isto ocorreu para as plataformas que usavam driver fechado do fabricante atrelados ainda ao kernel 2.4 e sistemas com pouca memória RAM (16 MB). Em geral, isto não será problema aos roteadores comprados nos últimos anos. Também talvez não faria sentido atualizar seu roteador antigo pois sem memória RAM ele não teria recurso para usar grande parte das melhorias. É a sina da obsolescência programada.

Agora para quem possui um roteador compatível e já usa OpenWRT, deve estar coçando para atualizar. E como faço isto?

A escolha da imagem segue o mesmo princípio que é usado para escolher a imagem da primeira instalação. Selecione a imagem pela arquitetura, modelo e versão do hardware. Como sempre, recomendo a versão squashfs, que possui modo de recuperação. A diferença entre a primeira instalação e esta é que não será usada a imagem "factory" e sim a "sysupgrade". E muito importante, leia a wiki do seu roteador! Pode existir algo muito importante ali como o problema com o TL-MR3420 na versão 10.03.1.

Bem, se eu simplesmente ir na interface, fornecer a nova imagem, ele vai funcionar? Provavelmente, mas talvez não é a maneira que dê menos trabalho. Vamos a algumas sugestões:

Em primeiro lugar, faça um backup geral do seu sistema. Sugiro três coisas diferentes: backup gerado pelo openwrt, lista de pacotes instalados e todos os arquivos do overlay.

A primeira e mais simples é o backup gerado pelo openwrt. Este é obtido na mesma página de atualização de firmware do seu roteador. Ele contém uma seleção prévia de várias configurações, inclusive tudo que está em /etc/config. Contudo, o backup não irá manter todos os arquivos modificados em /etc ou em outro lugar. Por exemplo, se você fez alguma modificação no /etc/dnsmasq.conf, ele não será preservado. Se criou um script em /bin ou para os botões em /etc/hotplug.d/button, ele não será preservado. Para incluir estes e outros casos, informe o caminho destes arquivos extras em /etc/sysupgrade.conf. Na interface WEB também tem a edição deste arquivo, no mesmo local da atualização da firmware, na parte de configuração. Gere um arquivo de backup novo e verifique se tudo que você quer está lá dentro. Somente estes arquivos serão preservados em um upgrade.
Dica: olhe todo o conteúdo em /overlay. Ele terá tudo o que foi modificado. Cuide principalmente dos arquivos em /etc.
Porém, o backup do openwrt não é feito para guardar os programas instalados. Ele se limita a scripts, dados e arquivos de configuração. Programas instalados por pacotes devem ser reinstalados manualmente. Por isto a próxima sugestão.

A segunda sugestão é gerar uma listagem de todos os pacotes instalados. Esta pode ser obtido pela interface web ou pelo comando "opkg list-installed". Ela será usada de referência para reinstalar todos os seus programas. Como os programas não serão preservados (somente suas configurações e se estiverem no backup) você terá que reinstalá-los. Em geral, é uma meia dúzia de programas.

A terceira sugestão é fazer um backup completo de todo o /overlay. Afinal de contas, falamos de poucos megabytes mas dentro deles podem estar algumas horas de trabalho. A cópia pode ser feita com um tar. É provavel que você não tenha espaço para criar este tar diretamente no roteador. Você terá que fazê-lo jogando em um disco externo conectado pela USB ou, a forma que eu geralmente uso, diretamente pela rede. Pela rede seria assim:
meucomputador$ ssh root@roteador tar -czv /overlay | cat > overlay.tar.gz
A vantagem deste backup é que, se esquecer de colocar algo em /etc/sysupgrade.conf, você poderá recuperá-lo do arquivo tar.gz. Também, se precisar retornar ao firmware antigo, você já teria uma partição overlay pronta. Bastaria instalar a firmware antiga e jogar o conteúdo da overlay por cima.

Agora, finalmente, você está pronto para enviar a nova firmware. Se você usa um espaço externo para expandir o disco, leia até o final deste post. Faça o upgrade pela interface web ou pelo terminal. Inclusive, você pode baixar o arquivo diretamente no roteador. Ex:
cd /tmp
wget http://downloads.openwrt.org/attitude_adjustment/12.09/..../openwrt...xxx...img
sysupgrade openwrt...xxx....img 
E esperar para ver. Se optar por preservar as configurações, tudo que seria guardado em um backup do sistema, inclusive o que está listado em /etc/sysupgrade.conf, será automaticamente levado ao novo sistema. Depois de o sistema iniciar na próxima versão e estiver funcionando, é hora de retornar os programas antigos. Gere uma nova listagem dos programas instalados e compare com a listagem anterior.
Dica: vimdiff instalados.antigo.txt instalados.novo.txt
A mudança nas versões dos pacotes é esperada e pode ser desconsiderada. Para facilitar, tente instalar primeiro os pacotes que dependem de outros, como os pacotes luci-app-*, antes de instalar os demais. É provável que, pela cadeia de dependências, grande parte será automaticamente instalada. Repita a geração dos programas instalados, a comparação e a instalação até estar satisfeito.

Por fim, faça um novo backup geral. É sempre bom preservar o seu trabalho. 

Hum, e eu que uso um disco externo para expandir o espaço interno? É um pouco mais complicado. Ao atualizar o sistema, os módulos e programas que fariam o uso do disco externo irão parar de funcionar. Você precisaria reinstalá-los. Esta é a sugestão de como proceder:

Em primeiro lugar, gere todos os backups sugeridos anteriormente. É importante preservar seu trabalho anterior. Ainda sem instalar, reinicie o sistema sem o disco externo. Com isto, ele vai usar somente a flash interna (com a configuração que você tinha antes de usar o disco externo). Faça todos os backups novamente, preservando os anteriores. Agora à instalação.

Ainda com o disco externo desconectado, instale a nova firmware. Refaça a configuração de uso do disco externo (que no mínimo será reinstalar os pacotes necessários). No disco externo, na partição usada como overlay, remova todo o conteúdo ou mova tudo para um subdiretório afim de que este não seja usado. Como sugestão, crie um "owrt-10.03.1" e mova tudo para lá. Em seguida, popule novamente este disco da mesma maneira sugerida no artigo de expansão do disco interno (usando o tar). Reinicie o sistema.

Neste ponto, você ainda terá as mesmas configurações que tinha quando usou o sistema sem o disco externo. Envie o primeiro backup da versão anterior feito ainda com o disco externo e siga os passos de reinstalação dos pacotes, assim como é feito para ambientes sem o disco expandido. Complete o trabalho com aquele backup final.

Espero que apreciem a nova versão. De agora em diante, vou apenas focar em configurações específicas do 12.09, que ainda podem funcionar no 10.03.1.

Até mais.