dnsmasq选项介绍

一. dnsmasq选项简介        

        dnsmasq大致有三类选项:调试选项,DNS配置选项,DHCP配置选项。选项分为命令行选项和配置文件选项,命令行选项和配置文件选项的唯一区别是命令行选项需要在选项前加上“--”。

        下面为一些重要的选项做详细的介绍。

二. 调试选项

--test

        读取并且检查配置文件的格式是否正确,并不启动dnsmasq。格式检查OK,dnsmasq返回0,否则返回非0,shell下通过输入echo $?获取dnsmasq返回结果。

-w,--help:

        显示dnsmasq所有的命令行选项。--help dhcp显示已知DHCPv4 option选项,--help dhcp6则显示DHCPv6 option选项,DHCP option分一篇单独介绍。

-k,--keep-in-foreground:

        在前台运行,但是dnsmasq的标准输入,标准输出,标准错误都链接到了/dev/null,也就是dnsmasq虽然在前台跑,但是终端不会输出任何信息。当某些进程,例如daemontools,需要监控dnsmasq进程是否存在时,可以使用该选项。这时daemontools fork出dnsmasq -k进程,因为dnsmasq并没有脱离父进程daemontools ,所以daemontools 可以通过wait可以监控dnsmasq是否退出,并在dnsmasq退出后,决定是否重新启动。

-d,--no-daemon:

        只用于调试模式,标准输入,标准输出都链接到了当前终端。终端打印较多,只适合用于调试,当dnsmasq收到SIGUSR1时,会立即输出dnsmasq缓存的DNS请求的记录。

-q,--log-queries:

        输出由dnsmasq处理的DNS请求的缓存的记录的日志。当dnsmasq收到SIGUSR1时,会立即输出dnsmasq缓存的DNS请求的记录。当dnsmasq指定--log-queries=extra时,会有更详细的日志输出:包括请求client的IP地址等等。

--log-dhcp:

        输出额外的DHCP日志:记录所有发送到client的选项和标签(option数字对应的名称),

三. DNS配置选项

-p,--port=<port>:

        dnsmasq监听<port>端口而不是标准的53端口。如果--port=0,则完全关闭DNS功能,只留下DHCP和TFTP功能。

-Q,--query-port=<query_port>:

        指定dnsmasq向外发送请求的和监听服务器回复的UDP端口,而不是使用随机端口。使用此选项会有被DNS欺骗攻击的隐患,但是这可能会更快并且占用更少的资源。

-i,--interface=<interface name>:

        只监听指定接口的DNS请求。当使用--interface指定某接口时,回环接口也会被dnsmasq加入到监听的接口列表中。

-r,--resolv-file=<file>:

        从<file>中读取上游域名服务器的IP地址,不从/etc/resolv.conf读取。

-h,--no-hosts:

        不读取/etc/hosts的主机名。当读取/etc/hosts文件时,假如/etc/hosts中有一项"192.168.100.1 www.hello.com",dnsmasq下游客户端请求www.hello.com时,dnsmasq会直接把192.168.100.1的结果返回到客户端,而不是向上游域名服务器请求。--no-hosts能避免这个问题。

-R,--no-resolv:

        dnsmasq不读取/etc/resolv.conf文件,包括通过--resolv-file指定的文件。只从dnsmasq命令行选项或dnsmasq配置文件中(选项为--server--address)获取上流域名服务器地址。

-n,--no-poll:

        dnsmasq不轮询/etc/resolv.conf内容,默认情况下dnsmasq会自动读取/etc/resolv.conf或--resolv-file指定的文件内容。

-S,--local, --server=[/[<domain>]/[domain/]][ipaddr[#<port>][@<sorce-ip>|<interface>[#<port>]]:

        用于直接指定上游服务器的情况。但是dnsmasq仍然会读取/etc/resolv.conf文件。当dnsmasq收到domain的查询请求时,dnsmasq会把请求转发到ipaddr,ipaddr通常是一个内部的DNS服务器或是一个网关地址。其他domain请求则通过向/etc/resolv.conf或--resolv-file指定的文件请求。

-A,--address=/<domain>/[domain/][<ipaddr>]:

        当client向dnsmasq请求查询domain时,dnsmasq把ipaddr作为查询结果回复到client,dnsmasq不会把client的请求转发到ipaddr。这是--address和--server的区别。

举例:--server和--address对比

--server=/www.mynode.com/192.168.1.1

        dnsmasq将client对www.mynode.com的查询请求转发到192.168.1.1,dnsmasq将从192.168.1.1接收到的查询结果,回复给client。

--address=/www.mynode.com/192.168.1.1

        dnsmasq收到client的www.mynode.com的查询请求时,直接把192.168.1.1回复给client。也就是client访问www.mynode.com,也就是访问192.168.1.1。

-max-ttl:<time>:

        设置一个发送到client的最大TTL值(DNS回复包中会有TTL字段,表示DNS缓存过期时长)。如果time的值比上游服务器回复给dnsmasq的TTL值更小,则dnsmasq回复给client的TTL值为time值。否则采用上游服务器回复的值,发送到client。

--max-cache-ttl=<time>:

        为dnsmasq缓存中的条目设置最大的TTL值。

--min-port=<port>:

        dnsmasq向上游发送的DNS查询请求包使用的源端口号不小于--min-port指定的port。不指定的话,默认最小端口是1024。这个选项对于DNS服务器在防火墙后面,只放开小范围端口的情况有用。

--max-port=<port>:

        dnsmasq向上游发送的DNS查询请求包使用的源端口号不大于--max-port指定的port。这个选项对于DNS服务器在防火墙后面,只放开小范围端口的情况有用。

--ipset=/<domain>/[domain/]<ipset>[,<ipset>]

        把指定domain解析到的IP地址放到ipset中。

使用举例:

step1:使用ipset命令创建一个名为test的IP set

ipset create test hash:ip

step2:在dnsmasq配置文件中添加一条(将www.baidu.com和www.sina.com解析到的地址放到test的ipset中)

# in /etc/resolv.conf or file specified by --resolv-file
ipset=/www.baidu.com/www.sina.com/test

step3:查看结果,

~ # ipset list test -o save
create test hash:ip family inet hashsize 1024 maxelem 65536
add test 183.232.231.174
add test 183.232.231.172
add test 183.232.4.19
add test 183.232.23.210
add test 120.232.104.138

四. DHCP配置选项

−F, --dhcp-range=[tag:<tag>[,tag:<tag>],][set:<tag>,]<start-addr>[,<end-addr>|<mode>][,<netmask>[,<broadcast>]][,<lease time>]

         开启dnsmasq的DHCP功能。分配到client的IP地址在start-addrend-addr之间。lease time默认是以秒为单位,也可以是分钟(eg:45m),也可以是小时(eg:2h)。不指定lease time则为1小时,最小的lease time可以指定为2分钟。

使用举例:

        dhcp-range=tag:br0,set:br0,192.168.100.100,192.168.100.254,255.255.255.0,192.168.100.255,7200
为br0网络接口下端的DHCP client分配IP地址为192.168.100.100到192.168.100.254,子网掩码是255.255.255.0,广播地址为192.168.100.255,租期为7200s。

        下图为使用--log-dhcp后,DHCP client请求IP地址时,dnsmasq的日志输出,留意tags字段内容。就是--dhcp-range指定的tag。

Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 available DHCP range: 192.168.100.100 -- 192.168.100.254
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 vendor class: MSFT 5.0
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 client provides name: WIN7-1912152027
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 DHCPREQUEST(br0) 192.168.100.231 28:d2:44:88:6d:ef 
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 tags: br0
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 DHCPACK(br0) 192.168.100.231 28:d2:44:88:6d:ef WIN7-1912152027
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 requested options: 1:netmask, 15:domain-name, 3:router, 6:dns-server, 
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 requested options: 44:netbios-ns, 46:netbios-nodetype, 47:netbios-scope, 
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 requested options: 31:router-discovery, 33:static-route, 121:classless-static-route, 
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 requested options: 249, 43:vendor-encap
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 next server: 192.168.100.1
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 broadcast response
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 sent size:  1 option: 53 message-type  5
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 sent size:  4 option: 54 server-identifier  192.168.100.1
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 sent size:  4 option: 51 lease-time  2h
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 sent size:  4 option: 58 T1  1h
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 sent size:  4 option: 59 T2  1h45m
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 sent size:  4 option:  1 netmask  255.255.255.0
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 sent size:  4 option: 28 broadcast  192.168.100.255
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 sent size:  4 option:  3 router  192.168.100.1
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 sent size:  4 option:  6 dns-server  192.168.100.1
Jan  1 10:10:11 Router daemon.info dnsmasq-dhcp[2044]: 835900391 sent size: 18 option: 81 FQDN  03:ff:ff:57:49:4e:37:2d:31:39:31:32:31:35...

−G, --dhcp-host=[<hwaddr>][,id:<client_id>|*][,set:<tag>][,<ipaddr>][,<host name>][,<lease_time>][,ignore]

        主要用于为指定的主机分配固定的IP地址,租约时间甚至主机名。指定的IP地址不限制在--dhcp-range指定的IP地址范围内,但是需要在相同的子网内。

 使用举例:

        dhcp-host=WIN7-1912152027,192.168.100.150

为主机名为WIN7-1912152027的主机固定分配192.168.100.150。

−O, --dhcp-option=[tag:<tag>,[tag:<tag>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor class>],][<opt>|option:<opt-name>|option6:<opt>|option6:<opt-name>],[<value>[,<value>]]

        指定一些额外的DHCP option发送到client。默认情况下,dnsmasq会发送标准的DHCP option到client,但是某些情况client需要从DHCP server通过option回去额外的信息。dnsmasq可以通过十进制数或者"option:<option name>"来设置添加option。如下所示:

#通过十进制数来指定
--dhcp-option=42,192.168.0.4

#通过option name指定
--dhcp-option=option:ntp-server,192.168.0.4

        dnsmasq的DHCP option的十进制数和option name的对应关系可以通过dnsmasq -help dhcp

来查询。

~ # dnsmasq --help dhcp
Known DHCP options:
  1 netmask
  2 time-offset
  3 router
  6 dns-server
  7 log-server
  9 lpr-server
 13 boot-file-size
 15 domain-name
 16 swap-server
 17 root-path
 18 extension-path
 19 ip-forward-enable
 20 non-local-source-routing
 21 policy-filter
 22 max-datagram-reassembly
 23 default-ttl
 26 mtu
 27 all-subnets-local
 31 router-discovery
 32 router-solicitation
 33 static-route
 34 trailer-encapsulation
 35 arp-timeout
 36 ethernet-encap
 37 tcp-ttl
 38 tcp-keepalive
 40 nis-domain
 41 nis-server
 42 ntp-server
 44 netbios-ns
 45 netbios-dd
 46 netbios-nodetype
 47 netbios-scope
 48 x-windows-fs
 49 x-windows-dm
 58 T1
 59 T2
 60 vendor-class
 64 nis+-domain
 65 nis+-server
 66 tftp-server
 67 bootfile-name
 68 mobile-ip-home
 69 smtp-server
 70 pop3-server
 71 nntp-server
 74 irc-server
 77 user-class
 93 client-arch
 94 client-interface-id
 97 client-machine-id
119 domain-search
120 sip-server
121 classless-static-route
125 vendor-id-encap
255 server-ip-address

五.总结

        dnsmasq除了还支持DNSSEC,DHCPv6,RA,TFTP server,后面学习到了再继续补充。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值