O Dnsmasq resolve o nome do host local para 127.0.0.1 em toda a rede

8

Meu dnsmasq está configurado:

  • No host 'rtfm.lan'
  • Domínio 'lan'
  • Existem algumas predefinições DHCP que incluem nomes de host

Todos os hosts '* .lan' registrados via DHCP resolvem bem: dnsmasq sabe quais IPs são atribuídos a quais nomes de host. No entanto, 'rtfm.lan' é lido de / etc / hosts e resolvido para 127.0.0.1.

Eu posso evitar que o dnsmasq leia / etc / hosts e adicione um endereço manualmente:

no-hosts
address=/rtfm.lan/192.168.1.2

Mas isso não é flexível: se um dia eu decidir mudar meu IP - eu também terei que alterá-lo no dnsmasq.conf.

Como posso dizer ao dnsmasq para usar local-hostname com seu IP real?

Apenas no caso ... aqui está minha configuração de DNSmasq:

# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
# Read resolv.conf serially
strict-order

#==========[ NAMESERVER ]==========#

# Cache size
cache-size=4096
# Don't read /etc/hosts
no-hosts
# Read additional hosts-file (not only /etc/hosts) to add entries into DNS
addn-hosts=/etc/hosts-dnsmasq
# Auto-append <domain> to simple entries in hosts-file
expand-hosts

#=== HOSTNAME OVERRIDES
address=/localhost/127.0.0.1 # *.localhost => 127.0.0.1

#==========[ DHCP ]==========#
# Enable for the local network?
dhcp-authoritative
# Tell MS Windows to release a lease on shutdown
dhcp-option=vendor:MSFT,2,1i

#=== DHCP
# Domain name
domain=lan
# DNS-resolve hosts in these domains ONLY from /etc/hosts && DHCP leases
local=/lan/

# DHCP range & lease time
dhcp-range=192.168.1.70,192.168.1.89,24h 
# Default route
dhcp-option=3,192.168.1.1

#=== FIXED LEASES
# LAN MY HOSTS
dhcp-host=00:23:54:5d:27:fa,                    rtfm.lan,               192.168.1.2
dhcp-host=00:23:54:5d:27:fb,                    rtfm.lan,               192.168.1.2
dhcp-host=c8:0a:a9:45:f1:03, 00:1e:64:9e:e9:5e, wtf.lan,                192.168.1.3
    
por kolypto 22.03.2011 / 22:18

2 respostas

10

Normalmente, você definiria seus hosts estáticos em /etc/hosts e ativaria hosts no arquivo dnsmasq.conf . dnsmasq permite que você especifique um nome alternativo para este arquivo.

Se você quiser que rtfm.lan seja endereçado como 192.168.1.2 , adicione uma linha contendo 192.168.1.2 rtfm.lan to /etc/hosts . Normalmente, seu arquivo hosts para o dnsmasq deve ser portável para todos os seus servidores.

Em rtfm.lan , a pilha IP causará um curto-circuito no roteamento e não enviará tráfego para a rede.

Se você atualizar seu arquivo /etc/hosts e sinalizar dnsmasq com um sinal HUP , o arquivo de hosts será relido e as alterações serão aplicadas.

EDITAR: O dnsmasq não foi projetado para fornecer um endereço de host dinâmico para seu próprio host. Conforme observado, ele fornece nomes de seu arquivo de concessão para clientes DHCP.

Se o seu host for um gateway da Internet, ele normalmente serviria um endereço estático local. A exibição do endereço do gateway da Internet pode causar problemas de roteamento e firewall.

Você pode configurar seu cliente DHCP para gravar um arquivo de hosts de uma linha. A opção dnsmasq addn-host pode ser usada para obter o dnsmasq para ler esse arquivo, além de /etc/hosts . Se o endereço provavelmente for alterado, o cliente DHCP poderá reescrever o arquivo e enviar o sinal dnsmasq a HUP na alteração do endereço IP.

    
por 22.03.2011 / 22:27
3

O dnsmasq pode resolver seu próprio nome de host desabilitando a leitura de / etc / hosts e configurando outro arquivo de configuração para ler os nomes de host, incluindo ele mesmo.

Configuração do

dnsmasq (/etc/dnsmaq.conf):

no-hosts
addn-hosts=/etc/dnsmasq_hosts

Em / etc / dnsmasq_hosts, configure o próprio nome do host para o endereço IP necessário (assim como outros nomes de host no lan local).

    
por 19.03.2015 / 12:05

Tags