no artigo anterior nesta série de duas partes, introdução ao DNS (sistema de nomes de domínio), descrevi como a base de dados DNS está estruturada e como configurar os Serviços de nomes num cliente. Eu também listei e descrevi alguns dos registros DNS mais comuns que você provavelmente vai encontrar ao construir um servidor de nome ou apenas tentando interpretar os resultados de um comando dig.

neste artigo, eu mostro-lhe como construir o seu próprio servidor de nomes usando o BIND (Berkeley Internet Name Domain)., Não é tão difícil como você poderia pensar, especialmente porque você pode fazê-lo em duas fases.

neste artigo, você irá começar por aprender como criar um servidor de nomes de cache, então você vai seguir em frente e aprender como atualizar isso para um servidor de nome de domínio primário completo (master) para a sua rede, completo com arquivos para frente e zona reversa.

configurar um servidor de DNS usando o BIND

configurar um servidor de nomes usando o BIND é bastante simples, por isso mostrar-lhe-ei como fazê-lo em qualquer computador que possa ter disponível para experimentação., Este pequeno projecto de laboratório irá mostrar – lhe como instalar e configurar o BIND no seu computador como um servidor de nomes de cache, testá-lo e configurá-lo como um servidor de nomes primários com um ficheiro de zona que pode usar como resolvedor de nomes para a sua rede ou apenas para testar.

configurar um servidor de nomes em qualquer computador GNU / Linux que tenha disponível é tecnicamente possível porque não irá interferir com outras máquinas na rede ou na sua operação. No entanto, você provavelmente não deve fazer isso em um computador que você não possui ou tem o direito de modificar a menos que você tenha permissão explícita para fazê-lo.,

a minha configuração

você só precisa de um computador para executar todas, menos uma das tarefas neste projeto de laboratório. Eu uso Esta configuração no Meu ThinkPad muito mais poderoso porque os servidores de nomes fornecidos pelo DHCP (Dynamic Host Configuration Protocol) quando eu me conecto a redes não-domésticas usando conexões wired ou wireless às vezes pode ser pouco confiável. Para mostrar que quase qualquer host pode executar bem como um servidor de nome, eu testei este projeto em um antigo ASUS EeePC 900 netbook.,

usarei o endereço IP privado do Meu ASUS para este projecto, mas deverá usar o endereço IP da máquina que está a usar.

o ficheiro hosts

Primeiro, vamos dar uma vista de olhos no ficheiro /etc/hosts. Em seu estado padrão, deve haver apenas duas linhas no arquivo hosts, as duas primeiras linhas vistas na Listagem 1, abaixo.

Listagem 1: você pode manter um arquivo hosts simples para executar a função de um resolvedor em pequenas redes.,

embora você possa adicionar nomes de host e seus respectivos endereços IP como mostrado na Listagem 1, Esta não é uma solução ideal para nomear Serviços, especialmente ao viajar. Se houver outros itens no arquivo hosts, você pode precisar comentá-los para a duração deste projeto, se eles interferirem com nomes ou endereços IP. A maioria de vocês não terá quaisquer entradas além das duas linhas padrão.,

Preparação

Um cache de nome de servidor não pode substituir o uso do /etc/hosts para resolver nomes de máquinas na rede interna; no entanto, em comparação ao uso de um ISP ou servidor de nome de um cache de nome de servidor pode melhorar o desempenho quando a resolução comumente usado nomes externos, tais como www.cnn.com. A melhor parte é que a criação de uma cache de nome de servidor é bastante fácil.antes de começar, deve preparar-se executando os seguintes passos.

primeiro, faça cópias de segurança dos arquivos /etc/hosts, /etc/nomeado.conf, resolv.conf, and/etc/sysconfig / iptables.,

se ainda não estiverem instalados, use o Gestor de pacotes da sua distribuição para instalar o seguinte ‘BIND’ RPMs: bind, bind-chroot e bind-utils. Para habilitar a sua máquina de laboratório a usar o servidor de nomes de Cache, você deve adicionar uma linha de servidor de nomes para apontar para a sua própria máquina em /etc/resolv.conf. Por exemplo, se o endereço IP da sua máquina de laboratório for 192.168.0.203, como é o meu epc, adicione a seguinte linha ao topo da lista de servidores de nomes em /etc/resolv.conf:

name server 192.168.0.203

certifique-se de usar o endereço IP da máquina em que está a fazer este projecto.,

pode usar o endereço IP do seu localhost, 127.0. 0. 1 em vez do endereço IP externo. Você também deve comentar quaisquer linhas que apontem para outras máquinas como servidores de nomes. Certifique-se de salvar o resolv revisto.ficheiro conf.

estas alterações entrarão em vigor imediatamente e não é necessário reiniciar o serviço. Agora tente ping um host público comum que não bloqueia pacotes ICMP (Internet Control Message Protocol); sinta-se livre para usar o meu firewall, que é um Raspberry Pi.,

ping wally2.both.org

deve obter um erro de” máquina desconhecida “ou” nome ou serviço não conhecido ” porque não tem actualmente nenhum serviço de DNS ou resolução de trabalho definido no resolução.ficheiro conf. Agora use o comando dig para ver se os Serviços de nomes estão a funcionar.

dig wally2.both.com

deve obter o erro, “a ligação expirou o tempo-limite; não foi possível aceder a servidores.”

configure um servidor de nomes de cache

um servidor de nomes de cache não é uma fonte autorizada para qualquer domínio., Ele simplesmente Cache os resultados de todos os pedidos de resolução de nomes da rede que ele serve para acelerar as respostas a futuros pedidos para o mesmo host remoto.

Nota:o nome.conf file é muito particular sobre sintaxe e especialmente pontuação. Semicolons são usados para delinear o fim de uma entrada e o fim de uma estrofe, bem como o fim de uma linha. Certifique-se de adicioná-los corretamente, como mostrado nas amostras.

para a configuração inicial do servidor de nomes de cache fazendo algumas modificações para o padrão /etc/nomeado.o ficheiro conf é necessário, por isso, edite esse ficheiro com o seu editor favorito., Em primeiro lugar, adicione o endereço IP da sua máquina de teste local à linha “listen-on port 53”, Como mostrado na lista 2, abaixo. Isto permite o nome para ouvir no endereço IP externo do seu host, de modo que outros computadores podem usá-lo como um servidor de nome também.

Por padrão, BIND refere-se aos servidores de nome raiz da Internet para localizar os servidores de nome autoritário para um domínio. É possível especificar outros servidores que são chamados de “Forwarders” para os quais a instância local do BIND irá enviar pedidos em vez dos servidores raiz. Isto aumenta a possibilidade de sequestro do DNS.,

adicione uma linha “forwarders” como mostrado abaixo. Isto diz ao seu servidor de DNS de cache onde obter os endereços IP quando eles não estão já cache localmente. Os endereços IP na lista abaixo são para os servidores de DNS públicos do Google que você poderia usar seu ISP local ou OpenDNS ou algum outro servidor de nome público como seu forwarder. Não é necessário definir quaisquer forwarders e, nesse caso, o BIND usaria os servidores de raiz da Internet, tal como definidos no ficheiro /var/named/named.ca, para localizar os servidores de nomes autorizados para os domínios, se não estiverem definidos expedidores., Mas para este exercício, por favor defina os transitários como eu tenho na lista 2.

Comente a linha IPV6 porque não estamos usando IPV6 no ambiente de laboratório. Note que as “/ / ” duas barras dianteiras denotam comentários no nome.ficheiro conf.

Listagem 2: o /etc/nomeado.o ficheiro conf fornece a configuração simples necessária para configurar um servidor de nomes de cache. As linhas que precisam ser adicionadas ou alteradas são destacadas a negrito.

adicione o endereço de rede local, 192. 168. 0. 0 / 24, à linha de consulta permitido., Esta linha especifica a(s) Rede (s) a partir da qual as consultas DNS serão aceitas por este servidor DNS.

iniciar o serviço de nomes

agora iniciar o serviço nomeado e configurar o serviço nomeado para iniciar em cada arranque. Eu uso o comando systemctl no meu servidor Fedora 25, mas o comando pode ser diferente no seu host, dependendo da distribuição que você está usando. Note que o nome do serviço BIND resolver é nomeado.,

systemctl enable named
systemctl start named

O primeiro teste que você pode executar para garantir que o cache de nome de servidor está a funcionar é usar o dig para localizar o banco de dados do DNS informações para wally2.both.org. Para testar ainda mais sua colocação em cache de nome de servidor, use o cavar de comando para obter o Endereço IP(es) comum para alguns sites da Internet, como www.opensource.com, CNN, com Fio, e quaisquer outras informações que você gosta. Os resultados devem agora mostrar o seu host como o servidor que responde.,

neste ponto, o seu servidor de nomes de cache irá resolver correctamente as máquinas na Internet e isso porque os pedidos de DNS para servidores públicos são encaminhados para os servidores de nomes públicos do Google—consulte a linha “forwarders” em nome.conf. No entanto, você ainda está dependente do arquivo /etc / hosts para serviços de nomes internos. Criar um servidor de nomes primários pode resolver esse problema.

criar um servidor de nomes primários

Uma vez que você crie um servidor de nomes de cache, convertê-lo em um servidor de nomes primários completo não é muito difícil., Um servidor de nome primário é a fonte autorizada para o domínio que representa.

Você precisa mudar o nome.conf novamente e criar um par de novos arquivos. Você criará um domínio chamado Example.com, que é um nome de domínio reservado por exemplo em documentos como este. O Example.com domain tem um endereço IP na Internet e um site muito escasso, mas você pode usar o nome no resto do seu projeto de laboratório sem causar problemas para ninguém. Vais usar o Example.com domínio como o nome de domínio interno para o resto deste exercício.,

os dois novos ficheiros que irá criar são os ficheiros para a frente e para a zona inversa, que irá colocar no directório /var/nomeado. Este local é especificado pela Diretiva” diretório ” no nome.ficheiro de configuração conf.

Crie o ficheiro da zona avançada

o ficheiro da zona avançada contém registos “a” que associam os nomes das máquinas na zona, aka domínio, com os respectivos endereços IP. Ele também pode conter registros CNAME, que são pseudônimos para os nomes de hosts reais nos registros A, e registros MX para servidores de E-mail.

crie um ficheiro básico da zona frontal, /var / named / example.com.,zone, e adicione as seguintes linhas a ele. Seu arquivo zone deve se parecer com o arquivo sample zone na lista 3, abaixo, quando você estiver terminado.

; Authoritative data for example.com zone
;
$TTL 1D
@ IN SOA epc.example.com root.epc.example.com. (
2017031301 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
$ORIGIN example.com.
example.com. IN NS epc.example.com.
epc IN A 127.0.0.1
server IN A 192.168.25.1
www IN CNAME server
mail IN CNAME server
test1 IN A 192.168.25.21
t1 IN CNAME test1
test2 IN A 192.168.25.22
test3 IN A 192.168.25.23
test4 IN A 192.168.25.24
; Mail server MX record
example.com. IN MX 10 mail.example.com.

Listing 3: The forward zone file for the Example.com domain contains the hostnames and their IP addresses for this domain.

a primeira linha de Não comentário na lista 3 é o tempo de Live specifier, que neste caso é um dia para todos os registros que não são especificados de outra forma. D significa Dia. Os especificadores da linha SOA (início da Autoridade) são igualmente óbvios., Os detalhes dos parâmetros do registro de SOA são descritos em alguns detalhes aqui.

o registo NS deve ter o FQDN (nome de domínio totalmente qualificado) da máquina em que está a executar este projecto de laboratório. Também deve haver um registro no arquivo com um endereço IP válido para a máquina. Neste caso, você deve usar o endereço IP localhost de 127.0.0.1.

Os itens mostrados acima dar-lhe-ão alguns nomes com os quais experimentar.não se esqueça de usar a data de hoje e adicione um contador a partir de 01 para o número de série. O número de série acima é a primeira mudança de 4 de Março de 2017., O número de série é aumentado sempre que o arquivo zone é alterado. Se houvesse servidores de nomes secundários que utilizassem este para um primário, eles não seriam atualizados a menos que o número de série fosse aumentado.

adicione os ficheiros da zona frontal ao nome.conf

antes que o seu servidor de DNS funcione, no entanto, você precisa criar um item em /etc / nomeado.conf que apontará para o seu novo ficheiro zone. Adicione as seguintes linhas abaixo da entrada para a zona de dicas de nível superior, mas antes das linhas “incluir”.

zone "example.com" IN {
type master;
file "example.com.zone";
};

Listing 4: Add these lines to the named.ficheiro conf para adicionar o exemplo.,ficheiro com zone para a configuração do resolver.

agora reinicie nomeado para fazer com que estas alterações façam efeito. Teste o seu servidor de nomes usando os comandos dig e nsloookup para obter os endereços IP das máquinas que configurou no ficheiro forward zone. Note que a máquina não tem de existir na rede para os comandos dig e nslookup devolverem um endereço IP.

esteja ciente de que a utilização do FQDN para estes comandos é necessária, excepto para o comando nslookup, desde que os itens de domínio e pesquisa de Example.com são fornecidos na resolução /etc/.ficheiro conf., Neste caso, eles provavelmente não são, então basta usar o FQDNs para todos os testes neste projeto.

usando os servidores de nomes de raiz

note que os servidores de nomes de raiz são indicados como os servidores de autoridade para a Amazon.com procura. Mas lembre-se que está a usar os servidores de nomes públicos do Google como expedidores. Agora comente a linha de transitários em nome.conf e recomece com o nome. Execute os comandos acima novamente para comparar os resultados que são retornados. Os resultados devem ser semelhantes aos que se seguem na lista 5.

Listagem 5: os resultados de uma pesquisa na www.Amazona.,com ter algumas informações interessantes, incluindo tempos para viver para os vários tipos de registros.

Quando eu fiz isso, a primeira chamada para resolver o endereço externo da Amazon levou 3857ms enquanto os dados foram localizados e retornados. Resultados subsequentes para realizar a mesma consulta foram 1ms, o que mostra a vantagem dos resultados do resolvedor de caching localmente. Observe os números 1800, 300 e 60 nas linhas da seção de resposta e 1831 nas linhas da seção de autoridade-estes são TTL (tempo de vida) em segundos., Se você realizar a pesquisa várias vezes, estes números irão mudar, mostrando a quantidade de tempo que os registros têm restante para viver no cache local.

criar o ficheiro de zona inversa

uma zona inversa para o seu domínio irá proporcionar a capacidade de fazer pesquisas inversas. Muitas organizações não fazem isso internamente, mas a pesquisa reversa pode ser útil para fazer a determinação do problema. Muitas configurações de luta contra spam, como o Spamassassassin, procuram pesquisas inversas para verificar servidores de E-mail válidos.

Crie o ficheiro de zona inversa, /var / named / example. com. rev e adicione o seguinte conteúdo., Não se esqueça de usar um número de série apropriado.

; Authoritative data for example.com reverse zone
;
$TTL 1D
@ IN SOA test1.example.com root.test1.example.com. (
2017031501 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS epc.example.com.
example.com. IN NS epc.example.com.
1 IN PTR mail.example.com.
1 IN PTR server.example.com.
21 IN PTR test1.example.com.
22 IN PTR test2.example.com.
23 IN PTR test3.example.com.
24 IN PTR test4.example.com.

Listagem 6: Use este ficheiro de zona inversa, por exemplo.com.rev, para o seu servidor de nomes.

pode também nomear o seu ficheiro de zona inversa / var / named/25.168.192.in-addr. arpa, que segue as convenções mais antigas. Você pode realmente nomeá-lo o que quiser, porque você vai apontar para ele explicitamente no nome.conf file, mas usar uma das duas convenções tornará mais fácil para os outros seguirem o seu trabalho.

adicione a zona inversa ao nome.conf:

zone "25.168.192.in-addr.arpa" IN {
type master;
file "example.com.rev";
};

Listing 7: Adding this stanza to the named.,o ficheiro conf activa as pesquisas inversas.

adicione a estrofe na lista 7 Ao /etc/nomeado.ficheiro conf para apontar para a nova zona inversa. Agora recarregue o nome e teste a sua zona inversa usando os comandos na lista 8. Seus resultados devem ser semelhantes aos abaixo.

listagem 8: Depois de reiniciar o nome, você deve ver resultados semelhantes a estes quando você faz uma pesquisa reversa sobre um endereço IP na zona inversa.

certifique-se de testar algumas das outras entradas inversas na sua rede e também tentar o seguinte, bem como outras pesquisas inversas que você deseja experimentar., A opção-x significa pesquisa inversa.

dig -x 192.168.25.23
dig -x 192.168.25.1

Note que nem todas as máquinas que têm entradas na zona dianteira precisam ter entradas na zona reversa, mas isso faz com que os resultados sejam mais consistentes se o fizerem.

neste ponto, você tem um servidor de nomes de trabalho usando o BIND. No entanto, máquinas externas ainda não podem usar este servidor de nomes porque o firewall ainda não deve ser configurado para permitir pedidos de DNS.

configurar os IPTables para DNS

pode fazer este passo se quiser que outras máquinas na sua rede local usem a sua máquina como servidor de nomes.,

a firewall na sua máquina de teste provavelmente bloqueia o acesso à sua máquina para serviços de nomes. Os IPTables devem ser configurados para permitir que os pacotes UDP (User Datagram Protocol) entrem no seu servidor de nomes, para que outras máquinas o usem para a resolução de nomes. Use os seguintes comandos para adicionar os itens necessários e gravá-los.

adicione uma regra aos seus IPTables ou firewalld firewalld que permite aos pacotes recebidos no Porto 53 (domínio) para o UDP e salve o novo conjunto de regras., Certifique-se de inserir a nova regra após o estado-a INPUT-m –relacionado com o estado,estabelecido-j aceitar a linha, para que você tenha que contar o número de linhas de entrada na tabela de filtros, a fim de fazer isso. O número 7 no comando seguinte significa que esta regra será inserida na posição 7 nas regras de entrada existentes.

iptables -t filter -I INPUT 7 -p udp -m conntrack --ctstate NEW -m udp --dport 53 -j ACCEPT

pode salvar as suas novas regras de firewall se quiser, e fá-lo-ia se esta fosse uma instalação permanente e não um projecto de laboratório. Em seguida, teste isso a partir de um de seus outros hosts usando o comando na lista 9, abaixo., O argumento @epc diz ao comando dig para usar o servidor de nomes indicado com o epc do nome da máquina. Você deve substituir o endereço IP do servidor de DNS que você acabou de criar, ou um hostname resolúvel na sua rede que aponta para o seu novo servidor de nome. Claro que você pode sempre adicionar esse nome de máquina com o seu endereço IP ao ficheiro /etc/hosts da máquina que está a usar para o teste remoto.

listagem 9: testando o resolvedor de nomes que você criou a partir de uma máquina diferente na mesma rede.,

limpeza

para limpeza, deve executar as seguintes tarefas usando as ferramentas apropriadas para a sua distribuição. Você pode apenas desejar manter este servidor de nome para a sua rede se você ainda não tem um.

  1. repõe o ficheiro original /etc/hosts.
  2. Stop named on the resolver host used for this lab project.
  3. desactive o serviço nomeado.
  4. apagar os ficheiros zone.
  5. restaure o nome original.ficheiro conf.repõe o resolução original.ficheiro conf.,

Pensamentos finais

o funcionamento dos serviços de nomes pareceu-me muito obscuro até que eu realmente criei um servidor de nomes para a minha rede usando o BIND. É bastante simples e pode melhorar o desempenho de pesquisa DNS. Ter o seu próprio servidor de nome também pode evitar muitas das interrupções de serviço de nome relativamente menores, mas irritantes, causadas por servidores de nomes ISP mal mantidos.

Note que, embora o meu pequeno EeePC esteja a correr com uma utilização de CPU de 100% para Seti@Home, responde muito rapidamente aos pedidos de resolução., Você deve ser capaz de tentar este projeto em qualquer host Linux que você tem disponível com impacto minúsculo. Espero que muitos de vocês tentem configurar seu próprio servidor de nome e experimentar com ele. Os detalhes da instalação do seu servidor de nome dependerão dos detalhes do seu host e rede.