Já mostramos como modificar seu roteador doméstico com o firmware alternativo DD-WRT para um desempenho bastante aprimorado e hoje vamos mostrar como levá-lo ainda mais longe com o Mod-Kit DD-WRT.
Se você ainda não fez isso, verifique os dois artigos anteriores da série:
- Transforme seu roteador doméstico em um roteador com superpotência com DD-WRT
- Como aumentar o sinal da sua rede Wi-Fi e aumentar o alcance com DD-WRT
Supondo que você esteja familiarizado com esses tópicos, continue lendo. Lembre-se de que este guia é um pouco mais técnico e os iniciantes devem ter cuidado ao fazer modificações em seus roteadores.
Visão geral
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 da fonte. Fazer alterações desta forma, com a ajuda 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 DD-WRT para Openwrt Os pacotes IPKG mudaram para roteadores que possuem discos rígidos (via USB), o que torna o mod-kit a única maneira consistente de instalar os pacotes IPKG com sucesso para casos onde um HD não está disponível. Além disso, esse método tem a vantagem adicional de liberar você da dependência JFFS para instalação de pacotes, o que para roteadores com apenas 4 MB de flash é um problema real.
Metas
Embora as instruções para este procedimento, sejam detalhadas em Wiki DD-WRT e no site do desenvolvedor , pretendemos tornar este guia um procedimento de copiar e colar que qualquer pessoa pode usar para atingir os seguintes objetivos:
- Instale o pacote knockd e suas dependências.
-
Instale o pacote ssmtp com configurações geradas com base 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 simples adaptá-lo para outras instalações de pacotes.
Atenção
:
Pise com cuidado ... tenha em mente que o uso incorreto do kit de modificação pode deixá-lo com um roteador que precisa
de-brick-ing
(como por sua vez em um
tijolo inútil
) No entanto, se você é um verdadeiro geek, provavelmente concorda com a ideologia de que,
aquele que pode destruir algo, controla algo
, e apenas verdadeiros geeks fazem isso
Pré-requisitos
- Usando este procedimento pode tijolo seu roteador, como em fazer 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 realizado em sistemas baseados em Debian (Lenny, Squeeze e Mint) e as instruções abaixo assumem que você também está usando um.
- Este procedimento só é recomendado para pessoas com experiência em atualizar seu roteador com DD-WRT, com todos os pré-requisitos, advertências e limitações que se aplicam à configuração de seu hardware. um bom lugar para começar seria nosso Transforme seu roteador doméstico em um roteador com superpotência com DD-WRT guia.
- 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ê estiver usando roteadores de outros fornecedores, sua milhagem pode variar.
Configuração
Instalando os pacotes necessários
O kit de modificação de firmware possui algumas dependências para compilar e funcionar. Para instalar / atualizar todos de uma vez, execute este comando em um terminal:
sudo aptitude install gcc g ++ binutils patch bzip2 flex bison make gettext unzip 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-read-only
cd firmware-mod-kit-read-only / trunk /
Baixe um firmware para trabalhar
A primeira coisa a considerar é qual versão você deseja usar?
A regra é: em caso de dúvida, use “mini”. Isso ocorre porque, contanto que seu roteador suporte pelo menos a versão “mini”, usá-lo fornece todos os recursos mais comumente usados sem nenhum bloatware. deixando espaço para os procedimentos e até mesmo algum espaço JFFS para
outros usos
na maioria dos casos.
Depois de decidir sobre uma versão, é recomendado 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 era “03-17-11-r16454” e esta revisão é usada nos comandos a seguir.
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 controle da versão que estamos usando, renomeie o arquivo baixado para representar o número da versão:
mv dd-wrt.v24_mini_generic.bin dd-wrt.v24_mini_generic-03-17-11-r16454.bin
Obviamente, isso é opcional, mas os comandos a seguir presumem que você renomeou o arquivo.
Extraindo o firmware
Para poder alterar os 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
Em 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 do 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 foi 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
. Depois de 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 fazer isso em uma preparação para o futuro, pois Knockd não ocupa muito espaço de qualquer maneira.
Knockd é um daemon que escuta eventos de comunicação na camada de enlace para sequências e, em seguida, age sobre eles.
O que isto significa é que você pode fazer com que o dispositivo rodando o daemon nem mesmo “escute” nas portas (uma varredura de porta não as verá como abertas) e ainda fazer algo que você precisa, a partir de um único comando todos os
bem alto
para um script completo.
Usando esta técnica
você pode acionar o servidor para realizar qualquer tipo de operação de que você precisa remotamente (através da 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 ipk “knock daemon” (knockd) no firmware:
./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/
Instale o ipk de “captura de pacote” (libpcap) no firmware:
./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/
Como “knockd” pode ser chamado com um arquivo de configuração alternativo (como será explicado em um artigo futuro), não há necessidade de realizar nenhuma outra operação e você pode pular para a seção de construção de firmware, se for tudo o que você deseja instalar.
O pacote SSMTP
O pacote SSMTP permite que seu roteador envie mensagens de e-mail exatamente como mostramos em nosso
Como configurar alertas de e-mail no Linux usando Gmail ou SMTP
para servidores. Prometemos a você naquela época que mostraremos como configurar isso para DD-WRT e agora entregaremos.
Isso é útil principalmente se você pretende criar scripts no roteador e deseja receber feedback sobre a operação por e-mail.
A configuração deste pacote é um pouco mais complexa do que em sistemas Linux normais por causa da limitação imposta por um sistema embarcado, então 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)
SSMTP não lista quaisquer outros pacotes como suas dependências, no entanto, se você quiser ser capaz de usar um gateway smtp que requer autenticação TLS (ou seja,
Gmail
), você também deve 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 500 K de espaço de seu total de 4 MB (para um roteador de suporte normal não "mega"), combinado com a sobrecarga JFFS e você descobrirá que sobrou, mas alguns preciosos, blocos de espaço JFFS livre (cerca de 60 KB em WRT54GL).
Como ainda existem servidores SMTP que não exigem TLS (geralmente o seu ISP), sugiro que reserve um minuto para pensar se você realmente precisa usar o gateway que exige TLS.
Se você decidiu ativar o suporte 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
Há 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 alteração de senha).
Para esse fim, tanto Jeremy (o criador do kit de mod de firmware) e eu chegamos à conclusão (independentemente, se posso humildemente acrescentar) que a única maneira sensata de fazer isso seria:
- Faça com que a localização dos arquivos de configuração para a qual o pacote ssmtp aponta para a localização somente leitura em etc, aponte para o diretório tmp que é gravável em tempo de execução.
- Crie um script que geraria dinamicamente as configurações baseadas em variáveis NVRAM na inicialização.
Para conseguir isso, algumas etapas adicionais são necessárias ...
Link simbólico para o diretório de configuração ssmtp
Conforme explicado acima, precisamos fazer o
/ etc / ssmtp
localização no roteador, aponte para o
/ tmp
já que é o ú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 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 : Embora 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 bom do ponto de vista dos roteadores em tempo de execução.
Um script de inicialização
Embora seja totalmente possível não injetar esse script no firmware e executá-lo como um script de inicialização mais tarde, acho apropriado colocá-lo aqui apenas como um exemplo para uso futuro.
Jeremy criou originalmente o script sob medida para a solicitação de alguém, mais tarde, eu ajustei e aumentei para ser mais compatível com DD-WRT e relatórios de syslog.
Crie o novo script init (inicialização):
vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Nota: Você pode usar outro editor, eu uso o vi porque é consistente com o que está disponível no roteador ...
Faça deste 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 de nvram vars.
# funcionará para qualquer arquivo de configuração que use
# var = pares de tipo de valor.
#
# usa prefixos para variáveis nvram.
#
# i.e.
# ssmtp hostname = something
# se traduz em ssmtp.conf
# hostname = algo
#
logger_func ()
{
logger -s -p local0.notice -t SSMTP_init $ 1
}
logger_func "############ Iniciou a execução de inicialização 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 em nvram por $ 0" >> $ CONFIG_FILE
echo "#" >> $ CONFIG_FILE
se [ -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 ** usar 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 = username"
logger_func "nvram definir ssmtp_AuthPass = senha"
logger_func "nvram set ssmtp_FromLineOverride = YES"
logger_func "crie as variáveis NVRAM e execute novamente o script de inicialização ou reinicie para que as configurações tenham efeito."
saída 0
estar
###########################################################
#
# 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
###########################################################
#
# verificação de sanidade
#
se [ ! -f "$CONFIG_FILE" ]; então
# echo "$ 0: ERROR - não foi possível criar $ CONFIG_FILE. Talvez não haja link simbólico / etc / XXXX -> / tmp / etc / XXXX?"
logger_func "ERROR - não foi possível criar $ CONFIG_FILE. Talvez não haja link simbólico / etc / XXXX -> / tmp / etc / XXXX?"
estar
logger_func "############ Concluída a execução de inicialização SSMTP ############"
Torne-o executável:
chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Anote as variáveis de espera da NVRAM no script, é nossa responsabilidade fornecer a elas algo para trabalhar depois de instalarmos nosso firmware modificado no roteador.
Construa o Firmware modificado
Agora que tudo está pronto, é hora de reempacotar o firmware modificado em um binário compactado que possamos enviar ao roteador.
A sintaxe do script “build.sh” é:
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY
Para fazer isso, usamos o script fornecido, portanto, emita:
./build_firmware.sh output_mini1 ./working_dir_mini1/
Assim que a operação de “construção” for concluída, haverá várias imagens de firmware esperando para serem usadas no diretório de “saída”.
Agora você pode atualizar o arquivo chamado “custom_image_00001-generic.bin” para o seu roteador como você normalmente faria um firmware DD-WRT .
Nota : Não se esqueça de restaurar os "padrões de fábrica" antes, durante e logo após o flash do firmware.
Passo a passo
Como fizemos o pacote SSMTP procurar variáveis NVRAM para gerar o arquivo de configuração ssmtp, agora precisamos fornecê-lo com as informações ausentes.
Faremos isso usando a função “Executar comandos” da interface web.
Vá para a interface web -> “administração” -> “comandos” -> cole na caixa de texto o seguinte:
nvram set [email protected]
nvram set ssmtp_mailhub = smtp.gmail.com: 587
nvram set [email protected]
nvram set ssmtp_UseSTARTTLS = YES
nvram set ssmtp_AuthUser = your-gmail-user-name (sem o @ gmail.com)
nvram set ssmtp_AuthPass = sua-senha do gmail
nvram set ssmtp_FromLineOverride = YES
nvram commit
Substitua o texto após o sinal de igual (=), com suas informações reais, e clique em “Executar comandos”.
Nota
: se estiver usando um servidor smtp regular, não usando TLS, a porta a ser usada é 25 em vez de 587.
Agora que as informações de SSMTP estão prontas para uso, você precisará invocar o script init. Portanto, você pode reiniciar o roteador ou colar na caixa de texto “comandos”:
/etc/init.d/S80ssmtp
Em seguida, clique em “Executar comandos” novamente.
A saída desse comando deve ser semelhante a:
Teste se você pode enviar e-mail
Cole novamente na caixa de texto “comandos” o seguinte comando com seu endereço de e-mail:
echo "testando cadinho por e-mail 123 qwe" | ssmtp -vvv [email protected]
Em seguida, clique em “Executar comandos” novamente.
Como usamos a opção -vvv para detalhamento extra, a saída desse comando deve ser semelhante a:
Se tudo correr bem, você receberá o e-mail de teste em segundos.
Esperamos que você possa usar essas informações para empurrar os limites de seu roteador doméstico ainda mais longe do que você pensou ser possível e agora controle verdadeiramente seu roteador doméstico e DD-WRT …
O Linux estende a vida, o Linux expande a consciência ... Linux é vital para viagens de pacotes