dnsmasq是一个轻量化的DNS, TFTP, PXE, Router advertisement 和 DHCP server。
用来向LAN侧提供DNS和DHCP服务。dnsmasq还支持DHCPv6 Server,还支持router advertisements.
dnsmasq编码时考虑到小的嵌入式系统,不想要的功能,可以不编入。
注意:选项缺失参数,可以关闭该功能,比如 --pid-file 没带参数,则不写pid。
-h, --no-hosts
不读取/etc/hosts中的hostname
还有一些其它参数,如 --hostsdir, -H ,-E等。来指定其它host文件和目录。
-k, --keep-in-foreground
在前台运行
-d, --no-daemon
调试模式,不fork,不写pid,不改变user id,输出到stderr和syslog.
-x, --pid-file=<path>
指定dnsmasq的pid路径,默认为/var/run/dnsmasq.pid
-g, --group=<groupname>
指定dnsmasq运行的group,如果dip存在,则默认为dip.
-8 --log-facility=<facility>
设置syslog的facility,如果以/开头,则记录到文件,如果为-,则记录到stderr.
-i, --interface=<interface name>
指定监听的interface,开启了这个选项,则自动将loopback加到接口列表。
如果没有指定--interface或--listen-address,则dnsmasq监听--except-interface之外的所有接口。
--bind-interfaces --bind-dynmic --listen-address
会检查接口的label(如eth1:0),来支持按地址监听。
支持结尾包含星号,如br*
-I, --except-interface=<interface name>
不监听接口
-2, --no-dhcp-interface=<interface name>
提供DNS, 但是不提供DHCP和TFTP的接口
-a, --listen-address=<ipaddr>
指定监听的ip,可以和--interface一起使用。没有--interface时,不会自动监听loopback接口,
必须手动添加127.0.0.1才可以
-z, --bind-interfaces
使用到 wildcard address绑定到接口,
就是说即使指定监听地址,也绑定到任意地址,但是在软件层面过滤。
这样可以实现多个dnsmasq实例,比如A实例绑定到eth0,B实例绑定到eth1。
--bind-dynamic
介于default模式和bind-interfaces之间,绑定到每个接口的地址。允许多个dnsmasq实例。
-p,--port=<port>
指定DNS的的端口,默认为标准DNS端口53,如果为0, 则关闭dns功能。
-y, --localise-queries
当/etc/hosts解析ip时,有多个ip时,使用接口的ip
-b, --bogus-priv
private reverse lookup,例如 192.168.x.x, 不像upstream请求解析。
-r, --resolv-file=<file>
从指定文件读取dns upstream server地址,而不是默认的/etc/resolv.conf
-R, --no-resolv
不读取/etc/resolv.conf,只接受命令行参数。
-o, --strict-order
按照/etc/resolv.conf中的顺序,向上游服务器解析地址。默认是优先选择up的server.
--all-servers
dns请求同时发往所有upstream server, 取先回的。
-n, --no-poll
不poll /etc/resolv.conf的改变。
--clear-on-reload
当upstream server改变时,清除DNS缓存。
-D, --domain-needed
转发A或者AAAA记录请求时,要求必须是域名,而不是一个plain name,如home, 必须有点。
-S, --local, --server=[/[<domain>]/[domain/]][<ipaddr>[#<port>]][@<interface>][@<source-ip>[#<port>]]
这个选项直接指定upstream server的ip 地址,这个选项不阻止从/etc/resolv.conf读取服务器的地址。
这个选项可以实现某些域名从特定服务器解析。
这个选项可以实现某些域名从host解析,而不从upstream server解析
ipv6地址可以包含一个 %interface scope-id,如fe80::202:a412:4512:7bbf%eth0.
-A, --address=/<domain>[/<domain>...]/[<ipaddr>]
指定某个域名的ip,解析这些域名时,不会向upstream查询。
-c, --cache-size
指定dns cache的条目数,0关闭cache, 默认是150条。太多影响性能。
-N, --no-negcache
如果一个域名解析不存在,则不缓存。
参考
https://thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html