Dnsmasq将整个网络上的本地主机名解析为127.0.0.1


8

我的dnsmasq已配置:

  • 在主机“ rtfm.lan”上
  • 域“ lan”
  • 有些DHCP预设包含主机名

通过DHCP注册的所有“ * .lan”主机都可以正常解析:dnsmasq知道将哪些IP分配给了哪些主机名。但是,从/ etc / hosts中读取“ rtfm.lan”并解析为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

Answers:


10

通常,您将在其中定义静态主机/etc/hostshostsdnsmasq.conf文件中启用。 dnsmasq允许您为此文件指定一个备用名称。

如果你想rtfm.lan为解决192.168.1.2再加入这样一行192.168.1.2 rtfm.lan/etc/hosts。通常,dnsmasq的主机文件应可移植到所有服务器。

rtfm.lanIP堆栈上将使路由短路,并且不会将流量发送到网络上。

如果您更新/etc/hosts文件,信号dnsmasqHUP信号,hosts文件将被重读和应用的变化。

编辑:dnsmasq并非旨在为其自己的主机提供动态主机地址。如前所述,它确实从其租用文件中为DHCP客户端提供名称。

如果您的主机是Internet网关,则它通常会提供本地静态地址。提供Internet网关地址可能会导致路由和防火墙问题。

您可以将DHCP客户端配置为编写一个单行主机文件。addn-host可以使用dnsmasq选项使dnsmasq读取此文件/etc/hosts。如果地址可能会更改,则DHCP客户端可以重写文件并向dnsmasq HUP发送有关IP地址更改的信号。


所以..没有办法让dnsmasq使用从接口获取的当前IP吗?
kolypto

并非默认情况下,但是您可以让DHCP客户端提供所需的数据。我不确定为什么您要从dnsmasq为主机提供动态地址。
BillThor

4

dnsmasq可以通过禁用从/ etc / hosts的读取并配置另一个配置文件以读取包括自身在内的主机名来解析其自己的主机名。

dnsmasq配置(/etc/dnsmaq.conf):

no-hosts
addn-hosts=/etc/dnsmasq_hosts

在/ etc / dnsmasq_hosts中,配置自己的主机名指向IP地址之一(以及本地lan中的其他主机名)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.