Dnsmasq为小型网络提供网络基础设施:DNS,DHCP,路由器通告和网络引导。它被设计为轻量级且占用空间小,适用于资源受限的路由器和防火墙。它还被广泛用于智能手机和便携式热点的共享,并支持虚拟化框架中的虚拟网络。支持的平台包括Linux(带有glibc和uclibc),Android,* BSD和Mac OS X. Dnsmasq包含在大多数Linux发行版以及FreeBSD,OpenBSD和NetBSD的端口系统中。Dnsmasq提供完整的IPv6支持。
Dnsmasq原理:
•本机APP访问主机的/etc/resolv.conf获取DNSServer,该文件指向的DNSServer为Dnsmasq。
•本地局域网中的主机可以直接访问Dnsmasq,即在这些主机中/etc/resolv.conf指向了Dnsmasq。
•Dnsmasq需要通过上游DNS来进行域名解析,上游DNS可以配置在/etc/resolv.dnsmasq.conf中,该文件需要在Dnsmasq的配置文件/etc/dnsmasq.conf中指定。
DNS子系统为网络提供本地DNS服务器,将所有查询类型转发到上游递归DNS服务器并缓存常用记录类型(A,AAAA,CNAME和PTR,以及启用DNSSEC时的DNSKEY和DS)。
本地DNS名称可通过读取/ etc / hosts,通过从DHCP子系统导入名称或配置各种有用的记录类型来定义。
上游服务器可以用各种方便的方式进行配置,包括动态配置,这些配置会随着移动上游网络而发生变化。
权威DNS模式允许本地DNS名称可以导出到全球DNS中的区域。Dnsmasq充当此区域的权威服务器,并且还根据需要为该区域的辅助区域提供区域传输。
可以对来自上游名称服务器的DNS答复执行DNSSEC验证,从而提供针对欺骗和缓存中毒的安全性。
指定的子域可以定向到它们自己的上游DNS服务器,从而使VPN配置变得容易。
支持国际化域名。
DHCP子系统支持DHCPv4,DHCPv6,BOOTP和PXE。
支持静态和动态DHCP租约,以及DHCPv6中的无状态模式。
PXE系统是一个完整的PXE服务器,支持网络引导菜单和多种体系结构支持。它包括代理模式,PXE系统与另一台DHCP服务器协同工作。
有一个内置的只读TFTP服务器来支持网络启动。
通过DHCP配置的计算机的名称会自动包含在DNS中,并且名称可以由每台计算机指定,或者通过在dnsmasq配置文件中将名称与MAC地址或UID关联来集中进行。
路由器通告子系统为IPv6主机提供基本的自动配置。它可以单独使用或与DHCPv6结合使用。
M和O位是可配置的,以控制主机使用DHCPv6。
路由器通告可以包含RDNSS选项。
有一种方式使用来自DHCPv4配置的名称信息来为自动配置的IPv6地址提供DNS条目,否则这些地址将是匿名的。
为了更加紧凑,编译时可能会省略未使用的特性。
获取代码。
在这里下载 dnsmasq。tarball包含这个文档,源代码和联机帮助页。还有一个CHANGELOG和一个常见问题。Dnsmasq有一个git仓库,其中包含版本2的完整版本历史和2.60版本的开发历史。您可以 浏览 回购站,或者使用git协议通过命令获取副本
git clone git://thekelleys.org.uk/dnsmasq.git
要么
git clone http://thekelleys.org.uk/git/dnsmasq.git
Dnsmasq根据您的判断在GPL第2版或第3版下发布。有关详细信息,请参阅发行版中的COPYING和COPYING-v3文件。
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
#############################################################################
#
# DNS 选项
#
##############################################################################
# 不加载本地的 /etc/hosts 文件
#no-hosts
# 添加读取额外的 hosts 文件路径,可以多次指定。如果指定为目录,则读取目录中的所有文件。
#addn-hosts=/etc/hosts
# 读取目录中的所有文件,文件更新将自动读取
#hostsdir=
# 例如,/etc/hosts中的os01将扩展成os01.example.com
#expand-hosts
##############################################################################
# 缓存时间设置,一般不需要设置
# 本地 hosts 文件的缓存时间,通常不要求缓存本地,这样更改hosts文件后就即时生效。
#local-ttl=3600
# 同 local-ttl 仅影响 DHCP 租约
#dhcp-ttl=