Мой dnsmasq настроен:
Все хосты '* .lan', зарегистрированные через DHCP, разрешаются нормально: dnsmasq знает, какие IP-адреса назначены каким именам хостов. Однако 'rtfm.lan' читается из / etc / hosts и разрешается в 127.0.0.1.
Я могу запретить dnsmasq читать / etc / hosts и добавить адрес вручную:
no-hosts
address=/rtfm.lan/192.168.1.2
Но это не гибко: если однажды я решу изменить свой IP - мне также придется изменить его в dnsmasq.conf.
Как я могу сказать dnsmasq, чтобы он использовал имя локального хоста с его реальным IP?
На всякий случай .. вот мой конфиг 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
Обычно вы определяете свои статические хосты в /etc/hosts
и включить hosts
в твоем dnsmasq.conf
файл. dnsmasq
позволяет указать альтернативное имя для этого файла.
Если вы хотите rtfm.lan
называться 192.168.1.2
затем добавьте чтение строки 192.168.1.2 rtfm.lan
к /etc/hosts
. Обычно ваш файл hosts для dnsmasq должен быть переносимым на все ваши серверы.
На rtfm.lan
стек IP закоротит маршрутизацию и не отправит трафик в сеть.
Если вы обновите свой /etc/hosts
файл и сигнал dnsmasq
с HUP
signal, файл hosts будет перечитан и внесены изменения.
EDIT: dnsmasq не предназначен для обслуживания динамического адреса хоста для своего собственного хоста. Как уже отмечалось, он обслуживает имена из файла аренды для клиентов DHCP.
Если ваш хост является интернет-шлюзом, он обычно обслуживает локальный статический адрес. Обслуживание адреса Интернет-шлюза может вызвать проблемы с маршрутизацией и брандмауэром.
Вы можете настроить свой DHCP-клиент для записи однострочного файла hosts. Параметр dnsmasq addn-host
может использоваться, чтобы заставить dnsmasq читать этот файл в дополнение к /etc/hosts
. Если адрес, вероятно, изменится, то клиент DHCP может переписать файл и отправить dnsmasq HUP
сигнал об изменении IP-адреса.
dnsmasq может разрешить собственное имя хоста, отключив чтение из / etc / hosts и настроив другой файл конфигурации для чтения имен хостов, включая самого себя.
Конфигурация dnsmasq (/etc/dnsmaq.conf):
no-hosts
addn-hosts=/etc/dnsmasq_hosts
В / etc / dnsmasq_hosts настройте точку собственного имени хоста на IP-адрес, который вам нужен (а также другие имена хостов в локальной сети).