0%

Dnsmasq安装及配置

一、Dnsmasq介绍

1.1 简介

Dnsmasq是一个小巧且方便地用于配置DNS和DHCP的工具,作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。


1.2 原理

  • 本机APP访问主机的/etc/resolv.conf获取DNSServer,该文件指向的DNSServer为Dnsmasq。
  • 本地局域网中的主机可以直接访问Dnsmasq,即在这些主机中/etc/resolv.conf指向了Dnsmasq。
  • Dnsmasq需要通过上游DNS来进行域名解析,上游DNS可以配置在/etc/resolv.dnsmasq.conf中,该文件需要在Dnsmasq的配置文件/etc/dnsmasq.conf中指定。

image.png


1.3 主要功能

  • 将Dnsmasq作为本地DNS服务器使用,直接修改电脑的本地DNS的IP地址即可。

  • 应对ISP的DNS劫持(反DNS劫持),输入一个不存在的域名,正常的情况下浏览器是显示无法连接,DNS劫持会跳转到一个广告页面。先随便nslookup 一个不存在的域名,看看ISP商劫持的IP地址。

  • 智能DNS加快解析速度,打开/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如国内外不同的网站使用不同的DNS。

国内指定DNS

1
2
3
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
server=/taobaocdn.com/114.114.114.114

国外指定DNS

1
server=/google.com/223.5.5.5
  • 屏蔽网页广告,将指广告的URL指定127这个IP,就可以将网页上讨厌的广告给去掉了。
1
2
address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1
  • 指定域名解析到特定的IP上。这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。
1
address=/freehao123.com/123.123.123.123
  • 管理控制内网DNS,首先将局域网中的所有的设备的本地DNS设置为已经安装Dnsmasq的服务器IP地址。然后修改已经安装Dnsmasq的服务器Hosts文件:/etc/hosts,指定域名到特定的IP中。
1
例如想让局域网中的所有用户访问www.freehao123.com时跳转到192.168.0.2,添加:192.168.0.2  www.freehao123.com在Hosts文件中既可,整个过程也可以说是“DNS劫持”

二、开始安装

2.1 安装服务

1
yum -y install dnsmasq

2.2 配置文件

  • dnsmasq配置文件
  • vim /etc/dnsmasq.conf

Dnsmasq有很多自定义的配置,此处我根据公司目前需求环境简化了很多,大家如果有兴趣的话,可以多去了解一下,或者直接参考本博客最后面额外补充的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 指定上游DNS服务器
resolv-file=/etc/resolv.dnsmasq.conf

# 如果没有指定上游resolv.dnsmasq.conf配置文件的话,这里就可以开启 no-resolv
#no-resolv
#向所有上游服务器发送查询,而不是一个
#all-servers

# 记录dns查询日志,如果指定 log-queries=extra 那么在每行开始处都有额外的日志信息
log-queries
log-facility=/var/log/dnsmasq/dnsmasq.log

# 不加载本地的 /etc/hosts 文件
no-hosts
# 重新指定本地hosts文件,用来保存所有的解析记录
addn-hosts=/etc/dnsmasq.hosts
cache-size=20000
local-ttl=600
dns-forward-max=20000

  • 配置上游dns地址
  • vim /etc/resolv.dnsmasq.conf
1
2
3
4
# 前面两个为公司内网AD域的dns地址,当dnsmasq解析不到的记录会丢给下面3个去解析,前两个ip是内网AD域DNS地址,可根据自己环境配置
nameserver 10.1.100.xx
nameserver 10.1.100.xx
nameserver 8.8.8.8

2.3 服务启动

1
2
3
4
systemctl status  dnsmasq
systemctl start dnsmasq
systemctl stop dnsmasq
systemctl restart dnsmasq

2.4 日志维护

内网解析量很多,每天产生大量日志,避免磁盘爆满影响服务,建议开启nscd缓存以及定时任务清理本地解析日志


2.41 安装nscd缓存
1
2
3
4
5
6
7
8
yum install nscd -y
service nscd start
# 查看缓存统计信息
nscd -g
# 清除指定类型缓存
nscd -i passwd
nscd -i group
nscd -i hosts

2.42 定时清理日志任务
1
2
# 每周清理一次
0 0 * * 0 >/var/log/dnsmasq/dnsmasq.log

2.5 Dnsmasq服务测试

本地解析记录保存在 /etc/dnsmasq.hosts 文件中,平时可以自己按照格式往里面添加解析记录,然后局域网dns地址全部指向此台dnsmasq的ip地址即可


2.51 新增解析记录
1
2
# 新增一条测试记录,ip + 空格 + 主机名
172.17.17.100 ansible-host

2.52 客户端配置

在局域网中找一台机器,修改本机resolv.conf中的dns解析地址为Dnsmasq地址,然后本机 ping ansible-host 看是否反馈的地址是 172.17.17.100 则服务配置成功

  • vim /etc/resolv.conf
1
2
3
4
# 这里search后面跟的内容会自动不全到解析记录里面(可选)
search xx.xx.cn
# 下面这个ip指向Dnsmasq服务器的ip地址
nameserver xxx.xxx.xxx.xxx

三、额外补充配置介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
# 不加载本地的 /etc/hosts 文件

# no-hosts

# 添加读取额外的 hosts 文件路径,可以多次指定。如果指定为目录,则读取目录中的所有文件。

# addn-hosts=/etc/dnsmasq.hosts.d

# 读取目录中的所有文件,文件更新将自动读取

# hostsdir=/etc/dnsmasq.hosts.d

# 例如,/etc/hosts中的os01将扩展成os01.example.com

# expand-hosts
##############################################################################
# 缓存时间设置,一般不需要设置
# 本地 hosts 文件的缓存时间,通常不要求缓存本地,这样更改hosts文件后就即时生效。

# local-ttl=3600

# 同 local-ttl 仅影响 DHCP 租约

# dhcp-ttl=<time>

# 对于上游返回的值没有ttl时,dnsmasq给一个默认的ttl,一般不需要设置,

# neg-ttl=<time>

# 指定返回给客户端的ttl时间,一般不需要设置

# max-ttl=<time>

# 设置在缓存中的条目的最大 TTL。

# max-cache-ttl=<time>

# 不需要设置,除非你知道你在做什么。

# min-cache-ttl=<time>

# 一般不需要设置

# auth-ttl=<time>
##############################################################################
# 记录dns查询日志,如果指定 log-queries=extra 那么在每行开始处都有额外的日志信息。

# log-queries

# 设置日志记录器,'-' 为 stderr,也可以是文件路径。默认为:DAEMON,调试时使用 LOCAL0。

# log-facility=<facility>

# log-facility=/var/log/dnsmasq/dnsmasq.log

# 异步log,缓解阻塞,提高性能。默认为5,最大100。

# log-async[=<lines>]

# log-async=50
##############################################################################
# 指定用户和组

# user=nobody

# group=nobody
##############################################################################
# 指定DNS的端口,默认53,设置 port=0 将完全禁用 DNS 功能,仅使用 DHCP/TFTP

# port=53

# 指定 EDNS.0 UDP 包的最大尺寸,默认为 RFC5625 推荐的 edns-packet-max=4096

# edns-packet-max=<size>

# 指定向上游查询的 UDP 端口,默认是随机端口,指定后降低安全性、加快速度、减少资源消耗。
# 设置为 '0' 由操作系统分配。

# query-port=53535

# 指定向上游查询的 UDP 端口范围,方便防火墙设置。

# min-port=<port>

# max-port=<port>

# 指定接口,指定后同时附加 lo 接口,可以使用'*'通配符。
# 不能使用接口别名(例如:"eth1:0"),请用 listen-address 选项替代。

# interface=wlp2s0

# 指定排除的接口,排除优先级高,可以使用'*'通配符

# except-interface=

# 仅接受同一子网的 DNS 请求。
# 仅在未指定 interface、except-interface、listen-address 或者 auth-server 时有效。

#local-service

# 指定不提供 DHCP 或 TFTP 服务的接口,仅提供 DNS 服务。

# no-dhcp-interface=enp3s0

# 指定IP地址,可以多次指定。
# interface 选项和 listen-address 选项可以同时使用。
# 下面两行与指定 interface 选项的作用类似。

listen-address=192.168.10.17

# listen-address=127.0.0.1

# 通常情况下即使设置了 interface 选项(例如:interface=wlp2s0 )
# 将仍然绑定到通配符地址(例如:*:53 )。
# 开启此项将仅监听指定的接口。
# 适用于在同一主机的不同接口或 IP 地址上运行多个 dns 服务器。

bind-interfaces

# 对于新添加的接口不进行绑定。仅 Linux 系统支持,其他系统等同于 bind-interfaces 选项。

# bind-dynamic
##############################################################################
# 如果 hosts 中的主机有多个 IP 地址,仅返回对应子网的 IP 地址。

localise-queries

# 如果反向查找的是私有地址例如192.168.X.X,仅从 hosts 文件查找,不再转发到上游服务器

# bogus-priv

# 对于任何被解析到此 IP 的域名,将响应 NXDOMAIN 使其解析失效,可以多次指定
# 通常用于对于访问不存在的域名,禁止其跳转到运营商的广告站点。

# bogus-nxdomain=64.94.110.11

# 忽略包含指定地址的 A 记录查询的回复。
# 例如上游有台 dns 服务器伪造 www.baidu.com 的 IP 为 1.1.1.1 并且响应速度非常快。
# 指定 ignore-address=1.1.1.1 可以忽略它的响应信息,
# 从而等待 www.baidu.com 正确的查询结果。

# ignore-address=<ipaddr>

filterwin2k
##############################################################################
# 指定 resolv-file 文件路径,默认/etc/resolv.conf

# resolv-file=/etc/resolv.conf

# 不读取 resolv-file 来确定上游服务器

# no-resolv

# 在编译时需要启用 DBus 支持。

# enable-dbus[=<service-name>]

# 严格按照resolv.conf中的顺序进行查找

# strict-order

# 向所有上游服务器发送查询,而不是一个。

all-servers

# 启用转发循环检测

# dns-loop-detect
##############################################################################
# 这项安全设置是拒绝解析包含私有 IP 地址的域名,
# 这些IP地址包括如下私有地址范围:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。
# 其初衷是要防止类似上游DNS服务器故意将某些域名解析成特定私有内网IP而劫持用户这样的安全***。
# 直接在配置文件中注销 stop-dns-rebind 配置项从而禁用该功能。
# 这个方法确实可以一劳永逸的解决解析内网 IP 地址的问题,
# 但是我们也失去了这项安全保护的特性,所以在这里我不推荐这个办法。
# 使用 rebind-domain-ok 进行特定配置,顾名思义该配置项可以有选择的忽略域名的 rebind 行为

stop-dns-rebind

rebind-localhost-ok

# rebind-domain-ok=[<domain>]|[[/<domain>/[<domain>/]

rebind-domain-ok=/.test.com/
##############################################################################
# 也不要检测 /etc/resolv.conf 的变化

# no-poll

# 重启后清空缓存

clear-on-reload

# 完整的域名才向上游服务器查找,如果仅仅是主机名仅查找hosts文件

domain-needed
##############################################################################
# IP地址转换

# alias=[<old-ip>]|[<start-ip>-<end-ip>],<new-ip>[,<mask>]
##############################################################################
# local=[/[<domain>]/[domain/]][<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]

# server=[/[<domain>]/[domain/]][<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]

server=/test.com/192.168.10.117

server=/10.168.192.in-addr.arpa/192.168.10.117

# rev-server=<ip-address>/<prefix-len>,<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]

# 将任何属于 <domain> 域名解析成指定的 <ipaddr> 地址。
# 也就是将 <domain> 及其所有子域名解析成指定的 <ipaddr> IPv4 或者 IPv6 地址,通常用于屏蔽特定的域名。
# 一次只能指定一个 IPv4 或者 IPv6 地址,要同时返回 IPv4 和IPv6 地址,请多次指定 address= 选项。
# 注意: /etc/hosts 以及 DHCP 租约将覆盖此项设置。

# address=/<domain>/[domain/][<ipaddr>]

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

# mx-host=<mx name>[[,<hostname>],<preference>]

# mx-target=<hostname>

# SRV 记录

# srv-host=<_service>.<_prot>.[<domain>],[<target>[,<port>[,<priority>[,<weight>]]]]

# A, AAAA 和 PTR 记录

# host-record=<name>[,<name>....],[<IPv4-address>],[<IPv6-address>][,<TTL>]

# TXT 记录

# txt-record=<name>[[,<text>],<text>]

# PTR 记录

# ptr-record=<name>[,<target>]

# naptr-record=<name>,<order>,<preference>,<flags>,<service>,<regexp>[,<replacement>]

# CNAME 别名记录

# cname=<cname>,<target>[,<TTL>]

# dns-rr=<name>,<RR-number>,[<hex data>]

# interface-name=<name>,<interface>[/4|/6]

# synth-domain=<domain>,<address range>[,<prefix>]

# add-mac[=base64|text]

# add-cpe-id=<string>

# add-subnet[[=[<IPv4 address>/]<IPv4 prefix length>][,[<IPv6 address>/]<IPv6 prefix length>]]
##############################################################################
##############################################################################
# 缓存条数,默认为150条,cache-size=0 禁用缓存。

cache-size=1000

# 不缓存未知域名缓存,默认情况下dnsmasq缓存未知域名并直接返回为客户端。

no-negcache

# 指定DNS同属查询转发数量

dns-forward-max=1000
##############################################################################

# DHCP 选项

##############################################################################
# 设置 DHCP 地址池,同时启用 DHCP 功能。
# IPv4 <mode> 可指定为 static|proxy ,当 <mode> 指定为 static 时,
# 需用 dhcp-host 手动分配地址池中的 IP 地址。
# 当 <mode> 指定为 proxy 时,为指定的地址池提供 DHCP 代理。

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

# dhcp-range=172.16.0.2,172.16.0.250,255.255.255.0,1h

# dhcp-range=192.168.10.150,192.168.10.180,static,255.255.255.0,1h

# 根据 MAC 地址或 id 固定分配客户端的 IP 地址、主机名、租期。

# IPv4 下指定 id:* 将忽略 DHCP 客户端的 ID ,仅根据 MAC 来进行 IP 地址分配。

# 在读取 /etc/hosts 的情况,也可以根据 /etc/hosts 中的主机名分配对应 IP 地址。

# 指定 ignore 将忽略指定客户端得 DHCP 请求。

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

# dhcp-hostsfile=<path>

# dhcp-hostsdir=<path>

# 读取 /etc/ethers 文件 与使用 dhcp-host 的作用相同。IPv6 无效。

# read-ethers

# 指定给 DHCP 客户端的选项信息,
# 默认情况下 dnsmasq 将发送:子网掩码、广播地址、DNS 服务器地址、网关地址、域等信息。
# 指定此选项也可覆盖这些默认值并且设置其他选项值。
# 重要:可以使用 option:<option-name>或者 option号 来指定。

# <option-name> 和 option号的对应关系可使用命令:

# dnsmasq --help dhcp 以及 dnsmasq --help dhcp6 查看,这点很重要。

# 例如设置网关参数,既可以使用 dhcp-option=3,192.168.4.4 也可以使用 dhcp-option = option:router,192.168.4.4。

# 0.0.0.0 意味着当前运行 dnsmasq 的主机地址。

# 如果指定了多个 tag:<tag> 必须同时匹配才行。

# [encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],] 有待继续研究。

# 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-force=[tag:<tag>,[tag:<tag>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]

# dhcp-optsfile=<path>

# dhcp-optsdir=<path>

# dhcp-option=3,1.2.3.4

# dhcp-option=option:router,1.2.3.4

# dhcp-option=option:router,192.168.10.254

# dhcp-option=option:dns-server,192.168.10.254,221.12.1.227,221.12.33.227
##############################################################################

# (IPv4 only) 禁用重用服务器名称和文件字段作为额外的 dhcp-option 选项。
# 一般情况下 dnsmasq 从 dhcp-boot 移出启动服务器和文件信息到 dhcp-option 选项中。
# 这使得在 dhcp-option 选项封包中有额外的选项空间可用,但是会使老的客户端混淆。
# 此选项将强制使用简单并安全的方式来避免此类情况。可以认为是一个兼容性选项。

#dhcp-no-override
##############################################################################
# DHCP 使用客户端的 MAC 地址的哈希值为客户端分配 IP 地址,
# 通常情况下即使客户端使自己的租约到期,客户端的 IP 地址仍将长期保持稳定。
# 在默认模式下,IP 地址是随机分配的。
# 启用 dhcp-sequential-ip 选项将按顺序分配 IP 地址。
# 在顺序分配模式下,客户端使租约到期更像是仅仅移动一下 IP 地址。
# 在通常情况下不建议使用这种方式。

# dhcp-sequential-ip

##############################################################################
# 默认为150,即最多分配150个ip地址出去,最大1000个ip

# dhcp-lease-max=150

# (IPv4 only) 指定DHCP端口,默认为67和68。如果不指定则为1067和1068,单指定一个,第二个加1

# dhcp-alternate-port[=<server port>[,<client port>]]

# 谨慎使用此选项,避免 IP 地址浪费。(IPv4 only) 允许动态分配 IP 地址给 BOOTP 客户端。
# 注意:BOOTP 客户端获取的 IP 地址是永久的,将无法再次分配给其他客户端。

# bootp-dynamic[=<network-id>[,<network-id>]]

# 谨慎使用此选项。
# 默认情况下 DHCP 服务器使用 ping 的方式进行确保 IP 未被使用的情况下将 IP 地址分配出去。
# 启用此选项将不使用 ping 进行确认。

# no-ping
##############################################################################
# 记录额外的 dhcp 日志,记录所有发送给 DHCP 客户端的选项(option)以及标签(tag)信息

# log-dhcp

# 禁止记录日常操作日志,错误日志仍然记录。启用 log-dhcp 将覆盖下列选项。

# quiet-dhcp

# quiet-dhcp6

# quiet-ra

# 修改 DHCP 默认租约文件路径,默认情况下无需修改

# dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

# (IPv6 only)

# dhcp-duid=<enterprise-id>,<uid>
##############################################################################
# dhcp-script=<path>

# dhcp-luascript=<path>

# dhcp-scriptuser=root

# script-arp

# leasefile-ro

# bridge-interface=<interface>,<alias>[,<alias>]
##############################################################################
# 给 DHCP 服务器指定 domain 域名信息,也可以给对应的 IP 地址池指定域名。
# 直接指定域名

# 示例:domain=thekelleys.org.uk

# 子网对应的域名

# 示例:domain=wireless.thekelleys.org.uk,192.168.2.0/24

# ip范围对应的域名

# 示例:domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200

# domain=<domain>[,<address range>[,local]]

# 在默认情况下 dnsmasq 插入普通的客户端主机名到 DNS 中。
# 在这种情况下主机名必须唯一,即使两个客户端具有不同的域名后缀。
# 如果第二个客户端使用了相同的主机名,DNS 查询将自动更新为第二个客户端的 IP 地址。
# 如果设置了 dhcp-fqdn 选项,普通的主机名将不再插入到 DNS 中去,
# 仅允许合格的具有域名后缀的主机名插入到 DNS 服务器中。
# 指定此选项需同时指定不含 <address range> 地址范围的 domain 选项。

#dhcp-fqdn

# 通常情况下分配 DHCP 租约后,dnsmasq 设置 FQDN 选项告诉客户端不要尝试 DDNS 更新主机名与 IP 地址。
# 这是因为 name-IP 已自动添加到 dnsmasq 的 DNS 视图中的。
# 设置此选项将允许客户端 DDNS 更新,
# 在 windows 下允许客户端更新 windows AD 服务器是非常有用的。
# 参看 RFC 4702

# dhcp-client-update
# enable-ra
# ra-param=<interface>,[high|low],[[<ra-interval>],<router lifetime>]

##############################################################################
#

# TFTP 选项

#
##############################################################################
# 对于绝大多数的配置,仅需指定 enable-tftp 和 tftp-root 选项即可。
# 是否启用内置的 tftp 服务器,可以指定多个逗号分隔的网络接口

# enable-tftp[=<interface>[,<interface>]]

# enable-tftp

# enable-tftp=enp3s0,lo

# 指定 tftp 的根目录,也就是寻找传输文件时使用的相对路径,可以附加接口,

# tftp-root=<directory>[,<interface>]

# tftp-root=/var/lib/tftpboot/

# 如果取消注释,那么即使指定的 tftp-root 无法访问,仍然启动 tftp 服务。

# tftp-no-fail

# 附加客户端的 IP 地址作为文件路径。此选项仅在正确设置了 tftp-root 的情况下可用,
# 示例:如果 tftp-root=/tftp,客户端为 192.168.1.15 请求 myfile.txt 文件时,
# 将优先请求 /tftp/192.168.1.15/myfile.txt 文件, 其次是 /tftp/myfile.txt 文件。
# 感觉没什么用。

# tftp-unique-root

# 启用安全模式,启用此选项,仅允许 tftp 进程访问属主为自己的文件。
# 不启用此选项,允许访问所有 tftp 进程属主可读取的文件。
# 如果 dnsmasq 是以 root 用户运行,tftp-secure 选项将允许访问全局可读的文件。
# 一般情况下不推荐以 root 用户运行 dnsmasq。
# 在指定了 tftp-root 的情况下并不是很重要。

# tftp-secure

# 将所有文件请求转换为小写。对于 Windows 客户端来说非常有用,建议开启此项。
# 注意:dnsmasq 的 TFTP 服务器总是将文件路径中的“\”转换为“/”。

# tftp-lowercase

# 允许最大的连接数,默认为 50
# 如果将连接数设置的很大,需注意每个进程的最大文件描述符限制,详见文档手册。

# tftp-max=<connections>

# tftp-max=50

# 设置传输时的 MTU 值,建议不设置或按需设置。
# 如果设定的值大于网络接口的 MTU 值,将按照网络接口的 MTU 值自动分片传输(不推荐)。

# tftp-mtu=<mtu size>

# 停止 tftp 服务器与客户端协商 "blocksize" 选项。启用后,防止一些古怪的客户端出问题。

# tftp-no-blocksize

# 指定 tftp 的连接端口的范围,方便防火墙部署。
# tftp 侦听在 69/udp ,连接端口默认是由系统自动分配的,
# 非 root 用户运行时指定的连接端口号需大于 1025 最大 65535。

# tftp-port-range=<start>,<end>

###############################################################################

# conf-dir=<directory>[,<file-extension>......]

# conf-file=/etc/dnsmasq.more.conf

conf-dir=/etc/dnsmasq.d

# servers-file=<file>
坚持原创技术分享,您的支持将鼓励我继续创作!
-------------本文结束感谢您的阅读-------------