Libere ainda mais potência do seu roteador doméstico com o DD-WRT Mod-Kit

Índice:

Libere ainda mais potência do seu roteador doméstico com o DD-WRT Mod-Kit
Libere ainda mais potência do seu roteador doméstico com o DD-WRT Mod-Kit

Vídeo: Libere ainda mais potência do seu roteador doméstico com o DD-WRT Mod-Kit

Vídeo: Libere ainda mais potência do seu roteador doméstico com o DD-WRT Mod-Kit
Vídeo: How To Remove Win 7 Antispyware 2012 - YouTube 2024, Maio
Anonim
 Já mostramos a você como modificar seu roteador doméstico com o firmware alternativo do DD-WRT para obter um desempenho muito melhor, e hoje vamos mostrar a você como levá-lo ainda mais adiante com o DD-WRT Mod-Kit.
Já mostramos a você como modificar seu roteador doméstico com o firmware alternativo do DD-WRT para obter um desempenho muito melhor, 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, 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 dará 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 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 forma 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 a 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, pretendemos tornar este guia um procedimento de copiar e colar que qualquer pessoa pode usar para atingir as seguintes metas:

  • Instale o pacote knockd e suas dependências.
  • Instale o pacote ssmtp com configurações geradas baseadas em NVRAM.

    Opcionalmente, com suporte para TLS smtp (também conhecido como suporte do Gmail).

    Depois de ter seguido este procedimento, deve ser relevante adaptá-lo para outras instalações de pacotes.

    Aviso: Pise levemente … lembre-se de que o uso incorreto do kit de modificação pode deixar você com um roteador que precisa de remover o tijolo (por sua vez, em um tijolo inútil). No entanto, se você é um geek de verdade, você provavelmente concorda com a ideologia de que, quem pode destruir uma coisa, controla uma coisa, e apenas geeks verdadeiros fazem isso.

    Image
    Image

    Pré-requisitos

    1. 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.
    2. 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.
    3. Este procedimento é recomendado apenas para pessoas que tenham experiência com o flash do roteador com o 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.
    4. Seu roteador deve suportar pelo menos a versão "mini" do DD-WRT.
    5. Este procedimento foi criado e testado em roteadores Linksys WRT54GS / L, se você estiver usando roteadores de outros fornecedores, sua milhagem pode muito.

    Configuração

    Instalando os 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 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 https://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ê quer usar? Uma regra é: quando estiver em dúvida, use “mini”. Isso ocorre porque, desde que o seu roteador suporte, pelo menos, a versão "mini", usá-lo oferece todos os recursos mais usados sem qualquer bloatware. deixando assim tanto espaço para os procedimentos como até mesmo algum espaço JFFS para outros usos na maioria dos casos.

    Depois de decidir sobre uma versão, recomenda-se a utilização da revisão mais recente do firmware disponível, pois elas tendem a ter muitas correções de erros 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 a seguir.

    wget https://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

    Isso é obviamente opcional, mas os comandos abaixo assumem 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 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, pois o Knockd não ocupa muito espaço.

    O Knockd é um daemon que escuta eventos de comunicação na camada de enlace para seqüências e então 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 https://downloads.openwrt.org/backports/rc5/knockd_0.5-1_mipsel.ipk wget https://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 exatamente como mostramos em Como enviar alertas por e-mail no Linux usando o Gmail ou o SMTP para servidores. Nós prometemos a você naquela época que mostraremos como configurar isso para o DD-WRT e agora vamos entregar. Isso é útil principalmente se você deseja criar scripts no roteador que gostaria de receber feedback sobre sua operação por 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 https://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 JFFS livre (cerca de 60KB no WRT54GL).

    Como ainda não há TLS exigindo servidores smtp por aí (geralmente seus ISPs), sugiro tomar um minuto para pensar se você realmente precisa usar o TLS que exige o gateway.

    Se você decidiu ativar o suporte a TLS apesar de sua desvantagem, baixe o pacote openSSL:

    wget https://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 tanto, tanto Jeremy (o criador mod-firmware do firmware) quanto eu chegamos à conclusão (independentemente se eu posso humildemente acrescentar) que a única maneira sensata de fazer isso seria:

    1. 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.
    2. 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 …

    Symlink o diretório de configuração ssmtp Como explicado acima, precisamos fazer o / etc / ssmtp localização no roteador, aponte para o / 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

    NotaMesmo 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, considero adequado colocá-lo aqui apenas como exemplo para uso futuro. Originalmente, Jeremy criou o script sob medida para o pedido de alguém. Mais tarde, ajustei e ampliei o código para que ele fosse mais compatível com os relatórios do DD-WRT e do 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 # author: Jeremy Collake and Aviad Raviv # site: https://www.bitsum.com, https://howtogeek.com # # script to build config file from nvram vars. # will work for any config file that uses # var=value type pairs. # # uses prefixes for nvram variables. # # i.e. # ssmtp_hostname=something # translates to ssmtp.conf # hostname=something # logger_func() { logger -s -p local0.notice -t SSMTP_init $1 }

    logger_func '###########Started the SSMTP init run###########' logger_func 'Creating the etc directory in /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 'Generating $CONFIG_FILE for package $PACKAGE_NAME' #echo $0: generating $CONFIG_FILE for package $PACKAGE_NAME echo '#!/bin/sh' > $CONFIG_FILE echo '#' >> $CONFIG_FILE echo '# auto generated based on nvram by $0' >> $CONFIG_FILE echo '#' >> $CONFIG_FILE

    if [ -z '`nvram show | grep ssmtp`' ] then logger_func 'It appears that you have not set the NVRAM variables required to generate the conf file' logger_func '**Consider** using these commands in you startup script:' 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 set ssmtp_AuthPass=password' logger_func 'nvram set ssmtp_FromLineOverride=YES' logger_func 'create the NVRAM variables and re-run the init script or reboot for the settings to take affect.' exit 0 fi

    ########################################################### # # main loop # SED_COMMAND='s/$NVRAM_PREFIX/ /' CONFIG_VARS=`nvram show | grep $NVRAM_PREFIX | sed '$SED_COMMAND'` for i in $CONFIG_VARS; do echo $i >> $CONFIG_FILE done

    ########################################################### # # sanity check # if [ ! -f '$CONFIG_FILE' ]; then # echo '$0: ERROR - could not create $CONFIG_FILE. Perhaps there is no symink /etc/XXXX -> /tmp/etc/XXXX ?' logger_func 'ERROR - could not create $CONFIG_FILE. Perhaps there is no symink /etc/XXXX -> /tmp/etc/XXXX ?' fi logger_func '###########Finished the SSMTP init run###########'

    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 instalarmos o nosso firmware modificado no roteador.

    Construa o firmware modificado

    Agora que está tudo pronto, é 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 os "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 conseguiremos isso usando a função "Executar comandos" da interface web.

    Vá para a web-GUI -> “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(without the @gmail.com) nvram set ssmtp_AuthPass=you-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á chamar 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 ser semelhante a:

    Teste que você pode enviar e-mail Novamente, cole na caixa de texto “comandos” o seguinte comando com o seu endereço de e-mail:
    Teste que você pode enviar e-mail Novamente, cole na caixa de texto “comandos” o seguinte comando com o seu endereço de e-mail:

    echo 'testing crucible emailing 123 qwe' | ssmtp -vvv [email protected]

    Em seguida, aperte "Executar comandos" novamente. Porque nós usamos a opção -vvv para verbosidade extra, a saída deste comando deve se parecer com:

    Se tudo correu bem, você deve receber o email de teste em segundos.
    Se tudo correu bem, você deve receber o email de teste em segundos.

    Esperamos que você possa usar essas informações para levar os limites do roteador doméstico ainda mais longe do que você achava possível e agora você realmente controla seu roteador doméstico e o DD-WRT…

    Linux estende a vida, o Linux expande a consciência… Linux é vital para viagens de pacotes

Recomendado: