dnsmasq 未向 DHCP 客户端提供 DNS 服务器信息

dnsmasq 未向 DHCP 客户端提供 DNS 服务器信息

我正在尝试使用带有 Raspbian Stretch (Linux) 的 Raspberry Pi,以便提供额外的网络监控和路由功能。为此,我有以下设置:

Internet router [eth1]
  ||
[Raspberry Pi]
  ||
Wifi for clients [wlan0]
Ethernet for clients [eth0] 

除了将 DNS 服务器分配给 DHCP 客户端外,我基本上已经让所有东西都正常工作了。我已经为这个问题苦苦挣扎了好几个星期,遵循了本网站和其他网站上的数十个指南,但无论我使用 dhcpd + dnsmasq、单独使用 dnsmasq、bind 还是其他什么:DNS 服务器都未分配给客户端。我还在客户端上尝试了各种操作系统:Windows、Ubuntu 和 Android,以确保这不是设置问题。但它们适用于所有其他 LAN/Wifi 网络,而不适用于此设置,因此一定是我的配置有问题。LAN 和 Wifi 设备的问题是一样的。顺便说一句,Wifi 由 hostapd 提供,可以正常工作。

我最新的设置只使用了 dnsmasq。通过 DHCP 分配地址的客户端可以

  • 访问内联网和国际网 IP 地址(ping、tracert、nmap)
  • 访问我的 RPI 上的 DNS 服务器(端口开放且可访问)
  • 接触网络中的其他客户端,反之亦然

我的 dnsmasq.conf 文件:


bogus-priv
expand-hosts
dhcp-authoritative
no-resolv    
interface=wlan0
interface=eth0
interface=lo
interface=eth1    
dhcp-range=192.168.19.30,192.168.19.160,1h    
bind-interfaces    
dhcp-option=option:dns-server,0.0.0.0,192.168.19.1,192.168.19.2,192.168.178.20
dhcp-option=3,192.168.19.1    
listen-address=127.0.0.1
listen-address=192.168.19.1
listen-address=192.168.19.2
listen-address=192.168.178.20    
server=192.168.178.1
server=8.8.8.8    
cache-size=1000    
log-queries
domain="mydomain.biz"

由于系统使用的是 systemd,我还在 /etc/systemd/network 中设置了文件 wlan0.network、eth0.network 和 eth1.network。eth1 分配一个固定 IP,对于 wlan0 和 eth0,我有


[Match]
Name=eth0

[Network]
Address=192.168.19.2/24
DHCPServer=yes


[Match]
Name=wlan0

[Network]
Address=192.168.19.1/24
DHCPServer=yes

如果我在 .network 文件中添加类似“DNS=192.168.19.1”的内容,也无济于事……我真的不知道我还能做什么,也不知道问题可能出在哪里。提前致谢!

答案1

我发现对我有用的解决方案:

在 /etc/dnsmasq.conf (或其他 conf 文件) 中输入以下内容:

# Set DNS server offered to clients(dnsmasq sometimes fails to do it automatically?)   
dhcp-option=6,192.168.1.1

... 将 192.168.1.1 替换为您的 dnsmasq 服务的 IP 地址(和/或其他 IP 地址)。

我的 dnsmasq 之前运行良好,客户端通过 DHCP 获取正确的 DNS 服务器(dnsmasq IP)。然后,不知何故,客户端没有获取 DNS 服务器信息,因此 DNS 查找失败。我猜是某些配置更改触发了这种情况,可能是因为我将 dnsmasq 的端口从标准 53 移到了 1053,因为我将另一个 DNS 服务器放在了 53(具体来说adguard-首页)。我仍然让 dnsmasq 提供 DHCP,主 DNS 服务器使用 dnsmasq 作为其上游 DNS。似乎此配置的某些方面(我猜是端口 1053 更改)触发了 dnsmasq 中的问题/错误。

相关内容