(改编自 dnsmasq 邮件列表,该存档似乎已关闭,因此我不确定它是否仍然有效)
你好,
在更改架构时,我在家庭网络上设置了 dnsmasq 来替换 isc/bind 旧系统 :)。该设置依赖于充当路由器/防火墙/“所有真相的主宰者”(DNS、ntp 等)的 debian 盒子:
- 通过 ADSL 接入互联网,并将公网 IP 分配给 eth1
- 有线网络 192.168.0.0/24 绑定到 eth0(具有 192.168.0.10 地址)
- 有线网络 192.168.1.0/24 绑定到 wlan3(具有 192.168.1.10 地址)
- 内部网络的域名是“home”
- 防火墙由 shorewall 处理
dnsmasq 配置为:
domain-needed
bogus-priv
local=/home/
expand-hosts
domain=home
dhcp-range=eth1,192.168.0.70,192.168.0.150,240h,set:lan
dhcp-range=wlan3,192.168.1.10,192.168.1.50,240h,set:wifi
dhcp-option=42,0.0.0.0
dhcp-option=27,1
dhcp-option=19,0 # option ip-forwarding off
dhcp-option=44,0.0.0.0 # set netbios-over-TCP/IP nameserver(s) aka
WINS server(s)
dhcp-option=45,0.0.0.0 # netbios datagram distribution server
dhcp-option=46,8 # netbios node type
dhcp-option=252,"\n"
dhcp-option=vendor:MSFT,2,1i
dhcp-authoritative
有效的方法:
- 子网中的客户端(有线和无线)通过 DHCP 获取预期范围内的 IP 地址
- 外部(Internet = 转发)DNS解析适用于这些客户端和服务器
无效的方法:
- “home”域名似乎没有被正确处理。
/etc/hosts
有一个192.168.0.10 server.home
显然没有被 dnsmasq 使用的条目,即dig server
没有返回名称,dig server.home
也没有。 - 我没有成功发送依赖于其发送网络的名称解析。也就是说,
server
上面的条目理想情况下应该指向有线网络的 192.168.0.10 和无线网络的 192.168.1.10。今天的设置有效,但并不真正正确(从无线网络到服务器的流量通过有线接口到达服务器)。
我确信这是显而易见的,但我对 dnsmasq 还很陌生,非常感谢任何指点。类似的问题不久前,但接受的答案表明 dnsmasq 没有正确处理这些基本要求(本地域,PTR 更新)(?)
谢谢
答案1
我最终通过以下方式解决了第一个关键问题:
- 复制
/etc/resolv.conf
到/etc/resolv.dnsmasq
- 只设置
nameserver 127.0.0.1
一行/etc/resolv.conf
/etc/dnsmasq.conf
我补充说resolv-file=/etc/resolv.dnsmasq
这会强制服务器解析本地 DNS 上的 DNS 名称...
... 即 dnsmasq ...
... 它使用在中定义的上游服务器/etc/resolv.dnsmasq
第二个问题仍然存在,但它不那么重要。
答案2
“将 /etc/resolv.conf 复制到 /etc/resolv.dnsmasq”
这只在 debian 上有用。一个不错的非侵入式设置允许 dnsmasq 读取以 127.0.0.1 开头的 resolv.conf 文件
主域可能由于您在 /etc/resolv.conf 中的搜索设置而不起作用(不是 dnsmasq 当前使用的搜索设置)