Resolução de nome de host de máquinas Linux de qualquer sistema operacional

2

Tudo isso em uma LAN:

  • Eu tenho um monte de máquinas Linux (estou chamando esses endpoints) que recebem seus IPs de um servidor DHCP que eu não controlo.
  • Eu não controlo o nosso DNS interno
  • No entanto, eu controlo um servidor Ubuntu com um IP e nome conhecido: ubuntu.domain.com

Eu quero ser capaz de acessar essas máquinas por seus nomes de host, ou hostname.ubuntu.domain.com.

Preciso notificar nosso servidor DNS sobre esses nomes de hosts, descobrir quais serviços de resolução de nomes já estão disponíveis (ping nomes de host Windows ou Linux resolvem para um endereço IP incorreto), configurar um serviço como dnsmasq ou usar um site de DNS dinâmico (não ideal para esta rede praticamente fechada)

Com dnsmasq parece que eu preciso definir cada máquina para obter um IP de ubuntu.domain.com. Eu não quero fazer isso. Eu devo manter a situação atual do DHCP. Alguém ficaria louco se nossos pedidos de DHCP passassem pela minha própria máquina.

É possível encaminhar solicitações DHCP do dnsmasq para o meu provedor DHCP padrão?

De alguma forma, cada máquina precisa notificar o ubuntu.domain.com de seu par (hostname, IP).

Eu quero evitar modificar qualquer coisa, exceto os endpoints nomeados, para usar ubuntu.domain.com como uma fonte de DNS, e é por isso que o esquema hostname.ubuntu.domain.com parece bom. Eu não sei se isso é possível, no entanto.

TLDR: Como eu resolvo os nomes de host do Linux facilmente?

    
por Cat 15.12.2011 / 22:03

2 respostas

1

Você pode escolher obter seu endereço IP do DHCP como faz agora, mas substituir os servidores DNS para que eles apontem para ubuntu.domain.com

Em seguida, instale o bind no ubuntu.domain.com e configure uma zona para o ubuntu.domain.com que aceita registros da rede local. Configure o bind em ubuntu.domain.com para que ele encaminhe qualquer solicitação de DNS para zonas que não sejam autoritativas para os servidores DNS atuais.

Para substituir os servidores de nomes, edite /etc/dhclient.conf e adicione

supersede domain-name-servers <ubuntu server ip>;

Para registrar o nome do host do PC no servidor DNS, adicione também:

supersede domain-name "ubuntu.domain.com";
send host-name "hostname.ubuntu.domain.com";

Para permitir registros de zona no bind em ubuntu.domain.com, inclua isto na seção de opções em /etc/bind/named.conf.options . Adicione também os encaminhadores para zonas não autoritativas:

options {
    allow-update { <your network>/<your subnet mask> (eg 192.168.1.0/24); };
    forwarders { <current dns server>; <current dns server>; };
};

Em seguida, você precisará definir a zona em /etc/bind/named.conf.local :

zone "ubuntu.domain.com" {
    type master;
    file "/etc/bind/pri/db.ubuntu.domain.com";
};

O arquivo de zona /etc/bind/pri/db.ubuntu.domain.com será parecido com este

$ORIGIN .
$TTL 604800     ; 1 week
ubuntu.domain.com      IN SOA  ubuntu.domain.com. dns.ubuntu.domain.com. (
                            260        ; serial
                            604800     ; refresh (1 week)
                            86400      ; retry (1 day)
                            2419200    ; expire (4 weeks)
                            604800     ; minimum (1 week)
                            )
                    NS      ubuntu.domain.com.
                    A       <ip address of ubuntu.domain.com>
 }

Os registros A adicionais dos hosts registrados serão adicionados a este arquivo.

Então a sequência é

    O
  1. dhclient solicitará um IP do servidor DHCP atual
  2. o servidor dhcp responde com IP, gateway e DNS
  3. O dhclient aceita IP e gateway e substitui o dns pelo ubuntu.domain.com
  4. o dhclient registra seu hostname com o ubuntu.domain.com dns
  5. As consultas DNS vão para ubuntu.domain.com - se estiverem na zona ubuntu.domain.com, serão resolvidas localmente, caso contrário, encaminhará para os servidores DNS atuais
por 16.12.2011 / 00:09
2

Se você quiser resolver os nomes de qualquer endereço, a melhor coisa a fazer é inseri-los no DNS. Geralmente, o servidor DHCP registra o nome que seu host usa quando solicita um endereço IP. Na maioria dos casos, isso deve ser um nome de host não qualificado. Isso geralmente é desativado na configuração do cliente DHCP. Ele deve então aparecer em um local que pode ser resolvido usando a lista de pesquisa fornecida pelo DHCP.

O DNSMasq pode ser configurado para usar os servidores DNS fornecidos pelo DHCP. Eu acredito que a configuração padrão no Ubuntu irá lidar com a configuração automaticamente.

Os nomes que você usa devem caber na hierarquia de DNS da organização com a qual você trabalha.

Para servidores que você precisa acessar remotamente, a solução preferida é usar um endereço IP estático. Isso exigiria coordenação com os administradores da rede e do DNS.

EDIT: Se você tem trabalho sem o apoio dos administradores, você pode construir um arquivo / etc / hosts em um servidor e usar o dnsmasq como o servidor DNS primário para todos os servidores que precisam se coordenar. O arquivo / etc / hosts deve funcionar, pois seu DHCP provavelmente fornecerá endereços efetivamente estáticos.

Se os seus endereços IP forem dinâmicos, talvez seja necessário configurar um mecanismo para que os hosts registrem alterações no endereço IP. O cliente DHCP tem ganchos para isso. O truque será descobrir onde se registrar quando os endereços IP mudarem. Notificar os clientes (outros servidores) pode ser a solução mais simples. Os processos que fazem isso podem ser desprivilegiados (não-raiz). Em caso afirmativo, o dnsmasq deve ser configurado com um arquivo de hosts alternativos.

Outra alternativa seria usar avahi para permitir que os servidores descobrissem uns aos outros. Pode ser configurado para domínios diferentes do local.

    
por 15.12.2011 / 23:13

Tags