首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dnsmasq dhcp不监听端口67

dnsmasq dhcp不监听端口67
EN

Unix & Linux用户
提问于 2022-09-24 20:17:43
回答 1查看 365关注 0票数 2

我正在尝试用dnsmasq托管DNS和DHCP服务。这是我的dnsmasq.conf

代码语言:javascript
复制
# DHCP
dhcp-authoritative
bind-interfaces

dhcp-range=192.168.122.2,192.168.122.99,12h
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

dhcp-host=0a:0a:0a:0a:0a:01,192.168.122.100  # node.local

# DNS
no-hosts # ignore etc hosts
address=/node.local/192.168.122.100
ptr-record=100.122.168.192.in-addr.arpa.,"node.local"

当我查看正在使用:sudo ss -tulpn | grep LISTEN侦听的端口时,我只看到:53,DNS端口被监听。端口67没有被监听,因此似乎DHCP服务没有在运行。

DHCP在运行吗?如果是这样的话,如果我只监听端口53,而不是默认的DHCP端口,客户端能够获得IP地址吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-09-25 09:03:12

IPv4 DHCP服务器需要能够发送和接收发送到目的地255.255.255.255的广播数据包,这需要(据我所知)使用原始套接字。

请参阅ss -A raw -lpn查找DHCP服务器的原始套接字。因为它在原始IP协议级别工作,所以套接字将不特定于端口67: DHCP服务器必须在输出数据包上自己构建UDP报头,包括输入端口号。

对于传入的数据包,如果它以正常的方式侦听UDP端口67,内核将丢弃一些DHCP服务器希望作为“错误配置”接收的数据包--正是因为DHCP客户端可能还没有有效的网络配置!或者,客户端可能不知道它在关机时已插入另一个网络,并可能开始使用对新网络不正确的网络参数来验证其旧的DHCP租约--理想情况下,DHCP服务器需要能够听到这一点,并向这样的客户端发送一个DHCP,告诉它忘记旧地址并重新启动DHCP进程。

因此,DHCP服务器需要使用原始套接字侦听传入的UDP数据包,还需要接收正常网络驱动程序堆栈将拒绝的一些传入数据包。因此,ss -tulpn | grep LISTEN不会显示这样的套接字。实际上,内核并不知道DHCP服务器在监听什么,因为使用原始套接字相当于告诉内核“给我任何传入IP数据包的副本,我将搜索自己感兴趣的特定内容”。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/718562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档