EdgeMAX - instalar e configurar servidor DNS BIND no roteador

Visão geral


Os leitores aprenderão as instruções sobre como obter o BIND trabalhando em EdgeOS. BIND é um pacote de software DNS que é amplamente utilizado, especialmente na Internet.

Essas instruções incluem scripts para automatizar a reinstalação e configuração após uma atualização de firmware.

É o que recomendo que os leitores ser confortável com SSH, SFTP, comandos Linux e solução de problemas de DNS com escavação no Linux. Eu usei Putty SSH para o ERL, Filezilla para enviar os arquivos e escavar sobre o ERL para solucionar problemas do servidor DNS. Prefiro o nano a vi como um editor de texto, assim que eu instalei o. Se você quiser usar o vi, ignore a etapa 2 e substituir "nano" com o "vi".

Passos


1. Adicione repositórios Debian para o EdgeRouter. SSH para o roteador e executar:

configure
set system package repository squeeze components 'main contrib non-free'
set system package repository squeeze distribution squeeze
set system package repository squeeze url http://http.us.debian.org/debian

set system package repository squeeze-security components main
set system package repository squeeze-security distribution squeeze/updates
set system package repository squeeze-security url http://security.debian.org
commit
save
exit

2. Instale o editor de texto nano.

sudo apt-get update
sudo apt-get install nano

3. Instale o servidor de DNS BIND e dnsutils. (Inclui a escavação)

sudo apt-get install bind9 dnsutils

4. Edite o local dos arquivos de configuração.

Se você não alterar o local, depois de cada atualização de firmware você vai perdê-los. Nós irá movê-los para/config que obtém copiada sobre e de backup.

sudo nano /etc/bind/named.conf

Alterar os caminhos para os abaixo e salve o arquivo: incluem "/ config/bind/named.conf.options"; incluem "/ config/bind/named.conf.local"; incluem "/ config/bind/named.conf.default-zones";

5. criar diretório para arquivos de configuração de DNS BIND e copiá-los para o novo diretório.

mkdir /config/bind

sudo cp /etc/bind/named.conf /config/bind/named.conf
sudo cp /etc/bind/named.conf.options /config/bind/named.conf.options
sudo cp /etc/bind/named.conf.local /config/bind/named.conf.local
sudo cp /etc/bind/named.conf.default-zones /config/bind/named.conf.default-zones

6. criar os arquivos de zona e configurá-los.

Ver https://help.Ubuntu.com/LTS/serverguide/DNS-configuration.html para documentação. Certifique-se de salvá-los em/config/bind /, não/etc/bind /.

  7. startup script

Por qualquer motivo, BIND não iria funcionar até fiz uma escavação a ERL e então trabalhou muito bem. Isto também copia o arquivo de config que aponta para os arquivos de configuração em /config/bind. Isto é necessário para quando o novo firmware é atualizado. O que eu fiz foi criar um arquivo "start_dns.sh" em /config/scripts/post-config.d/ contendo essas linhas:

#!/bin/bash 
sudo service bind9 stop
sleep 5 
sudo cp /config/bind/named.conf /etc/bind/named.conf 
sudo service bind9 start 
sleep 5 
dig google.ca @127.0.0.1 
exit

Eu recomendo criar isto no roteador usando apenas o comando

sudo nano /config/scripts/post-config.d/start_dns.sh

Copiar/colar ou digitar essas linhas e salve o arquivo. Se você criar o arquivo no Windows, certifique-se de executar dos2unix <filename> ou mais terá problemas com a codificação de caracteres. Agora, defina as permissões apropriadas e permitir que ele seja executado como um executável:

sudo chmod 777 /config/scripts/post-config.d/start_dns.sh
sudo chmod +x /config/scripts/post-config.d/start_dns.sh

8. teste BIND.

BIND agora deveria estar trabalhando. Testá-lo em um cliente apontando seus DNS para o roteador e fazendo uma escavação ou nslookup em um registro em uma das zonas de domínio que você criou anteriormente. Se você deseja testar localmente no roteador, use:

dig google.ca @127.0.0.1
dig example.com @127.0.0.1

(Onde example.com é uma zona que você adicionou).

9. Re-instalar o BIND automático após atualização de firmware.

Agora precisamos configurá-lo para re-instalar o BIND após uma atualização de firmware. Semelhante ao acima, precisamos criar um script de inicialização que irá instalar os pacotes que precisamos. Não precisamos de re adicionar os repositórios como eles são armazenados na config.

sudo nano /config/scripts/post-config.d/install_packages.sh

Conteúdo do script:

#!/bin/bash
doneit='/var/lib/my_packages'
packages='dnsutils bind9'

if [ -e $doneit ]; then
exit 0;
fi

sudo dpkg --configure -a
apt-get update
apt-get install -y $packages
if [ $? == 0 ]; then
 echo package install successful
 touch $doneit
else
 echo package install failed
fi
exit 0

Agora edite as permissões:

sudo chmod 777 /config/scripts/post-config.d/install_packages.sh
sudo chmod +x /config/scripts/post-config.d/install_packages.sh

10. teste o script de inicialização.

Reinicie seu roteador e verifique se o serviço BIND aparece e funciona nos clientes.

Feito!

Notas


Pode ser necessário reiniciar duas vezes após uma atualização de firmware para ambos os scripts que passar totalmente. Eu testei isso com uma atualização de firmware e encontrei alguns problemas que consertou, mas ainda tenho que testá-lo inúmeras vezes por meio de upgrades. Serei capaz de atualização/tweak, mais como eu fazer mais testes.