Liberte ainda mais potência do seu router doméstico com o Mod-Kit DD-WRT
Nós já mostramos a você como modificar seu roteador doméstico com o firmware alternativo DD-WRT para melhorar muito o desempenho, e hoje vamos mostrar a você como levá-lo ainda mais adiante com o DD-WRT Mod-Kit.
Se você ainda não o fez, verifique e confira os dois artigos anteriores da série:
- Transforme seu roteador doméstico em um roteador super-alimentado com DD-WRT
- Como aumentar o sinal da sua rede Wi-Fi e aumentar o alcance com o DD-WRT
Supondo que você esteja familiarizado com esses tópicos, continue lendo. Tenha em mente que este guia é um pouco mais técnico, e os iniciantes devem ter cuidado ao modificar seu roteador.
visão global
Este guia fornecerá um resumo passo a passo de como criar seu próprio firmware DD-WRT com modificações e adições usando o “kit de modificação de firmware”.
O kit de modificação de firmware permite fazer modificações no firmware sem compilá-lo a partir da fonte. Fazer alterações dessa maneira, com o auxílio dos scripts fornecidos, torna-se uma simples questão de baixar, substituir e excluir alguns arquivos.
A razão mais predominante para usar este método é porque ultimamente o suporte do DD-WRT para os pacotes Openwrt IPKG mudou para roteadores que possuem discos rígidos (via USB), o que torna o mod-kit a única maneira consistente de instalar pacotes IPKG com sucesso para casos em que um HD não está disponível. Além disso, este método tem a vantagem adicional de aliviar você da dependência do JFFS para instalação de pacotes, que para roteadores com apenas 4MB de flash é um problema real.
Imagens por publicenergy
Objetivos
Embora as instruções para este procedimento estejam detalhadas no wiki do DD-WRT e no site do desenvolvedor, nosso objetivo é tornar este guia um procedimento de copiar e colar que qualquer um pode usar para atingir os seguintes objetivos:
- Instale o pacote knockd e suas dependências.
- Instalar o pacote ssmtp com configurações geradas baseadas em NVRAM.
- Opcionalmente, com suporte para TLS smtp (também conhecido como suporte do Gmail).
Uma vez que você tenha seguido este procedimento, deve ser bem simples adaptá-lo para outras instalações de pacotes..
Aviso: Pise levemente… tenha em mente que o uso incorreto do kit de modificação pode deixá-lo com um roteador que precisa de remover tijolos (por sua vez, em um tijolo inútil). No entanto, se você é um geek verdadeiro, você provavelmente concorda com a ideologia de que, quem pode destruir uma coisa, controla uma coisa, e apenas geeks verdadeiros fazem isso.
Pré-requisitos
- Usando este procedimento pode tijolo seu roteador, como no seu roteador inutilizável, Não nos responsabilizamos por quaisquer danos que possam ser causados diretamente ou de outra forma devido ao uso dos procedimentos abaixo..
- Este procedimento foi executado em sistemas baseados em Debian (Lenny, Squeeze e Mint) e as instruções abaixo assumem que você está usando um também.
- Este procedimento é recomendado apenas para pessoas que tenham experiência com o flash do seu roteador com DD-WRT, com todos os pré-requisitos, advertências e limitações que se aplicam à sua configuração de hardware. um bom lugar para começar seria o nosso Roteador residencial para um roteador super-alimentado com guia DD-WRT.
- Seu roteador deve suportar pelo menos a versão "mini" do DD-WRT.
- Este procedimento foi criado e testado em roteadores Linksys WRT54GS / L, se você usa roteadores de outros fornecedores, sua milhagem pode.
Configuração
Instalando Pacotes Necessários
O kit de modificação de firmware tem algumas dependências para compilar e trabalhar. Para instalar / atualizar todos de uma vez Emita este comando em um terminal:
sudo aptitude instalar gcc g + + binutils patch bzip2 flex bison fazer gettext descompactar zlib1g-dev libc6 subversion
Baixe o mod-kit
Crie uma subpasta e obtenha o kit do SVN oficial:
mkdir firmware_mod_kit
cd firmware_mod_kit
svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-somente leitura
cd firmware-mod-kit-somente leitura / trunk /
Baixe um firmware para trabalhar
A primeira coisa a considerar é qual versão você quer usar?
Uma regra geral é: quando estiver em dúvida, use “mini”. Isso ocorre porque, desde que o seu roteador suporte pelo menos a versão "mini", o uso fornece todos os recursos mais usados sem qualquer erro de gravação. deixando assim tanto espaço para os procedimentos como até mesmo algum espaço JFFS para outros usos na maioria dos casos.
Uma vez que você tenha decidido sobre uma versão, recomenda-se usar a revisão mais recente do firmware disponível, pois eles tendem a ter muitas correções de bugs em comparação com suas contrapartes “estáveis”..
No momento em que este artigo foi escrito, o mais recente foi “03-17-11-r16454” e esta revisão é usada nos comandos que seguem.
wget http://www.dd-wrt.com/dd-wrtv2/downloads/others/eko/BrainSlayer-V24-preSP2/2011/03-17-11-r16454/broadcom/dd-wrt.v24_mini_generic.bin
Para facilitar o acompanhamento de qual versão estamos usando, renomeie o arquivo baixado para representar seu número de versão:
mv dd-wrt.v24_mini_generic.bin dd-wrt.v24_mini_generic-03-17-11-r16454.bin
Isto é obviamente opcional, mas os comandos abaixo assumem que você renomeou o arquivo.
Extraindo o firmware
Para poder alterar arquivos dentro do firmware, precisamos extrair seu conteúdo em um diretório temporário.
A sintaxe deste comando é:
./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
No nosso caso, isso se traduziria em:
./extract_firmware.sh dd-wrt.v24_mini_generic-03-17-11-r16454.bin ./working_dir_mini1
Nota: A primeira vez que você executa este comando, ele cria as ferramentas mod-kit em seu sistema. isso acontece apenas uma vez e pode demorar um pouco ... então seja paciente ...
Instalando pacotes
Agora que o firmware é extraído, podemos instalar os pacotes nele.
Em geral, o procedimento é baixar o pacote e suas dependências na forma de um arquivo ipk do repositório openWRT. Uma vez baixado, instale-os no firmware extraído usando o script fornecido.
O pacote knockd
Instruções detalhadas sobre como configurar e usar o Knockd serão detalhadas em um artigo futuro, então você pode optar por pular esta etapa por enquanto ou fazê-lo em preparação para o futuro, já que o Knockd não ocupa muito espaço.
Knockd é um daemon que ouve eventos de comunicação na camada de link para seqüências e age sobre eles.
O que isto significa, é que você pode ter o dispositivo executando o daemon nem mesmo “escutar” as portas (uma varredura de porta não as verá como abertas) e ainda fazê-lo fazer algo que você precisa, desde um único comando até para um script completo. Usando essa técnica, você pode acionar o servidor para executar qualquer tipo de operação que precisar dele remotamente (pela Internet) sem expor sua rede doméstica..
Knockd tem apenas uma dependência listada, então baixe o pacote e sua dependência emitindo:
wget http://downloads.openwrt.org/backports/rc5/knockd_0.5-1_mipsel.ipk
wget http://downloads.openwrt.org/whiterussian/packages/libpcap_0.9.4-1_mipsel.ipk
Instale o "daemon knock" (knockd) ipk no firmware:
./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/
Instale o “pacote de captura” (libpcap) ipk no firmware:
./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/
Como “knockd” pode ser invocado com um arquivo de configuração alternativo (como será explicado em um artigo futuro), não há necessidade de executar qualquer outra operação e você pode pular para a seção de construção de firmware, se tudo o que você queria instalar.
O pacote SSMTP
O pacote SSMTP permite que o seu roteador envie mensagens de e-mail como mostramos em Como usar o Gmail ou o SMTP para servidores. Nós prometemos a você que mostraremos como configurar isso para o DD-WRT e agora vamos entregar.
Isso é útil principalmente se você vai criar scripts no roteador que gostaria de receber feedback sobre sua operação via email.
A configuração deste pacote é um pouco mais complexa do que nos sistemas Linux normais devido à limitação imposta por um sistema embarcado, portanto, respire fundo ... pronto?…. vamos lá… :)
Baixe o pacote:
wget http://downloads.openwrt.org/backports/rc5/ssmtp_2.61-1_mipsel.ipk
Instale o ipk “ssmtp” no firmware:
./ipkg_install.sh ssmtp_2.61-1_mipsel.ipk ./working_dir_mini1/
Suporte TLS (Opcional)
O SSMTP não lista quaisquer outros pacotes como suas dependências, no entanto, se você quiser usar um gateway SMTP que exija autenticação TLS (por exemplo,. Gmail), você também tem que instalar o pacote openSSL.
Nota: Há um enorme recua para fazer isso na forma de espaço consideravelmente reduzido no roteador para JFFS mais tarde. Ou seja, o pacote openSSL ocupa cerca de 500K de espaço do seu total de 4MB (para um roteador de suporte normal não “mega”), composto por uma sobrecarga de JFFS e você descobrirá que sua esquerda com, mas alguns blocos preciosos, espaço livre do JFFS (cerca de 60 KB no WRT54GL).
Como ainda não há TLS que exija servidores SMTP lá fora (geralmente o seu ISP), sugiro tomar um minuto para pensar se você realmente precisa usar o TLS que requer gateway.
Se você decidiu ativar o suporte a TLS apesar de sua desvantagem, baixe o pacote openSSL:
wget http://downloads.openwrt.org/whiterussian/packages/libopenssl_0.9.8d-1_mipsel.ipk
Instale o ipk “openSSL” (libopenssl) no firmware:
./ipkg_install.sh libopenssl_0.9.8d-1_mipsel.ipk ./working_dir_mini1/
Configurações
Existe uma limitação com o pacote SSMTP, que não é possível invocá-lo com um arquivo de configuração alternativo.
Como o firmware é somente leitura quando está no roteador, isso significa que, fora da caixa, só podemos codificar a configuração no firmware.
No entanto, e se não quisermos passar por todas as etapas de modificação do firmware, apenas para alterar as configurações de e-mail? (por exemplo, uma mudança de senha).
Para esse fim, tanto Jeremy (o criador do firmware mod-kit) quanto eu chegamos à conclusão (independentemente se eu puder acrescentar humildemente) que a única maneira sensata de fazer isso seria:
- Faça o local dos arquivos de configuração que o pacote ssmtp aponta para o local somente leitura em etc, aponte para o diretório tmp que pode ser gravado em tempo de execução.
- Crie um script que geraria dinamicamente as configurações baseadas nas variáveis NVRAM na inicialização.
Para conseguir isso, algumas etapas adicionais são necessárias ...
Symlink o diretório de configuração ssmtp
Como explicado acima, precisamos fazer o / etc / ssmtp localização no roteador, aponte para / tmp diretório como seu único local gravável que temos no roteador em tempo de execução. Para fazer isso, exclua o diretório ssmtp que foi criado pelo instalador do ipk:
rm -rf ./working_dir_mini1/rootfs/etc/ssmtp/
Crie um novo link simbólico que aponte o / etc / ssmtp no sistema de arquivos raiz do roteador para apontar para / tmp / etc / ssmtp como um caminho absoluto:
ln -s / tmp / etc / ssmtp / ./working_dir_mini1/rootfs/etc/ssmtp
Nota: Mesmo que isso pareça ilógico agora, porque estamos apontando o diretório de configuração do pacote para um local fora do diretório de trabalho do kit de modificação de firmware, garanto que isso parece totalmente correto do ponto de vista do roteador em tempo de execução.
Um script de inicialização
Embora seja completamente possível não injetar esse script no firmware e executá-lo como um script de inicialização mais tarde, eu sinto que é apropriado colocá-lo aqui apenas como um exemplo para uso futuro.
Originalmente Jeremy criou o script sob medida para o pedido de alguém, mais tarde, ajustei e ampliei para que ele fosse mais compatível com os relatórios DD-WRT e syslog.
Crie o novo script de inicialização (inicialização):
vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Nota: Você pode usar outro editor, eu uso vi porque é consistente com o que está disponível no roteador…
Faça disso o seu conteúdo:
#! / bin / sh
#
# title: ssmtp_nvram.sh
# autor: Jeremy Collake e Aviad Raviv
# site: http://www.bitsum.com, http://howtogeek.com
#
# script para construir o arquivo de configuração do nvram vars.
# funcionará com qualquer arquivo de configuração que use
# var = pares de tipos de valor.
#
# usa prefixos para variáveis nvram.
#
# isto é.
# ssmtp_hostname = something
# converte para ssmtp.conf
# hostname = something
#
logger_func ()
logger -s -p local0.notice -t SSMTP_init $ 1
logger_func "########### Iniciou a execução do init do SSMTP ###########"
logger_func "Criando o diretório etc em / tmp"
[! -d / etc / ssmtp /] && mkdir -p / tmp / etc / ssmtp /
CONFIG_FILE = / etc / ssmtp / ssmtp.conf
NVRAM_PREFIX = ssmtp_
PACKAGE_NAME = "echo $ NVRAM_PREFIX | sed" s / _ / / "
logger_func "Gerando $ CONFIG_FILE para o pacote $ PACKAGE_NAME"
#echo $ 0: gerando $ CONFIG_FILE para o pacote $ PACKAGE_NAME
echo "#! / bin / sh"> $ CONFIG_FILE
echo "#" >> $ CONFIG_FILE
echo "# gerado automaticamente com base no nvram por $ 0" >> $ CONFIG_FILE
echo "#" >> $ CONFIG_FILE
if [-z "'nvram show | grep ssmtp'"]
então
logger_func "Parece que você não definiu as variáveis NVRAM necessárias para gerar o arquivo conf"
logger_func "** Considere ** usando estes comandos em seu script de inicialização:"
logger_func "nvram set [email protected]"
logger_func "nvram set ssmtp_mailhub = smtp.gmail.com: 587"
logger_func "nvram set [email protected]"
logger_func "nvram set ssmtp_UseSTARTTLS = YES"
logger_func "nvram set ssmtp_AuthUser = nome de usuário"
logger_func "nvram set ssmtp_AuthPass = password"
logger_func "nvram set ssmtp_FromLineOverride = YES"
logger_func "crie as variáveis NVRAM e execute novamente o script de inicialização ou reinicialize para que as configurações tenham efeito."
sair 0
fi
################################################## #########
#
# loop principal
#
SED_COMMAND = "s / $ NVRAM_PREFIX / /"
CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
para i em $ CONFIG_VARS; Faz
echo $ i >> $ CONFIG_FILE
feito
################################################## #########
#
# teste de sanidade
#
E se [ ! -f "$ CONFIG_FILE"]; então
# echo "$ 0: ERRO - não foi possível criar o $ CONFIG_FILE. Talvez não exista um symink / etc / XXXX -> / tmp / etc / XXXX?"
logger_func "ERRO - não foi possível criar o $ CONFIG_FILE. Talvez não exista um symink / etc / XXXX -> / tmp / etc / XXXX?"
fi
logger_func "########### Concluiu a execução do init do SSMTP ###########"
Torne-o executável:
chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Tome nota das variáveis de espera NVRAM no script, é nossa responsabilidade dar-lhes algo para trabalhar depois de ter instalado o nosso firmware modificado no roteador.
Construa o Firmware modificado
Agora que tudo está no lugar, é hora de re-empacotar o firmware modificado em um binário compactado que podemos piscar para o roteador.
A sintaxe do script "build.sh" é:
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY
Para fazer isso, usamos o script fornecido, então, emita:
./build_firmware.sh output_mini1 ./working_dir_mini1/
Uma vez que a operação “build” é feita, haverá várias imagens de firmware esperando para serem usadas no diretório “output”.
Agora você pode atualizar o arquivo chamado “custom_image_00001-generic.bin” para o seu roteador como faria normalmente com um firmware DD-WRT.
Nota: Não se esqueça de restaurar para "padrões de fábrica" antes, durante e logo após o flash do firmware.
Poste os passos do flash
Como fizemos o pacote SSMTP procurar por variáveis NVRAM para gerar o arquivo de configuração ssmtp, agora precisamos fornecê-lo com as informações ausentes.
Nós vamos conseguir isso usando a função "Executar comandos" da web-GUI.
Vá para a web-GUI -> “administração” -> “comandos” -> cole na caixa de texto o seguinte:
nvram set [email protected]
conjunto nvram ssmtp_mailhub = smtp.gmail.com: 587
nvram set [email protected]
nvram set ssmtp_UseSTARTTLS = YES
nvram set ssmtp_AuthUser = seu-gmail-user-name (sem o @ gmail.com)
nvram set ssmtp_AuthPass = você-gmail-password
nvram set ssmtp_FromLineOverride = YES
nvram commit
Substitua o texto após o sinal de igual (=), com suas informações reais e, em seguida, clique em "Executar comandos".
Nota: se o seu usando um regular, não TLS usando, servidor smtp a porta a utilizar é 25 em vez de 587.
Agora que as informações do SSMTP estão prontas para uso, você precisará invocar o script de inicialização. Então você pode reiniciar o roteador ou colá-lo na caixa de texto "comandos":
/etc/init.d/S80ssmtp
Em seguida, aperte "Executar comandos" novamente.
A saída deste comando deve se parecer com:
Teste que você pode enviar e-mail
Novamente cole isso na caixa de texto “comandos” do seguinte comando com seu endereço de e-mail:
echo "testando cadinho enviando 123 qwe" | ssmtp -vvv [email protected]
Em seguida, aperte "Executar comandos" novamente.
Porque usamos a opção -vvv para verbosidade extra, a saída deste comando deve ser semelhante a:
Se tudo correu bem, você deve receber o email de teste em segundos.
Esperamos que você possa usar essas informações para aumentar ainda mais os limites do roteador doméstico, o que você achava possível, e agora você realmente controla o roteador doméstico e o DD-WRT…
Linux estende a vida, Linux expande a consciência… Linux é vital para viagens de pacotes