简介
dnsmasq是一个轻量级的 DNS、TFTP 和 DHCP 服务器。它旨在为 LAN 提供 DNS 和 DHCP 服务。
Dnsmasq 接受 DNS 查询,并从小型本地缓存中回答它们,或者将它们转发到真实的递归 DNS 服务器。它加载 / etc / hosts的内容,以便可以解析未出现在全局 DNS 中的本地主机名,并回答对 DHCP 配置的主机的 DNS 查询。
dnsmasq DHCP 服务器支持静态地址分配和多个网络。它会自动发送一组默认 DHCP 选项。
选项
-h, --no-hosts Don't read the hostnames in /etc/hosts.
-d, --no-daemon Debug mode: don't fork to the background, don't write a pid file, don't change user id, generate a complete cache dump on receipt on SIGUSR1, log to stderr as well as syslog, don't fork new processes to handle TCP queries.
-F, --dhcp-range=[[net:]network-id,]<start-addr>,<end-addr>[[,<netmask>],<broadcast>][,<lease time>] Enable the DHCP server. Addresses will be given out from the range <start-addr> to <end-addr> and from statically defined addresses given in dhcp-host options.
listen-address 定义dnsmasq监听的地址,默认是监控本机的所有网卡上。
流程:
main@dnsmasq.c
->dhcp_packet@dhcp.c
->recvmsg //接收来自client端的数据包
->dhcp_reply //封装dhcp 数据包,主要是offer,ack
->sendmsg //发送数据包
参考:
1. http://androidxref.com/6.0.0_r5/xref/external/dnsmasq/man/dnsmasq.8