dnsmasq DHCP 租用时间仅为 2 分钟

dnsmasq DHCP 租用时间仅为 2 分钟

我从 dnsmasq 获取的所有 DHCPOFFER 都有 2 分钟的 IP 租用时间,并且它会忽略更改它的选项。

更多细节:

我的网络上有两个路由器:

  • AVM FritzBox 7390 (192.168.0.1)
    • VDSL2 调制解调器
    • DECT 电话底座
    • 实际路由到互联网
  • Netgear R7000(运行 FreshTomato 固件,192.168.0.2)
    • WiFi 接入点
    • DHCP 服务器

我的内部 DNS 是在我的服务器上的 Docker 容器中运行的 Pi-Hole。(192.168.0.100)

FreshTomato 带来的 DHCP 服务器是一个 dnsmasq,我需要它告诉新客户端以下配置:

  • IP 在 192.168.0.50 - ...80 范围内
  • IP 租赁时间~1 天
  • 路由器是 FritzBox (192.168.0.1)
  • DNS 服务器是 Pi-Hole (192.168.0.100) 或 FritzBox (192.168.0.1)

所以我将所有这些信息放入 R7000 的 UI 中,当我保存配置时,会生成以下 dnsmasq 配置文件:

pid-file=/var/run/dnsmasq.pid
resolv-file=/etc/resolv.dnsmasq
addn-hosts=/etc/dnsmasq
dhcp-hostsfile=/etc/dnsmasq
expand-hosts
min-port=4096
interface=br0
dhcp-range=tag:br0,192.168.0.50,192.168.0.80,255.255.255.0,1440m
dhcp-option=tag:br0,3,192.168.0.1
dhcp-lease-max=255
dhcp-authoritative
log-queries
dhcp-option=6,192.168.0.100,192.168.0.1

当我使用这个简洁的 nmap 脚本测试 DHCP 配置时,它对我来说看起来是有效的:

nmap --script broadcast-dhcp-disccover

我得到以下答案:

| broadcast-dhcp-discover:
|   Response 1 of 1:
|     IP Offered: 192.168.0.71
|     DHCP Message Type: DHCPOFFER
|     Server Identifier: 192.168.0.2
|     IP Address Lease Time: 2m00s
|     Renewal Time Value: 1m00s
|     Rebinding Time Value: 1m45s
|     Subnet Mask: 255.255.255.0
|     Broadcast Address: 192.168.0.255
|     Domain Name Server: 192.168.0.100, 192.168.0.1
|_    Router: 192.168.0.1

除了 IP 租约时间只有 2 分钟外,其他一切都正确。我网络中的某些设备(3 部智能手机和 2 台 Android 平板电脑)不喜欢这么短的租约时间,并且每分钟都会断开 WiFi 连接。

有人知道我做错了什么吗?

有趣的事实:我刚刚刷入了 FreshTomato,在此之前我使用了 DD-WRT,它与 dnsmasq 有完全相同的问题。

经过几次测试后进行编辑

我为 dnsmasq 创建了一个小型测试环境来测试一些配置:

  • 运行 dnsmasq 的 Docker 容器
  • 第二个容器循环运行该 nmap 脚本

我发现的是:当我在行中指定租用时间时dhcp-range,它会被忽略。

我发现可以直接通过 IANA 分配的标签来设置 DHCP 选项(https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xml

当我设置 DHCP 租用时间时,dhcp-option=51,48h租用时间会改变,但续订和重新绑定时间不会改变。

将它们与标签 58 和 59 一起设置

dhcp-option=58,24h # DHCP Renewal (T1) Time
dhcp-option=59,42h # DHCP Rebinding (T2) Time

没有帮助,因为我得到的结果是:

IP Address Lease Time: 2d00h00m00s
Renewal Time Value: 1m00s
Rebinding Time Value: 1m45s

答案1

您确定 dnsmasq 已获取更改吗?我有时会遇到守护进程无法正确重启的问题。尝试重启路由器,看看配置更改是否真的以这种方式获取。如果您不想重启,只需重启 dnsmasq 并在重启后检查它是否有新的 PID。

顺便问一下,您是否考虑过这种可能性:您的 DHCP 服务器确实响应正确,但 nmap 脚本存在错误?我刚刚在 LAN 中运行了该命令,得到了相同的响应。当我检查系统日志时,我能够验证租约确实更长。

相关内容