ILD

dnsmasq学习
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2022-4-21 站点:Inside Linux Development

Description

dnsmasq是一个轻量化的DNS, TFTP, PXE, Router advertisement 和 DHCP server。


用来向LAN侧提供DNS和DHCP服务。dnsmasq还支持DHCPv6 Server,还支持router advertisements.


dnsmasq编码时考虑到小的嵌入式系统,不想要的功能,可以不编入。


OPTIONS

注意:选项缺失参数,可以关闭该功能,比如 --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实例。


DNS选项

-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


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.