Como você sobrescreve a configuração default do dns no Ubuntu para que o nslookup retorne valores estáticos?

0

O nslookup, dig e ping retornam valores diferentes para mim. Eu quero foo.bar.name para sempre resolver estaticamente para localhost na minha máquina.

Eu usei o comando

host foo.bar.name

e editado / etc / hosts para incluir a linha

1.1.1.1 foo.bar.name foo

(onde 1.1.1.1 endereço IP da minha máquina host)

Quando eu corro ou pendo, ele se comporta da maneira que eu quero.

Mas quando eu executo dig ou nslookup, o endereço foo.bar.name é completamente diferente.

Eu senti falta de algo?

Quais configurações eu preciso modificar para garantir que a resolução de DNS desse host em particular ocorra da maneira que eu disse.

    
por fossy 20.01.2017 / 23:39

3 respostas

2

What configurations do I need to modify to make sure that on that particular host DNS resolution happens the way I've stated.

Você pode configurar o encaminhador DNS leve, como unbound , onde pode substituir os registros DNS.

Usando seu exemplo, ele parece em unbound config como:

local-zone: "foo.bar.name" redirect
local-data: "foo.bar.name A 1.1.1.1"

Se você quiser substituir o DNS externo, use:

local-data: "www.google.com.  1800  IN  A    172.16.34.12"
local-data: 'www.google.com.  7200  IN  TXT "My own TXT record for text"'
local-data-ptr: "172.16.34.12        www.google.com"

Quando terminar de configurá-lo, teste-o com dig @127.0.0.1 foo.bar.name a
Se o seu novo resolvedor funciona Ok, defina-o como um sistema inteiro alterando nameserver linha na /etc/resolf.conf para nameserver 127.0.0.1

P.S.

Algumas das distribuições base do Debian instalam dnsmasq como um DNS cacher. Se você usar unbound , desative dnsmasq

    
por 21.01.2017 / 00:30
1

ping , curl e todos os outros aplicativos não usam o DNS diretamente - eles usam a função "gethostbyname" fornecida pelo SO, que chama vários provedores. Um deles é "dns" (que fala para servidores DNS), outro é "arquivos" (que é /etc/hosts ); pode haver provedores adicionais que falam outros protocolos. Eles estão todos configurados via /etc/nsswitch.conf .

Enquanto isso, dig , host e nslookup são clientes DNS - eles ignoram as funções "gethostbyname" do sistema operacional e criam diretamente & enviar pacotes DNS. (Eles foram especificamente escritos dessa maneira.) Como resultado, eles também ignoram /etc/hosts e quaisquer outros mecanismos de resolução de nomes, e não há nada que você possa configurar para "corrigir" isso.

(O SO em si não examinará todos os pacotes UDP para verificar se é DNS, e também não vai injetar uma resposta falsa no DNS de / etc / hosts apenas porque.)

A única maneira de criar dig & c. honra / etc / hosts é configurar um servidor DNS real para o aplicativo falar, o que forneceria as respostas estáticas desejadas. Por exemplo, dnsmasq atuará como cache / proxy DNS e carregará dados estáticos de / etc / hosts por padrão. Como alternativa, o Unbound possui uma configuração extensiva de "dados locais", embora não possa ler diretamente o arquivo / etc / hosts.

Depois de configurar o dnsmasq ou o Unbound, aponte /etc/resolv.conf para 127.0.0.1 (ou qualquer outro host em que o dnsmasq esteja sendo executado).

    
por 21.01.2017 / 00:23
0
O

sistema deve ser verificado em / etc / hosts e, em seguida, usa o servidor de nomes. e o que você fez está perfeitamente bem. é só que alguns programas são projetados para falar diretamente com servidores de nomes, ou seja, host , nslookup e dig . é por isso que você tem resultados diferentes.

    
por 21.01.2017 / 00:03