dnsmasq 详细参数

Posted on Posted in linux

dnsmasq 详细参数

参考 http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html

dnsmasq - A lightweight DHCP and caching DNS server.

FILES

  • /etc/dnsmasq.conf
  • /usr/local/etc/dnsmasq.conf
  • /etc/resolv.conf /var/run/dnsmasq/resolv.conf /etc/ppp/resolv.conf /etc/dhcpc/resolv.conf
  • /etc/hosts
  • /etc/ethers
  • /var/lib/misc/dnsmasq.leases
  • /var/db/dnsmasq.leases
  • /var/run/dnsmasq.pid

OPTIONS

--test

dnsmasq --test
dnsmasq: syntax check OK.

-w, --help

显示所有的参数列表,--help dhcp 就显示 DHCPv4 的配置选项

-h, --no-hosts

不读取 /etc/hosts

-H, --addn-hosts=<file>

读取指定的文件,包括 /etc/hosts

如果给了 -h 参数,那就不读 /etc/hosts

可以写多行,表示读多个文件

如果给的是个目录,那就读取这个目录下包括的所有文件

--hostsdir=<path>

读取目录中所有的hosts文件,自动读取新文件或者已更改的文件。有关详细信息,请参阅--dhcp-hostsdir。

-E, --expand-hosts

将域添加到/etc/hosts中的简单名称(没有句点),方法与DHCP派生名称相同。请注意,这不适用于cnames,PTR记录,TXT记录等中的域名。

-T, --local-ttl=<time>

本地 hosts 文件的缓存时间,通常不要求缓存本地,这样更改hosts文件后就即时生效。

#local-ttl=3600

使用/etc/hosts或配置或DHCP租约文件回复时,默认情况下,dnsmasq将生存时间字段设置为零,这意味着请求者本身不应该缓存信息。在几乎所有情况下,这都是正确的做法。此选项允许为这些回复指定生存时间(以秒为单位)。这将减少服务器上的负载,但会牺牲在某些情况下使用陈旧数据的客户端。

--dhcp-ttl=

至于--local-ttl,但仅影响来自DHCP租约的信息的回复。如果两者都给出,则--dhcp-ttl适用于DHCP信息, - local-ttl适用于其他人。将此值设置为零可消除--local-ttl对DHCP的影响。

--neg-ttl=<time>

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

来自上游服务器的否定回复通常包含dnsmasq用于缓存的SOA记录中的生存时间信息。如果来自上游服务器的回复省略此信息,则dnsmasq不会缓存回复。此选项提供生存时间(以秒为单位)的默认值,即使在没有SOA记录的情况下,dnsmasq也会使用该默认值来缓存否定回复。

--max-ttl=<time>

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

设置将分发给客户端的最大TTL值。指定的最大TTL将提供给客户端,而不是真正的TTL值(如果它更低)。但是,真正的TTL值保留在缓存中以避免泛滥上游DNS服务器。

--max-cache-ttl=<time>

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

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

--min-cache-ttl=<time>

将短TTL值扩展到缓存它们时给定的时间。请注意,人为扩展TTL值通常是一个坏主意,除非你有充分的理由,否则不要这样做,并了解你在做什么。除非重新编译,否则Dnsmasq会将此选项的值限制为一小时。

--auth-ttl=<time>

设置权威服务器在答案中返回的TTL值。

-k, --keep-in-foreground

不要在启动时进入后台,否则正常运行。这适用于在daemontools或launchd下运行dnsmasq时。

-d, --no-daemon

调试模式:不分叉到后台,不写pid文件,不改变用户id,在SIGUSR1上收到时生成完整的缓存转储,登录到stderr以及syslog,不要分叉新进程处理TCP查询。请注意,此选项仅用于调试,要在生产中停止dnsmasq daemonising,请使用-k。

-q, --log-queries

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

记录dnsmasq处理的DNS查询的结果。在收到SIGUSR1时启用完整缓存转储。如果提供了参数“extra”,即--log-queries = extra,则日志在每行的开头都有额外的信息。这包括一个序列号,它将与单个查询关联的日志行和请求者的IP地址连接在一起。

-8, --log-facility=<facility>

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

记录解析日志。
设置dnsmasq将向其发送syslog条目的工具,默认为DAEMON,并在调试模式运行时设置为LOCAL0。如果给定的工具包含至少一个'/'字符,则将其视为文件名,并且dnsmasq将记录到给定文件,而不是syslog。如果设施是' - ',那么dnsmasq会记录到stderr。(读取配置时的错误仍将转到syslog,但是成功启动时的所有输出以及运行时的所有输出都将专门用于该文件。)当记录到文件时,dnsmasq将在收到SIGUSR2时关闭并重新打开该文件。这允许在不停止dnsmasq的情况下旋转日志文件。

--log-async[=<lines>]

异步log,缓解阻塞,提高性能

log-async=50

启用异步日志记录,并可选择设置写入syslog时将由dnsmasq排队的行数限制。Dnsmasq可以异步记录:这允许它继续运行而不被syslog阻止,并允许syslog使用dnsmasq进行DNS查询而不会有死锁的风险。如果日志队列已满,dnsmasq将记录溢出和丢失的消息数。默认队列长度为5,理智值为5-25,最大限制为100。

-x, --pid-file=<path>

为dnsmasq指定备用路径以记录其进程ID。通常为/var/run/dnsmasq.pid。

-u, --user=<username>

user=nobody

group=nobody

指定启动后dnsmasq将更改的用户标识。Dnsmasq通常必须以root身份启动,但它会在启动后通过将id更改为其他用户来删除root权限。通常这个用户是“nobody”,但是这个用户可以用这个开关覆盖。

-g, --group=<groupname>

指定dnsmasq将作为其运行的组。默认为“dip”(如果可用),以便于访问通常不具有全局可读性的/etc/ppp/resolv.conf。

-v, --version

打印版本号。

-p, --port=<port>

侦听<port>而不是标准DNS端口(53)。将此设置为零将完全禁用DNS功能,仅保留DHCP和/或TFTP。

-P, --edns-packet-max=

指定DNS转发器支持的最大EDNS.0 UDP数据包。默认为4096,这是RFC5625建议的大小。

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

指定向上游查询的 UDP 端口,默认是随机端口,指定后降低安全性、加快速度、减少资源消耗。

设置为 '0' 由操作系统分配。

query-port=53535

从特定UDP端口<query_port>发送出站DNS查询并侦听其回复,而不是使用随机端口。请注意,使用此选项会使dnsmasq对DNS欺骗攻击的安全性降低,但可能会更快并且使用更少的资源。将此选项设置为零会使dnsmasq使用操作系统为其分配的单个端口:这是2.43之前版本中的默认行为。

--min-port=<port>

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

不要使用少于给出的端口作为出站DNS查询的端口。Dnsmasq选择随机端口作为出站查询的源:当给出此选项时,使用的端口将始终大于指定的端口。对防火墙后面的系统很有用。如果未指定,则默认为1024。

--max-port=<port>

使用低于出站DNS查询的源端口。Dnsmasq选择随机端口作为出站查询的源:当给出此选项时,使用的端口将始终低于指定的端口。对防火墙后面的系统很有用。-i, - interface = <interface name>仅在指定的接口上侦听。当使用--interface选项时,Dnsmasq会自动将loopback(本地)接口添加到要使用的接口列表中。如果没有给出--interface或--listen-address选项,则dnsmasq将侦听除-except-interface选项中给定的所有可用接口。在Linux上,当--bind-interfaces或--bind-dynamic有效时,将检查IP别名接口标签(例如“eth1:0”),而不是接口名称。在简并情况下,当接口具有一个地址时,这相同,但是当接口具有多个地址时,它允许控制接受哪些地址。使用--listen-address可以在默认模式下实现相同的效果。一个简单的通配符,由一个尾随的'*'组成,可用于--interface和--except-interface选项。

-I, --except-interface=<interface name>

不要在指定的界面上侦听。请注意--listen-address -interface和--except-interface选项的顺序无关紧要,而--except-interface选项总是会覆盖其他选项。有关--listen-address的接口标签的注释适用于此处。

***--auth-server=<domain>,<interface>|<ip-address>

为到达接口或地址的查询启用DNS授权模式。请注意,接口或地址不需要在--interface或--listen-address配置中提及,实际上--auth-server将覆盖这些并在指定的接口上提供不同的DNS服务。是“胶水记录”。它应该在全局DNS中解析为指向dnsmasq正在侦听的地址的A和/或AAAA记录。指定接口时,可以使用“/4”或“/6”进行限定,以仅指定与接口关联的IPv4或IPv6地址。

--local-service

仅接受地址位于本地子网上的主机的DNS查询,即服务器上存在接口的子网。仅当没有--interface --except-interface, - presence-address或--auth-server选项时,此选项才有效。它旨在被设置为安装时的默认设置,以允许未配置的安装有用,但也可以安全地用于DNS放大攻击。

-2, --no-dhcp-interface=<interface name>

不要在指定的接口上提供DHCP或TFTP,但请提供DNS服务。

-a, --listen-address=<ipaddr>

listen-address=127.0.0.1,192.168.x.x

聆听给定的IP地址。可以给出--interface和--listen-address选项,在这种情况下,使用接口和地址的集合。注意,如果没有给出--interface选项,但是--listen-address是,则dnsmasq不会自动侦听loopback接口。要实现此目的,必须将其IP地址127.0.0.1明确指定为--listen-address选项。

-z, --bind-interfaces

在支持它的系统上,dnsmasq绑定通配符地址,即使它只侦听某些接口。然后它丢弃它不应该回复的请求。这样做的好处是即使接口来来去去也能改变地址。此选项强制dnsmasq仅绑定它正在侦听的接口。关于唯一有用的时间是在同一台机器上运行另一个名称服务器(或另一个dnsmasq实例)。设置此选项还会启用dnsmasq的多个实例,这些实例提供DHCP服务以在同一台计算机上运行。

--bind-dynamic

启用网络模式,该模式是--bind-interfaces和默认接口之间的混合模式。Dnsmasq绑定各个接口的地址,允许多个dnsmasq实例,但如果出现新的接口或地址,它会自动侦听这些接口(受任何访问控制配置的限制)。这使得动态创建的接口的工作方式与默认接口相同。实现此选项需要非标准网络API,并且仅在Linux下可用。在其他平台上,它会退回到--bind-interfaces模式。

-y, --localise-queries

写多个hosts的时候,仅仅返回同一个子网的IP

返回来自/etc/hosts和--interface-name的DNS查询的答案,这取决于接收查询的接口。如果名称具有多个与其关联的地址,并且这些地址中的至少一个与发送查询的接口位于同一子网上,则仅返回该子网上的地址。这允许服务器在/etc/hosts中具有与其每个接口相对应的多个地址,并且主机将基于它们所连接的网络获得正确的地址。目前该设施仅限于IPv4。

-b, --bogus-priv

处理内网地址,如果找不到IP范围,都已“无此域”回答,而不是向上游转发。

-V, --alias=[<old-ip>]|[<start-ip>-<end-ip>],<new-ip>[,<mask>]

修改从上游名称服务器返回的IPv4地址;old-ip被new-ip取代。如果给出了可选的掩码,则将重写与掩码的old-ip匹配的任何地址。因此,例如--alias = 1.2.3.0,6.7.8.0,255.255.255.0将1.2.3.56映射到6.7.8.56和1.2.3.67到6.7.8.67。这就是Cisco PIX路由器所谓的“DNS医生”。如果旧IP作为范围给出,则仅重写该范围中的地址而不是整个子网。所以--alias = 192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0将192.168.0.10-> 192.168.0.40映射到10.0.0.10-> 10.0.0.40

-B, --bogus-nxdomain=<ipaddr>

如果查询不到,有时候运营商会返回已个广告IP,把这个屏蔽掉。
转换包含“无此域名”回复的IP地址的回复。这是为了抵消Verisign在2003年9月提出的狡猾举动,当时他们开始返回广告网页的地址以回应未注册名称的查询,而不是正确的NXDOMAIN回复。此选项告诉dnsmasq在看到此行为时伪造正确的响应。截至2003年9月,Verisign返回的IP地址为64.94.110.11

--ignore-address=<ipaddr>

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

-f, --filterwin2k

处理特殊的windows dns请求。

更高版本的Windows会定期发出DNS请求,这些请求无法从公共DNS获得明智的答案,并且可能通过触发按需拨号链接而导致问题。此标志打开一个选项来过滤此类请求。阻止的请求是针对SOA和SRV类型的记录,并且在请求的名称具有下划线的情况下键入ANY,以捕获LDAP请求。

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

指定后端 dns 服务器

而不是/etc/resolv.conf中读取上游名称服务器的IP地址。有关此文件的格式,请参阅resolv.conf(5)。与dnsmasq相关的唯一行是nameserver。可以告诉Dnsmasq轮询多个resolv.conf文件,指定的第一个文件名将覆盖默认值,后续的文件名将添加到列表中。只有在轮询时才允许这样做;具有当前最新修改时间的文件是使用的文件。

-R, --no-resolv

不要阅读/etc/resolv.conf。仅从命令行或dnsmasq配置文件获取上游服务器。

-1, --enable-dbus[=<service-name>]

允许通过DBus方法调用更新dnsmasq配置。可以更改的配置是上游DNS服务器(和相应的域)和缓存清除。需要使用DBus支持构建dnsmasq。如果给出了服务名称,则dnsmasq以该名称提供服务,而不是默认的uk.org.thekelleys.dnsmasq

-o, --strict-order

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

--all-servers

默认情况下,当dnsmasq具有多个可用的上游服务器时,它将仅向一个服务器发送查询。设置此标志会强制dnsmasq将所有查询发送到所有可用的服务器。首先应答的服务器的回复将返回给原始请求者。

--dns-loop-detect

启用转发循环检测

启用代码检测DNS转发循环;即发送到上游服务器之一的查询最终作为新查询返回到dnsmasq实例的情况。该过程通过生成 .test形式的TXT查询并将它们发送到每个上游服务器来工作。十六进制是一个UID,它编码发送查询的dnsmasq实例和发送它的上游服务器。如果查询返回到发送它的服务器,则禁用发送它的上游服务器,并记录此事件。每次上游服务器集发生更改时,都会对所有上游服务器重新运行测试,包括先前已禁用的测试。

--stop-dns-rebind

拒绝(和记录)来自私有IP范围内的上游名称服务器的地址。这会阻止攻击,其中防火墙后面的浏览器用于探测本地网络上的计算机。

--rebind-localhost-ok

从重新绑定检查中免除127.0.0.0/8。此地址范围由实时黑洞服务器返回,因此阻止它可能会禁用这些服务。

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

不要在对这些域的查询中检测并阻止dns-rebind。参数可以是单个域,也可以是由'/'包围的多个域,例如--server语法。--rebind域-OK = /域1 /域2 / DOMAIN3 /

-n, --no-poll

不要检测 /etc/resolv.conf 的变化

--clear-on-reload

重启后清空缓存

clear-on-reload

每当重新读取/etc/resolv.conf或通过DBus设置上游服务器时,清除DNS缓存。当新名称服务器可能具有与缓存中保存的数据不同的数据时,这非常有用。

-D, --domain-needed

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

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

server=/cn/114.114.114.114

server=/taobao.com/114.114.114.114

server=/taobaocdn.com/114.114.114.114

直接指定上游服务器的IP地址。设置此标志不会禁止读取/etc/resolv.conf,使用-R来执行此操作。如果给出了一个或多个可选域,则该服务器仅用于这些域,并且仅使用指定的服务器查询它们。这适用于私人域名服务器:如果您的网络上有一个名称服务器,它在192.168.1.1处理xxx.internal.thekelleys.org.uk表格的名称,然后给出标志-S /internal.thekelleys.org.uk/192.168.1.1会将内部计算机的所有查询发送到该名称服务器,其他所有查询都将发送到/etc/resolv.conf中的服务器。对于此类私有名称服务器,DNSSEC验证已关闭,除非为相关域指定了--trust-anchor。空域规范//具有“仅限非限定名称”的特殊含义,即名称中没有任何点的名称。可以使用#字符将非标准端口指定为IP地址的一部分。允许多个-S标志,并根据需要重复使用域或ipaddr部件。更具体的域优先于不太具体的域,因此: - server = / google.com / 1.2.3.4 --server = / www.google.com / 2.3.4.5会将* .google.com的查询发送到1.2。3.4,除了www.google.com之外,将转到2.3.4.5特殊服务器地址“#”表示“使用标准服务器”,因此--server = / google.com / 1.2.3.4 --server = / www.google.com /#将发送* .google.com的查询至1.2.3.4,* www.google.com除外,将照常转发。也允许使用-S标志,它给出一个域但没有IP地址;这告诉dnsmasq一个域是本地的,它可以回答来自/ etc / hosts或DHCP的查询,但绝不应该将该域上的查询转发到任何上游服务器。local是服务器的同义词,在这种情况下使配置文件更清晰。IPv6地址可以包括%interface scope-id,例如fe80 :: 202:a412:4512:7bbf%eth0。@字符后面的可选字符串告诉dnsmasq如何将查询源设置为此名称服务器。它可以是ip-address,接口名称,也可以是两者。ip-address应该属于运行dnsmasq的计算机,否则将记录此服务器行,然后将其忽略。如果给出了接口名称,则将通过该接口强制查询服务器;如果给出了ip-address,那么查询的源地址将被设置为该地址;如果两者都被给出,那么将使用ip-address和interface name的组合来引导对服务器的请求。对于指定了源地址的任何服务器,将忽略query-port标志,但该端口可以直接指定为源地址的一部分。强制查询到接口未在dnsmasq支持的所有平台上实现。

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

这在功能上与--server相同,但提供了一些语法糖,使指定地址到名称的查询更容易。例如--rev-server = 1.2.3.0 / 24,192.168.0.1完全等同于--server = / 3.2.1.in-addr.arpa / 192.168.0.1

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

为给定域中的任何主机指定要返回的IP地址。域中的查询永远不会被转发,并始终使用指定的IP地址(可能是IPv4或IPv6)进行回复。要为域提供IPv4和IPv6地址,请使用重复的-A标志。要为单个查询包含多个IP地址,请改用--addn-hosts = 。请注意/ etc / hosts和DHCP租约会覆盖个别名称。这种情况的一个常见用途是将整个doubleclick.net域重定向到一些友好的本地Web服务器,以避免横幅广告。域规范的工作方式与--server相同,其他工具/#/匹配任何域。因此,对于未从/ etc / hosts或DHCP应答的任何查询, - address = /#/ 1.2.3.4将始终返回1.2.3.4,并且不会通过更具体的--server指令发送到上游名称服务器。对于--server,一个或多个没有地址的域返回无域答案,因此--address = / example.com /等同于--server = / example.com /并返回NXDOMAIN。com及其所有子域名。

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

将已解析的一个或多个域的查询IP地址放在指定的Netfilter IP集中。如果给出了多个集合名称,则根据IP集的限制将地址放置在每个集合中(IPv4地址不能存储在IPv6 IP集中,反之亦然)。域和子域的匹配方式与--address相同。这些IP集必须已存在。有关更多详细信息,请参阅ipset(8)。

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

返回名为的MX记录,指向给定的主机名(如果给定),或指定--mx-target开关中指定的主机,或者,如果未指定该切换,则返回运行dnsmasq的主机。默认值对于将邮件从LAN上的系统定向到中央服务器非常有用。首选项值是可选的,如果没有给出,则默认为1。可以为主机提供多个MX记录。

-t, --mx-target=

指定dnsmasq返回的MX记录的默认目标。请参阅--mx-host。如果给出了--mx-target,但没有给出--mx-host,则dnsmasq将在运行dnsmasq的计算机的主机名上返回包含MX查询的MX目标的MX记录。

-e, --selfmx

为每台本地计算机返回指向自身的MX记录。本地计算机是/ etc / hosts中的或具有DHCP租约的计算机。

-L, --localmx

返回指向由每台本地计算机的mx-target(或运行dnsmasq的计算机)给出的主机的MX记录。本地计算机是/ etc / hosts中的或具有DHCP租约的计算机。

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

返回SRV DNS记录。有关详细信息,请参阅RFC2782。如果未提供,则域默认为--domain指定的域。目标域的默认值为空,端口的默认值为1,权重和优先级的默认值为零。如果从BIND区域文件转置数据,请小心:端口,重量和优先级编号的顺序不同。允许给定服务/域的多个SRV记录,返回所有匹配的记录。

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

将A,AAAA和PTR记录添加到DNS。这会将一个或多个名称添加到DNS,并附带关联的IPv4(A)和IPv6(AAAA)记录。名称可能出现在多个主机记录中,因此会分配多个地址。只有第一个地址创建一个将地址与名称相关联的PTR记录。这与读取hosts文件的规则相同。主机记录选项被认为是在主机文件之前读取的,因此如果它出现在hosts文件中,那么出现在那里的名称会禁止创建PTR记录。与hosts文件不同,即使expand-hosts有效,也不会扩展名称。短名称和长名称可能出现在同一主机记录中,例如。--host记录=笔记本电脑,laptop.thekelleys.org,192.168.0.1,1234 :: 100如果给出了生存时间,它将覆盖默认值,即零或--local-ttl的值。该值为正整数,以秒为单位给出生存时间。

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

返回TXT DNS记录。TXT记录的值是一组字符串,因此可以包含任何数字,用逗号分隔;使用引号将逗号放入字符串中。请注意,单个字符串的最大长度为255个字符,较长的字符串将拆分为255个字符的块。

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

返回和PTR DNS记录。

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

返回NAPTR DNS记录,如RFC3403中所指定。

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

返回一条CNAME记录,指示确实是。目标有很大的局限性;它必须是来自/ etc / hosts(或其他主机文件)的dnsmasq,DHCP,--interface-name或其他--cname的DNS名称。如果目标不满足此条件,则忽略整个cname。cname必须是唯一的,但允许有多个cname指向同一目标。实际上,可以在一行中向目标声明多个cnames,如下所示: - cname = cname1,cname2,target如果给出生存时间,它将覆盖默认值,即零或-local-ttl的值。该值为正整数,以秒为单位给出生存时间。

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

返回任意DNS资源记录。数字是记录的类型(始终在C_IN类中)。记录的值由十六进制数据给出,其可以是01:23:45或01 23 45或012345的形式或这些的任何混合。

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

返回将名称与给定接口的地址相关联的DNS记录。此标志以与/ etc / hosts行相同的方式指定给定名称的A或AAAA记录,但该地址不是常量,而是取自给定的接口。接口后面可以跟“/ 4”或“/ 6”,以指定只应使用接口的IPv4或IPv6地址。如果接口已关闭,未配置或不存在,则返回空记录。还会创建匹配的PTR记录,将接口地址映射到名称。通过重复标志,可以将多个名称与接口地址相关联;在这种情况下,第一个实例用于反向地址到名称映射。请注意, - interface-name中使用的名称可能不会出现在/ etc / hosts中。

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

为地址范围创建人工A / AAAA和PTR记录。记录要么是序号,要么是地址,其中句点(或者是GB的冒号)用短划线代替。一个例子应该使这更清楚。第一个序号。--synth-domain = thekelleys.org.uk,192.168.0.50,192.168.0.70,internal- 结果名为internal-0.thekelleys.org.uk。返回192.168.0.50,internal-1.thekelleys.org.uk返回192.168.0.51,依此类推。(注意)相同的原则适用于IPv6地址(数字可能非常大)。从地址到名称的反向查找按预期进行。其次, - synth-domain = thekelleys.org.uk,192.168.0.0 / 24,internal-(no *)将导致查询internal-192-168-0-56.thekelleys.org.uk返回192.168。0.56和反向查询反之亦然。这同样适用于IPv6,但IPv6地址可能以'::'开头,但DNS标签可能不以' - '开头,因此在这种情况下,如果没有配置前缀,则在标签前添加零。:: 1变为0-1。V4映射的IPv6地址,具有类似:: ffff:1.2.3.4的表示,是专门处理的,变得像0 - ffff-1-2-3-4在两种形式的选项中,地址范围可以是 / 的形式。

--add-mac[=base64|text]

将请求者的MAC地址添加到上游转发的DNS查询中。这可以用于上游服务器的DNS过滤。只有在请求者与dnsmasq服务器位于同一子网时,才能添加MAC地址。请注意,用于实现此目的的机制(EDNS0选项)尚未标准化,因此应将其视为实验性的。另请注意,以这种方式公开MAC地址可能会产生安全和隐私问题。有关--add-subnet的缓存警告也适用于--add-mac。通过添加“base64”参数来启用MAC的替代编码(作为base64),并通过添加“text”参数来启用人类可读的十六进制和冒号编码。

--add-cpe-id=<string>

向上游转发的DNS查询添加任意标识字符串。

--add-subnet[[=[<IPv4 address>/]<IPv4 prefix length>][,[<IPv6 address>/]<IPv6 prefix length>]]

将子网地址添加到上游转发的DNS查询中。如果在标志中指定了地址,则将使用该地址,否则将使用请求者的地址。转发的地址数量取决于前缀长度参数:32(IPv6为128)转发整个地址,零转发但仍然标记请求,以便上游名称服务器也不会添加客户端地址信息。IPv4和IPv6的默认值均为零。请注意,上游名称服务器可能配置为根据此信息返回不同的结果,但dnsmasq缓存不考虑。如果配置dnsmasq实例以便可能遇到不同的结果,则应禁用缓存。例如, - add-subnet = 24,96将分别为IPv4和IPv6请求者添加请求者的/ 24和/ 96子网。--add-subnet = 1.2.3.4 / 24将为IPv4请求者添加1.2.3.0/24,为IPv6请求者添加:: / 0。--add-subnet = 1.2.3.4 / 24,1.2.3.4 / 24将为IPv4和IPv6请求者添加1.2.3.0/24。

-c, --cache-size=<cachesize>*

设置dnsmasq缓存的大小。默认值为150个名称。将高速缓存大小设置为零会禁用高速缓存。

-N, --no-negcache

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

禁用负缓存。负缓存允许dnsmasq记住来自上游名称服务器的“没有这样的域”答案并回答相同的查询而不再转发它们。

-0, --dns-forward-max=<queries>

设置最大并发DNS查询数。默认值为150,对于大多数设置应该没问题。需要增加的唯一已知情况是使用Web服务器日志文件解析器时,它可以生成大量并发查询。

--dnssec

验证DNS回复并缓存DNSSEC数据。转发DNS查询时,dnsmasq会请求验证回复所需的DNSSEC记录。验证回复,结果作为DNS数据包中的Authenticated Data位返回。此外,DNSSEC记录存储在缓存中,使客户端的验证更有效。请注意,客户端验证是最安全的DNSSEC模式,但对于无法进行验证的客户端,只要dnsmasq服务器和客户端之间的网络受信任,使用dnsmasq设置的AD位非常有用。必须在启用HAVE_DNSSEC的情况下编译Dnsmasq,并提供DNSSEC信任锚,请参阅--trust-anchor。由于DNSSEC验证过程使用缓存,因此在启用DNSSEC时,不允许将缓存大小减小到默认值以下。dnsmasq上游的名称服务器必须支持DNSSEC,即能够返回带有数据的DNSSEC记录。如果不是,那么dnsmasq将无法确定答案的可信状态。在默认模式下,这意味着所有回复都将标记为不受信任。如果设置了--dnssec-check-unsigned且上游服务器不支持DNSSEC,则DNS服务将完全中断。

--trust-anchor=[<class>],<domain>,<key-tag>,<algorithm>,<digest-type>,<digest>

提供DS记录以充当DNSSEC验证的信任锚。通常,这些将是根区域的密钥签名密钥(KSK)的DS记录,但也可以是有限域的信任锚。可以从https://data.iana.org/root-anchors/root-anchors.xml下载当前的根区域信任锚。

--dnssec-check-unsigned

默认情况下,dnsmasq不会检查未签名的DNS回复是否合法:假定它们有效并传递(当然没有设置“真实数据”位)。这不能防止攻击者伪造签名DNS区域的未签名回复,但速度很快。如果设置了此标志,则dnsmasq将检查未签名的回复区域,以确保在这些区域中允许未签名的回复。这样做的成本是更多的上游查询和更慢的性能。另请参阅--dnssec部分中有关上游服务器的警告

--dnssec-no-timecheck

DNSSEC签名仅对指定的时间窗口有效,应在这些窗口外拒绝。这为没有硬件实时时钟的机器产生了一个有趣的鸡和蛋问题。对于这些机器来确定正确的时间通常需要使用NTP,因此需要使用DNS,但验证DNS要求已知正确的时间。设置此标志只会在dnsmasq进程收到SIGINT之前删除时间窗口检查(但不会删除其他DNSSEC验证)。目的是当平台确定当前没有可靠时间时,应该使用此标志启动dnsmasq。一旦建立了可靠的时间,就应该将SIGINT发送到dnsmasq,这将启用时间检查,并清除尚未彻底检查的DNS记录的缓存。早期版本的dnsmasq重载了SIGHUP(重新读取了很多配置)以启用时间验证。如果dnsmasq以调试模式运行(-d标志),则SIGINT保留其终止dnsmasq进程的通常含义。

--dnssec-timestamp=<path>

启用另一种检查DNSSEC系统时间有效性的方法(请参阅--dnssec-no-timecheck)。在这种情况下,一旦系统时间变得晚于指定文件上的时间戳,系统时间就被认为是有效的。该文件已创建,其时间戳由dnsmasq自动设置。该文件必须存储在持久性文件系统中,以便它和它的mtime通过系统重新启动来传输。时间戳文件是在dnsmasq删除root之后创建的,因此它必须位于dnsmasq运行的非特权用户可写的位置。

--proxy-dnssec

将DNSSEC Authenticated Data位从上游服务器复制到下游客户端并对其进行缓存。这是让dnsmasq验证DNSSEC的替代方案,但它取决于dnsmasq和上游服务器之间网络的安全性,以及上游服务器的可信赖性。

--dnssec-debug

设置DNSSEC验证的调试模式,在上游查询中设置“检查已禁用”位,并且不将未验证的回复转换为返回代码为SERVFAIL的响应。请注意,设置此项可能会以不良方式影响DNS行为,它不是额外日志记录标志,不应在生产中设置。

--auth-zone=<domain>[,<subnet>[/<prefix length>][,<subnet>[/<prefix length>].....][,exclude:<subnet>[/<prefix length>]].....]

定义dnsmasq充当权威服务器的DNS区域。将提供域中的本地定义的DNS记录。如果给出了子网,则A和AAAA记录必须位于其中一个指定的子网中。作为直接指定子网的替代方法,可以给出接口的名称,在这种情况下,使用该接口配置的地址和netmask / prefix-length隐含的子网;这在使用构造的DHCP范围时很有用,因为实际地址是动态的,在配置dnsmasq时不知道。接口地址可以仅使用 / 6限制为IPv6地址,或者仅使用 / 4限制为IPv4。当接口具有动态确定的全局IPv6地址(应该出现在区域中),但RFC1918 IPv4地址不应该出现时,这很有用。interface-name和address-literal子网规范可以在相同的-auth-zone声明中自由使用。可以从响应中排除某些IP地址。可以使用它来确保答案仅包含全局可路由IP地址(通过排除环回,RFC1918和ULA地址)。子网还用于定义in-addr.arpa和ip6.arpa域,这些域用于反向DNS查询。如果未指定,则前缀长度默认为IPv4(64)和64(IPv6)。对于IPv4子网,前缀长度应该具有值8,16或24,除非您熟悉RFC 2317并相应地安排了in-addr.arpa委派。请注意,如果未指定子网,则不会回答任何反向查询。

--auth-soa=<serial>[,<hostmaster>[,<refresh>[,<retry>[,<expiry>]]]]

指定与权威区域关联的SOA记录中的字段。请注意,这是可选的,所有值都设置为合理的默认值。

--auth-sec-servers=<domain>[,<domain>[,<domain>...]]

为dnsmasq具有权威性的区域指定任何辅助服务器。必须将这些服务器配置为通过区域传输从dnsmasq获取区域数据,并回答与dnsmasq相同的权威区域的查询。

--auth-peer=<ip-address>[,<ip-address>[,<ip-address>...]]

指定允许为dnsmasq具有权威性的区域启动区域传输(AXFR)请求的辅助服务器的地址。如果未给出此选项,则将从任何辅助接受AXFR请求。

--conntrack

读取与传入DNS查询关联的Linux连接跟踪标记,并在用于回答这些查询的上游流量上设置相同的标记值。这允许dnsmasq生成的流量与导致它的查询相关联,这对带宽计费和防火墙非常有用。Dnsmasq必须具有编译的conntrack支持,并且内核必须包含和配置conntrack支持。此选项不能与--query-port结合使用。

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

-F, --dhcp-range=[tag:<tag>[,tag:<tag>],][set:<tag>,]<start-IPv6addr>[,<end-IPv6addr>|constructor:<interface>][,<mode>][,<prefix-len>][,<lease time>]

dhcp-range=192.168.111.50,192.168.111.100,12h

#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

启用DHCP服务器。地址将从的范围以及dhcp-host选项中给出的静态定义的地址发出。如果给出租赁时间,那么租约将在该时间长度内给出。租赁时间以秒,或分钟(例如45米)或小时(例如1小时)或“无限”为单位。如果没有给出,则默认租约时间为一小时。最短租约时间为两分钟。对于IPv6范围,租约时间可能“已弃用”;这会将DHCP租约或路由器通告中发送的首选生命周期设置为零,这会导致客户端将新连接使用其他地址(如果可用)作为重新编号的前奏。

可以使用不同的地址重复此选项,以便为多个网络启用DHCP服务。对于直接连接的网络(即运行dnsmasq的机器具有接口的网络),网络掩码是可选的:dnsmasq将根据接口配置确定它。对于通过中继代理接收DHCP服务的网络,dnsmasq无法确定网络掩码本身,因此应该指定,否则dnsmasq将必须根据网络地址的类(A,B或C)进行猜测。广播地址始终是可选的。始终允许在单个子网中具有多个dhcp范围。

对于IPv6,参数略有不同:有一个可选的前缀长度,而不是网络掩码和广播地址,它必须等于或大于本地接口上的前缀长度。如果未给出,则默认为64.与IPv4情况不同,前缀长度不会自动从接口配置派生。前缀长度的最小大小为64。

IPv6(仅)支持另一种类型的范围。在这里,起始地址和可选的结束地址仅包含网络部分(即:: 1),后面跟着构造函数:。这形成了一个模板,该模板描述了如何根据分配给接口的地址创建范围。例如

--dhcp-range=::1,::400,constructor:eth0

将在eth0上查找地址,然后创建一个范围从 :: 1到 :: 400。如果为接口分配了多个网络,则将自动创建相应的范围,然后弃用,最后再次删除,因为该地址已弃用然后被删除。接口名称可能具有最终的“*”通配符。请注意,eth0上的任何地址都不会执行:它不能是自动配置或隐私地址,也不能弃用。

如果dhcp-range仅用于无状态DHCP和/或SLAAC,则地址可以简单地::

--dhcp-range=::,constructor:eth0

可选的set:设置一个字母数字标签,用于标记此网络,以便可以在每个网络的基础上指定dhcp选项。如果它的前缀是'tag:',那么它的含义就会从设置标签变为匹配它。只能设置一个标签,但可以匹配多个标签。

可选的关键字可以是静态的,它告诉dnsmasq为指定的网络启用DHCP,但不动态分配IP地址:只提供具有通过dhcp-host或/ etc / ethers给出的静态地址的主机。具有全零地址的仅静态子网可以用作“全部捕获”地址,以使得能够回复具有无状态DHCPv6的子网上的所有信息请求分组,即--dhcp-range = ::,static

对于IPv4,可以是代理,在这种情况下,dnsmasq将在指定的子网上提供代理DHCP。 (有关详细信息,请参阅pxe-prompt和pxe-service。)

对于IPv6,模式可以是ra-only,slaac,ra-names,ra-stateless,ra-advrouter,off-link的某种组合。

ra-only告诉dnsmasq仅在此子网上提供路由器通告,而不是DHCP。

slaac告诉dnsmasq在这个子网上提供Router Advertisement并在路由器通告中设置A位,以便客户端使用SLAAC地址。当与DHCP范围或静态DHCP地址一起使用时,这会导致客户端同时具有DHCP分配和SLAAC地址。

ra-stateless发送O和A位设置的路由器通告,并提供无状态DHCP服务。客户端将使用SLAAC地址,并使用DHCP获取其他配置信息。

ra-names启用一种模式,该模式为执行SLAAC for IPv6的双栈主机提供DNS名称。 Dnsmasq使用主机的IPv4租约来获取名称,网段和MAC地址,并假设主机还将在同一网段上使用SLAAC算法计算IPv6地址。地址被ping,如果收到回复,则会将AAAA记录添加到此IPv6地址的DNS中。请注意,这仅适用于直连网络(不是通过中继进行DHCP),如果主机使用隐私扩展,则无法正常工作。 ra-names可以与ra-stateless和slaac结合使用。

ra-advrouter启用一种模式,其中广告中包含路由器地址而不是前缀。这在RFC-3775中描述

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

为DHCP服务器指定每个主机参数。这允许具有特定硬件地址的机器始终分配相同的主机名,IP地址和租用时间。如此指定的主机名将覆盖计算机上DHCP客户端提供的任何主机名。也允许省略硬件地址并包含主机名,在这种情况下,IP地址和租用时间将适用于声明该名称的任何机器。例如--dhcp-host = 00:20:e0:3b:13:af,wap,infinite告诉dnsmasq给机器硬件地址00:20:e0:3b:13:af名称为wap,无限DHCP租约。--dhcp-host = lap,192.168.0.199告诉dnsmasq总是分配机器的IP地址192.168.0.199。像这样分配的地址不限于在-dhcp-range选项给出的范围内,但它们必须与某个有效的dhcp-range位于同一子网中。对于不需要动态分配地址池的子网,请在dhcp-range声明中使用“static”关键字。允许使用客户端标识符(在IPv6-land中称为客户端DUID)而不是硬件地址来通过前缀“id:”来标识主机。因此: - DHCP-host = id:01:02:03:04,.....指客户端标识为01:02:03:04的主机。它也允许将客户端ID指定为文本,如下所示: - DHCP-host = id:clientidastext,.....单个dhcp主机可能包含IPv4地址或IPv6地址,或两者都包含。IPv6地址必须用方括号括起来:--dhcp-host = laptop,[1234 :: 56] IPv6地址可能只包含主机标识符部分: - dhcp-host = laptop,[:: 56]其中它们在构造的dhcp范围中充当通配符,并插入适当的网络部分。请注意,在IPv6 DHCP中,硬件地址可能不可用,但通常用于直连客户端或使用支持RFC 6939的DHCP中继的客户端。对于DHCPv4,特殊选项id:表示“忽略任何客户端ID并仅使用MAC地址”。当客户端有时提供客户端ID但不提供其他客户端ID时,这很有用。如果/ etc / hosts中出现名称,则可以将关联的地址分配给DHCP租约,但前提是指定名称的--dhcp-host选项也存在。在dhcp-host选项中只能给出一个主机名,但是使用CNAME可以使用别名。(见--cname)。特殊关键字“ignore”告诉dnsmasq永远不会向机器提供DHCP租约。可以通过硬件地址,客户端ID或主机名指定机器,例如--dhcp-host = 00:20:e0:3b:13:af,ignore当网络上有另一台DHCP服务器应该是一些机器使用的。每当使用此dhcp-host指令时,set:构造都会设置标记。这可用于有选择地仅为此主机发送DHCP选项。可以在dhcp-host指令中设置多个标记(但不允许在允许使用“set:”的其他位置)。当主机匹配任何dhcp-host指令(或/ etc / ethers隐含的指令)时,将设置特殊标记“known”。这允许将dnsmasq配置为使用--dhcp-ignore = tag忽略来自未知计算机的请求:!known如果主机仅匹配由于它指定不同子网上的地址而无法使用的dhcp-host指令,则标记为“已知”-othernet“已设置。以太网地址(但不是客户端ID)可能具有通配符字节,因此例如--dhcp-host = 00:20:e0:3b:13:,忽略将导致dnsmasq忽略一系列硬件地址。请注意,“*”需要在命令行上进行转义或引用,但不能在配置文件中进行转义或引用。硬件地址通常与任何网络(ARP)类型匹配,但可以通过在ARP类型(在HEX中)和“ - ”之前将它们限制为单个ARP类型。所以--dhcp-host = 06-00:20:e0:3b:13:af,1.2.3.4只匹配令牌环硬件地址,因为令牌环的ARP地址类型是6。作为一种特殊情况,在DHCPv4中,可以包含多个硬件地址。例如:--dhcp-host = 11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2这允许IP地址与多个硬件地址相关联,并给予dnsmasq权限当另一个要求租约时,将DHCP租约放弃到其中一个硬件地址。请注意,这是一件危险的事情,只有在任何时候只有一个硬件地址处于活动状态且dnsmasq无法强制执行此操作时,它才能可靠地工作。例如,为具有有线和无线接口的笔记本电脑分配稳定的IP地址是有用的。

--dhcp-hostsfile=<path>

从指定文件中读取DHCP主机信息。如果给出了目录,则读取该目录中包含的所有文件。该文件包含每行一个主机的信息。行的格式与--dhcp-host中'='右侧的文本相同。将DHCP主机信息存储在此文件中的优点是可以在不重新启动dnsmasq的情况下进行更改:当dnsmasq收到SIGHUP时,将重新读取该文件。

--dhcp-optsfile=<path>

从指定文件中读取DHCP选项信息。如果给出了目录,则读取该目录中包含的所有文件。使用此选项的优点与--dhcp-hosts文件相同:当dnsmasq收到SIGHUP时,将重新读取dhcp-optsfile。请注意,可以使用选项名称bootfile-name,server-ip-address和tftp-server将--dhcp-boot标志中的信息编码为DHCP选项。这允许将它们包含在dhcp-opts文件中。

--dhcp-hostsdir=<path>

这相当于dhcp-hosts文件,但以下情况除外。路径必须是目录,而不是单个文件。更改或目录中的新文件将自动读取,无需发送SIGHUP。如果文件在被dnsmasq读取后被删除或更改,则其包含的主机记录将保留,直到dnsmasq收到SIGHUP或重新启动;即主机记录仅动态添加。

--dhcp-optsdir=<path>

这相当于dhcp-optsfile,并注明了-dhcp-hostsdir的差异。

-Z, --read-ethers

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

有关DHCP服务器主机的信息,请阅读/ etc / ethers。/ etc / ethers的格式是硬件地址,后跟主机名或点分四IP地址。当由dnsmasq读取时,这些行与包含相同信息的--dhcp-host选项具有完全相同的效果。当dnsmasq收到SIGHUP时,会重新读取/ etc / ethers。不从/ etc / ethers读取IPv6地址。

-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客户端指定不同或额外的选项。默认情况下,dnsmasq向DHCP客户端发送一些标准选项,网络掩码和广播地址设置为与运行dnsmasq的主机相同,DNS服务器和默认路由设置为运行dnsmasq的计算机的地址。(等效规则适用于IPv6。)如果已设置域名选项,则发送该选项。此配置允许覆盖这些默认值或指定其他选项。要发送的选项可以作为十进制数或“option:”给出。选项号在RFC2132和后续RFC中指定。可以通过运行“dnsmasq --help dhcp”来发现dnsmasq已知的选项名称集。例如,要将默认路由选项设置为192.168.4.4,请执行--dhcp-option = 3,192.168.4.4或--dhcp-option = option:router,192.168.4.4并将时间服务器地址设置为192.168.0.4,do --dhcp-option = 42,192.168.0.4或--dhcp-option = option:ntp-server,192.168.0.4特殊地址0.0.0.0用于表示“运行dnsmasq的机器的地址”。允许的数据类型是逗号分隔的点分四IPv4地址,[] - 包装的IPv6地址,十进制数,冒号分隔的十六进制数字和文本字符串。如果给出了可选标签,则只有在匹配所有标签时才会发送此选项。对选项119的文本参数进行特殊处理,以符合RFC 3397.文本或点分四元组IP地址作为选项120的参数按照RFC 3361进行处理。虚线四元组IP地址后面跟一个斜杠然后网络掩码大小按RFC 3442中的描述进行编码。使用option6:keyword指定IPv6选项,后跟选项编号或选项名称。IPv6选项名称空间与IPv4选项名称空间不相交。选项中的IPv6地址必须用方括号括起来,例如。--dhcp-option = option6:ntp-server,[1234 :: 56]对于IPv6,[::]表示“运行dnsmasq的机器的全局地址”,而[fd00 ::]替换为ULA,如果它存在,[fe80 ::]带有链接本地地址。注意:没有检查是否发送了选项号的正确数据类型,很可能说服dnsmasq生成非法的DHCP数据包并且不明智地使用该标志。当值为十进制数时,dnsmasq必须确定数据项的大小。它通过检查选项号和/或值来完成此操作,但可以通过附加单个字母标志来覆盖,如下所示:b =一个字节,s =两个字节,i =四个字节。这对于封装的供应商类选项(见下文)非常有用,其中dnsmasq无法从选项编号确定数据大小。仅由句点和数字组成的选项数据将由dnsmasq解释为IP地址,并插入到选项中。要强制使用文字字符串,请使用引号。例如,当使用选项66将文字IP地址作为TFTP服务器名称发送时,有必要执行--dhcp-option = 66,“1.2.3.4”也可以使用--dhcp-option指定Encapsulated Vendor-class选项(仅限IPv4):例如--dhcp-option = vendor:PXEClient,1,0.0.0.0发送封装的供应商类特定选项“mftp-address =0.0.0.0“到任何供应商类与”PXEClient“匹配的客户端。供应商类匹配是基于子字符串的(有关详细信息,请参阅--dhcp-vendorclass)。如果dnsmasq发送供应商类选项(编号60),则用于选择封装选项,优先于客户端发送的选项。可以完全省略供应商类;--dhcp-option = vendor:,1,0.0.0.0,在这种情况下,始终发送封装选项。可以在其他选项中封装选项(仅限IPv4):例如--dhcp-option = encap:175,190,iscsi-client0将发送选项175,其中是选项190.如果给出了多个选项,这些选项被封装为相同的选项编号,然后它们将正确组合成一个封装选项。encap:和vendor:可能不是都设置在同一个dhcp-option中。封装选项的最终变体是RFC3925指定的“供应商识别供应商选项”。这些表示如下: - dhcp-option = vi-encap:2,10,text vi-encap:部分中的数字是用于标识此选项的IANA企业编号。IPv6支持这种封装形式。地址0.0.0.0未在封装选项中专门处理。

--dhcp-option-force=[tag:<tag>,[tag:<tag>,]][encap:<opt>,][vi-encap:<enterprise>,][vendor:[<vendor-class>],]<opt>,[<value>[,<value>]]

这与--dhcp-option的工作方式完全相同,只是该选项将始终发送,即使客户端未在参数请求列表中请求它。有时需要这样做,例如向PXELinux发送选项时。

--dhcp-no-override

(仅限IPv4)禁止重新使用DHCP服务器名称和文件名字段作为额外选项空间。如果可以,dnsmasq将引导服务器和文件名信息(从dhcp-boot)移出其专用字段到DHCP选项。这使得DHCP数据包中的额外空间可用于选项,但很少会使旧的或损坏的客户端混淆。该标志强制“简单和安全”的行为,以避免在这种情况下出现问题。

--dhcp-relay=<local address>,<server address>[,<interface]

配置dnsmasq进行DHCP中继。本地地址是分配给运行dnsmasq的主机上的接口的地址。到达该接口的所有DHCP请求都将中继到服务器地址的远程DHCP服务器。通过使用具有相同本地地址和不同服务器地址的多个dhcp-relay配置,可以从单个本地地址中继到多个远程服务器。服务器地址必须是IP文字地址,而不是域名。在DHCPv6的情况下,服务器地址可以是ALL_SERVERS多播地址,ff05 :: 1:3。在这种情况下,必须给出接口,而不是通配符,并用于将多播引导到正确的接口以到达DHCP服务器。DHCP客户端的访问控制与DHCP服务器的规则相同,请参阅--interface, - except-interface等.dhcp-relay config中的可选接口名称具有不同的功能:它控制DHCP回复的接口从服务器将被接受。这适用于具有三个接口的配置:一个接口从中继,第二个连接DHCP服务器,第三个不受信任的网络,通常是更宽的互联网。它避免了通过第三个界面到达欺骗回复的可能性。允许dnsmasq在一组接口上充当DHCP服务器,并从一组不相交的接口中继。请注意,虽然很可能在同一接口上编写似乎充当服务器和中继的配置,但不支持:中继功能优先。支持DHCPv4和DHCPv6中继。将DHCPv4中继到DHCPv6服务器是不可能的,反之亦然。

-U, --dhcp-vendorclass=set:<tag>,[enterprise:<IANA-enterprise number>,]<vendor-class>

从供应商类字符串映射到标记。大多数DHCP客户端提供“供应商类”,在某种意义上,它代表主机的类型。此选项将供应商类映射到标记,以便可以选择性地将DHCP选项传递到不同类的主机。例如dhcp-vendorclass = set:printers,Hewlett-Packard JetDirect将允许仅为HP打印机设置选项,如下所示: - dhcp-option = tag:printers,3,192.168.4.4供应商类字符串与子串匹配客户提供的供应商类,以允许模糊匹配。set:前缀是可选的,但允许一致性。请注意,仅在IPv6中,供应商类名称为IANA分配的企业编号。这与enterprise:keyword一起给出,并指定只搜索与指定数字匹配的供应商类。

-j, --dhcp-userclass=set:<tag>,<user-class>

从用户类字符串映射到标记(使用子字符串匹配,如供应商类)。大多数DHCP客户端提供可配置的“用户类”。此选项将用户类映射到标记,以便可以有选择地将DHCP选项传递给不同类别的主机。例如,可以使用它为“帐户”类中的主机设置与“工程”类中的主机不同的打印机服务器。

-4, --dhcp-mac=set:<tag>,<MAC address>

从MAC地址映射到标记。MAC地址可能包含通配符。例如--dhcp-mac = set:3com,01:34:23::*将为MAC地址与模式匹配的任何主机设置标记“3com”。

--dhcp-circuitid=set:<tag>,<circuit-id>, --dhcp-remoteid=set:<tag>,<remote-id>

从RFC3046中继代理选项映射到标记。该数据可以由DHCP中继代理提供。circuit-id或remote-id通常以冒号分隔的十六进制形式给出,但也允许它是一个简单的字符串。如果在电路或代理ID与中继代理提供的ID之间实现精确匹配,则设置标签。IPv6支持dhcp-remoteid(但不支持dhcp-circuitid)。

--dhcp-subscrid=set:<tag>,<subscriber-id>

(IPv4和IPv6)从RFC3993 subscriber-id中继代理选项映射到标记。

--dhcp-proxy[=<ip addr>]......

(仅限IPv4)普通的DHCP中继代理仅用于将DHCP交互的初始部分转发到DHCP服务器。配置客户端后,它将直接与服务器通信。如果中继代理正在向DHCP数据包添加额外信息(例如dhcp-circuitid和dhcp-remoteid使用的信息),则这是不合需要的。完整的中继实现可以使用RFC 5107 serverid-override选项强制DHCP服务器将中继用作完整代理,所有数据包都通过它。对于不支持RFC 5107的中继,该标志提供了另一种做同样事情的方法。单独给出它,它通过中继来操纵所有交互的服务器id。如果给出IP地址列表,则仅影响通过这些地址处的中继的交互。

--dhcp-match=set:<tag>,<option number>|option:<option name>|vi-encap:<enterprise>[,<value>]

如果没有值,请在客户端发送给定数字或名称的DHCP选项时设置标记。给定值时,仅在发送选项时设置标记并与值匹配。该值可以是“01:ff:*:02”的形式,在这种情况下,值必须匹配(除了通配符),但发送的选项可能具有超出值结尾的不匹配数据。该值也可以与dhcp-option中的形式相同,在这种情况下,发送的选项被视为数组,并且一个元素必须匹配,因此--dhcp匹配=组:EFI-IA32,选项:客户拱,6如果数字6出现在客户端在选项93中发送的体系结构列表中,则将设置标记“efi-ia32”。(有关详细信息,请参阅RFC 4578.)如果值是字符串,则使用子字符串匹配。具有vi-encap:的特殊表单与指定企业的供应商标识供应商类匹配。有关这些稀有和有趣的野兽的更多详情,请参阅RFC 3925。

--tag-if=set:<tag>[,set:<tag>[,tag:<tag>[,tag:<tag>]]]

对标签执行布尔运算。如果设置为标签:的所有标签都设置了,则设置显示为set:的任何标签,(或者当使用标签:!时未设置)如果没有标签:出现设置:标签无条件设置。可以按任何顺序显示任意数量的set:和tag:表单。Tag-if行按顺序执行,因此如果tag:中的标记是由另一个标记设置的标记 - if,则设置标记的行必须在测试它的行之前。

-J, --dhcp-ignore=tag:<tag>[,tag:<tag>]

当所有给定标签出现在标签集中时,忽略主机并且不为其分配DHCP租约。

--dhcp-ignore-names[=tag:<tag>[,tag:<tag>]]

当所有给定标签出现在标签集中时,忽略主机提供的任何主机名。请注意,与dhcp-ignore不同,允许不提供标记,在这种情况下,DHCP客户端提供的主机名始终被忽略,并且仅使用dnsmasq中的dhcp-host配置和/ etc的内容将DHCP主机添加到DNS/ hosts和/ etc / ethers。

--dhcp-generate-names=tag:<tag>[,tag:<tag>]

(仅限IPv4)使用以十六进制表示的MAC地址,以短划线分隔,为没有其他客户端的DHCP客户端生成名称。请注意,如果主机提供名称,则将优先使用该名称,除非设置了--dhcp-ignore-names。

--dhcp-broadcast[=tag:<tag>[,tag:<tag>]]

(仅限IPv4)当所有给定标签出现在标签集中时,在取消配置时,始终使用广播与主机通信。允许不提供标签,在这种情况下这是无条件的。大多数需要广播回复的DHCP客户端在其请求中设置了一个标志,以便自动发生,一些旧的BOOTP客户端不会。

-M, --dhcp-boot=[tag:<tag>,]<filename>,[<servername>[,<server address>|<tftp_servername>]]

(仅限IPv4)设置DHCP服务器返回的BOOTP选项。服务器名称和地址是可选的:如果未提供,则名称保留为空,并且地址设置为运行dnsmasq的计算机的地址。如果dnsmasq提供TFTP服务(请参阅--enable-tftp),则此处仅需要文件名以启用网络引导。如果给出了可选标记,则它们必须匹配才能发送此配置。TFTP服务器地址可以作为域名提供,而不是IP地址,该域名在/ etc / hosts中查找。此名称可以在/ etc / hosts中与多个IP地址关联,这些地址使用循环法。此工具可用于在一组服务器之间对tftp负载进行负载平衡。

--dhcp-sequential-ip

Dnsmasq旨在使用客户端MAC地址的哈希值为DHCP客户端选择IP地址。这通常允许客户端的地址长期保持稳定,即使客户端有时允许其DHCP租约到期。在此默认模式下,IP地址在整个可用地址范围内伪随机分布。有时情况(通常是服务器部署),从最低可用地址开始顺序分配IP地址更方便,并设置此标志启用此模式。请注意,在顺序模式下,允许租约到期的客户端更有可能移动IP地址;因此,通常不应该使用它。

--pxe-service=[tag:<tag>,]<CSA>,<menu text>[,<basename>|<bootservicetype>][,<server address>|<server_name>]

大多数PXE boot-ROMS的使用只允许PXE系统获取IP地址,然后下载dhcp-boot指定的文件并执行它。但是,当由合适的DHCP服务器支持时,PXE系统能够具有更复杂的功能。这指定了可能出现在PXE引导菜单中的引导选项。是客户端系统类型,只有正确类型的服务才会出现在菜单中。已知类型是x86PC,PC98,IA64_EFI,Alpha,Arc_x86,Intel_Lean_Client,IA32_EFI,X86-64_EFI,Xscale_EFI,BC_EFI,ARM32_EFI和ARM64_EFI;整数可以用于其他类型。菜单文本后面的参数可以是文件名,在这种情况下,dnsmasq充当引导服务器,并指示PXE客户端通过TFTP从其自身下载文件(必须为此设置enable-tftp)或另一个TFTP服务器,如果给出最终的服务器地址/名称。请注意,“layer”后缀(通常为“.0”)由PXE提供,无需添加到basename。或者,basename可以是文件名,带有后缀,在这种情况下不添加任何层后缀。如果给出整数引导服务类型而不是基本名称,则PXE客户端将在网络上搜索该类型的合适引导服务。该搜索可以通过广播完成,或者如果提供其IP地址/名称则直接到服务器。如果未提供引导服务类型或文件名(或指定引导服务类型为0),则菜单项将中止网络引导过程并继续从本地介质引导。服务器地址可以作为在/ etc / hosts中查找的域名给出。此名称可以在/ etc / hosts中与多个IP地址关联,这些地址使用循环法。

--pxe-prompt=[tag:<tag>,]<prompt>[,<timeout>]

设置此项提供PXE引导后显示的提示。如果超时,则在没有键盘输入超时后,将自动执行第一个可用的菜单选项。如果超时为零,则将立即执行第一个可用菜单项。如果省略pxe-prompt,如果菜单中有多个项目,系统将等待用户输入,但如果只有一个项目则立即启动。有关菜单项的详细信息,请参阅pxe-service。Dnsmasq支持PXE“proxy-DHCP”,在这种情况下,网络上的另一个DHCP服务器负责分配IP地址,而dnsmasq只提供pxe-prompt和pxe-service中给出的信息以允许netbooting。使用dhcp-range中的proxy关键字启用此模式。

-X, --dhcp-lease-max=<number>

将dnsmasq限制为指定的最大DHCP租约数。默认值为1000.此限制是为了防止来自主机的DoS攻击,这些主机在dnsmasq进程中创建了数千个租约并占用了大量内存。

-K, --dhcp-authoritative

应该在dnsmasq绝对是网络上唯一的DHCP服务器时设置。对于DHCPv4,它会从严格的RFC合规性更改行为,以便不会忽略来自未知主机的未知租约的DHCP请求。这允许新主机在任何情况下都可以获得租约而无需繁琐的超时。如果数据库丢失,它还允许dnsmasq重建其租用数据库,而不需要每个客户端都需要重新获取租约。对于DHCPv6,它将回复中的优先级设置为255(最大值)而不是0(最小值)。

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

(仅限IPv4)从默认值更改用于DHCP的端口。如果单独给出此选项,不带参数,则将用于DHCP的端口从67和68更改为1067和1068.如果给出单个参数,则该端口号用于服务器,端口号加1用于客户。最后,两个端口号允许任意指定DHCP的服务器端口和客户端端口。

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

(仅限IPv4)启用向BOOTP客户端动态分配IP地址。请谨慎使用,因为分配给BOOTP客户端的每个地址都是永久租用的,因此永久不可用于其他主机的重用。如果没有标签,则无条件地启用动态分配。使用标签时,仅在标签全部设置时。它可以用不同的标签集重复。

-5, --no-ping

(仅限IPv4)默认情况下,DHCP服务器将尝试确保在将地址分配给主机之前未使用该地址。它通过向相关地址发送ICMP回应请求(也称为“ping”)来完成此操作。如果它得到答复,那么该地址必须已经在使用,并且尝试了另一个。此标志禁用此检查。谨慎使用。--log-DHCP

--log-dhcp

DHCP的额外日志记录:记录发送到DHCP客户端的所有选项以及用于确定它们的标记。

--quiet-dhcp, --quiet-dhcp6, --quiet-ra

禁止记录这些协议的例行操作。仍将记录错误和问题。--quat-dhcp和quiet-dhcp6被--log-dhcp覆盖。

-l, --dhcp-leasefile=<path>

使用指定的文件存储DHCP租约信息。

--dhcp-duid=<enterprise-id>,<uid>

(仅限IPv6)指定DHCPv6服务器将使用的服务器持久性UID。通常不需要此选项,因为dnsmasq在首次需要时会自动创建DUID。给定时,此选项为dnsmasq提供创建DUID-EN类型DUID所需的数据。请注意,一旦设置,DUID将存储在租赁数据库中,因此要在DUID-EN和自动创建的DUID之间进行更改,反之亦然,必须重新初始化租用数据库。enterprise-id由IANA分配,uid是特定设备特有的十六进制八位字节串。

-6 --dhcp-script=<path>

每当创建新的DHCP租约或旧的DHCP租约,或TFTP文件传输完成时,都会运行此选项指定的可执行文件。 必须是绝对路径名,不会发生PATH搜索。该进程的参数是“add”,“old”或“del”,主机的MAC地址(或IPv6的DUID),IP地址和主机名(如果已知)。 “add”表示已创建租约,“del”表示已销毁,“old”表示dnsmasq启动时现有租约的通知或现有租约的MAC地址或主机名更改(也是租约长度或expiry和client-id,如果设置了leasefile-ro)。如果MAC地址来自以太网以外的网络类型,则它将具有前置网络类型,例如“06-01:23:45:67:89:ab”用于令牌环。该进程以root身份运行(假设dnsmasq最初以root身份运行),即使dnsmasq配置为将UID更改为非特权用户也是如此。
环境继承自dnsmasq的调用者,添加了部分或全部以下变量

对于IPv4和IPv6:

DNSMASQ_DOMAIN如果已知主机的完全限定域名,则将其设置为域部分。 (请注意,作为参数传递给脚本的主机名永远不是完全限定的。)

如果客户端提供主机名DNSMASQ_SUPPLIED_HOSTNAME

如果客户端提供用户类,则DNSMASQ_USER_CLASS0..DNSMASQ_USER_CLASSn

如果使用HAVE_BROKEN_RTC编译dnsmasq,则租约的长度(以秒为单位)存储在DNSMASQ_LEASE_LENGTH中,否则租约到期时间存储在DNSMASQ_LEASE_EXPIRES中。租约到期前的秒数始终存储在DNSMASQ_TIME_REMAINING中。

如果租约曾经拥有一个被删除的主机名,则会使用新的租约状态(即没有名称)生成“旧”事件,并且在环境变量DNSMASQ_OLD_HOSTNAME中提供前一个名称。

DNSMASQ_INTERFACE存储请求到达的接口的名称;当dnsmasq重新启动时,这不会设置为“旧”操作。

如果客户端使用DHCP中继来联系dnsmasq并且已知中继的IP地址,则设置DNSMASQ_RELAY_ADDRESS。

DNSMASQ_TAGS包含DHCP事务期间设置的所有标记,以空格分隔。

如果--log-dhcp生效,则设置DNSMASQ_LOG_DHCP。

仅适用于IPv4:

DNSMASQ_CLIENT_ID,如果主机提供了客户端ID。

如果DHCP中继代理添加了任何这些选项,则DNSMASQ_CIRCUIT_ID,DNSMASQ_SUBSCRIBER_ID,DNSMASQ_REMOTE_ID。
  如果客户端提供供应商类DNSMASQ_VENDOR_CLASS。

DNSMASQ_REQUESTED_OPTIONS包含“参数请求列表”选项中的十进制值的字符串,如果客户端提供参数请求列表选项,则以逗号分隔。

仅适用于IPv6:

如果客户端提供供应商类DNSMASQ_VENDOR_CLASS_ID,其中包含该类的IANA企业ID,并且DNSMASQ_VENDOR_CLASS0..DNSMASQ_VENDOR_CLASSn包含该数据。

包含服务器DUID的DNSMASQ_SERVER_DUID:对于每次调用脚本都是一样的。

DNSMASQ_IAID包含租约的IAID。如果租约是临时分配,则以“T”为前缀。

DNSMASQ_MAC包含客户端的MAC地址(如果已知)。

请注意,提供的hostname,vendorclass和userclass数据仅在主机恢复现有租约时提供“添加”操作或“旧”操作,因为这些数据不保存在dnsmasq的租约数据库中。

所有文件描述符都是关闭的,除了stdin(对/ dev / null开放),stdout和stderr用于捕获dnsmasq记录的输出。 (在调试模式下,stdio,stdout和stderr文件保留为从dnsmasq的调用者继承的文件)。

该脚本不会同时调用:最多只有一个脚本实例正在运行(dnsmasq在运行下一个脚本之前等待脚本实例退出)。对租用数据库的更改要求调用脚本排队等待正在运行的实例的退出。如果此排队允许在运行脚本之前对单个租约进行多个状态更改,则会丢弃先前的状态,并在脚本最终运行时反映该租约的当前状态。

在dnsmasq启动时,将从租用文件中读取所有现有租约的脚本。过期的租约将使用“del”调用,其他租约将使用“old”调用。当dnsmasq收到HUP信号时,将使用“旧”事件为现有租约调用该脚本。

还有四个进一步的动作可能作为脚本的第一个参数,“init”,“arp-add”,“arp-del”和“tftp”。将来可能会添加更多内容,因此应编写脚本以忽略未知操作。 “init”在下面的-leasefile-ro中描述。当TFTP文件传输完成时,将调用“tftp”操作:参数是文件大小(以字节为单位),文件发送到的地址以及文件的完整路径名。文件。
  仅当使用--script-arp启用时,才会调用“arp-add”和“arp-del”操作它们提供了MAC地址和IP添加

--dhcp-luascript=<path>

指定在Lua中编写的脚本,以便在创建,销毁或更改租约时运行。要使用此选项,必须使用正确的支持编译dnsmasq。当dnsmasq启动时,Lua解释器初始化一次,以便全局变量在租约事件之间保持不变。Lua代码必须定义一个租用函数,并且可以在dnsmasq启动和终止时提供不带参数的init和shutdown函数。它还可以提供tftp功能。租用功能接收--dhcp-script中详细说明的信息。它有两个参数,首先是action,它是一个包含“add”,“old”或“del”的字符串,其次是一个标记值对表。标签主要对应于上面详述的环境变量,例如标签“domain”保存与环境变量DNSMASQ_DOMAIN相同的数据。还有一些额外的标记用于保存作为-dhcp-script参数提供的数据。这些是IPv4的mac_address,ip_address和hostname,以及IPv6的client_duid,ip_address和hostname。以与lease函数相同的方式调用tftp函数,该表包含标记destination_address,file_name和file_size。arp和arp-old函数只有在使用--script-arp启用时才会被调用,并且有一个包含标记mac_address和client_address的表。

--dhcp-scriptuser

指定运行租约更改脚本或Lua脚本的用户。默认为root,但可以使用此标志更改为其他用户。

--script-arp

在dhcp-script和dhcp-luascript中启用“arp”和“arp-old”函数。

-9, --leasefile-ro

完全禁止使用租用数据库文件。不会创建,读取或写入该文件。更改调用租约更改脚本(如果提供了一个)的方式,以便脚本可以将租用数据库维护在外部存储中。除了在-dhcp-script中给出的调用之外,在dnsmasq启动时,使用单个参数“init”调用一次lease-change脚本。当这样调用时,脚本应该以dnsmasq leasefile格式将租约数据库的已保存状态写入stdout并以零退出代码退出。设置此选项还会强制在更改client-id和租约长度以及到期时间时调用leasechange脚本。

--bridge-interface=<interface>,<alias>[,<alias>]

处理DHCP(v4和v6)请求以及到达任何接口的IPv6路由器请求数据包,就像它们已到达一样。此选项允许dnsmasq通过未寻址和未桥接的以太网接口提供DHCP和RA服务,例如,在OpenStack计算主机上,每个此类接口都是VM的TAP接口,或者在BSD平台上的“旧式桥接”。可以在每个中使用尾随的'*'通配符。允许使用多个--bridge-interface选项添加多个别名,因为--bridge-interface = int1,alias1,alias2完全等同于--bridge-interface = int1,alias1 --bridge-interface =INT1,别名2

-s, --domain=<domain>[,<address range>[,local]]

指定DHCP服务器的DNS域。域可以无条件地给予(没有IP范围)或有限的IP范围。这有两个影响;首先,它使DHCP服务器将域返回给请求它的任何主机,其次它设置了由DHCP配置的主机声明合法的域。目的是约束主机名,以便LAN上的不可信主机不能通过dhcp通告其名称,例如:“microsoft.com”并捕获不适合它的流量。如果未指定域后缀,则将禁止并记录具有域部分(即具有句点)的任何DHCP主机名。如果指定了后缀,则允许具有域部分的主机名,前提是域部分与后缀匹配。此外,当设置后缀时,没有域部分的主机名将后缀添加为可选域部分。例如,在我的网络上,我可以设置--domain = thekelleys.org.uk,并拥有一台DHCP主机名为“laptop”的机器。该机器的IP地址可从dnsmasq获得,分别为“laptop”和“laptop.thekelleys.org.uk”。如果域名为“#”,则从/etc/resolv.conf中的第一个“search”指令(或等效的)中读取域。地址范围可以是 / 形式,也可以是单个。请参阅--dhcp-fqdn,它可以使用域更改dnsmasq的行为。如果地址范围以ip-address / network-size给出,则可以提供附加标志“local”,其具有为正向和反向DNS查询添加--local声明的效果。例如。--domain = thekelleys.org.uk,192.168.0.0 / 24,local与--domain = thekelleys.org.uk相同,192.168.0.0 / 24 --local = / thekelleys.org.uk / --local =/0.168.192.in-addr.arpa/网络大小必须为8,16或24才能合法。

--dhcp-fqdn

在默认模式下,dnsmasq将DHCP客户端的非限定名称插入DNS。因此,名称必须是唯一的,即使两个具有相同名称的客户端位于不同的域中。如果出现与现有客户端同名的第二个DHCP客户端,则该名称将传输到新客户端。如果设置了--dhcp-fqdn,则此行为会更改:不再将非限定名称放入DNS中,只放置限定名称。如果域部分不同(即完全限定名称不同),则两个具有相同名称的DHCP客户端都可以保留名称。为确保所有名称都具有域部分,必须至少--domain不带地址设置--dhcp-fqdn时指定。

--dhcp-client-update

通常,在提供DHCP租约时,dnsmasq会在FQDN选项中设置标志,以告知客户端不要尝试使用其名称和IP地址进行DDNS更新。这是因为name-IP对会自动添加到dnsmasq的DNS视图中。此标志禁止该行为,例如,这对于允许Windows客户端更新Active Directory服务器很有用。有关详细信息,请参阅RFC 4702。

--enable-ra

启用dnsmasq的IPv6路由器通告功能。DHCPv6不像DHCPv4那样处理完整的网络配置。用于自主地址创建的路由器发现和(可能的)前缀发现由不同的协议处理。当使用DHCP时,只需要其中的一部分,并且dnsmasq可以使用现有的DHCP配置来处理它,以提供大多数数据。启用RA后,dnsmasq将为每个dhcp-range通告前缀,默认路由器将作为运行dnsmasq的计算机上的相关链路本地地址。默认情况下,“托管地址”位置1,“使用SLAAC”位复位。可以使用--dhcp-range中描述的mode关键字为各个子网更改此值。RFC6106 DNS参数包含在广告中。默认情况下,运行dnsmasq的计算机的相关链路本地地址作为递归DNS服务器发送。如果提供,则DHCPv6选项dns-server和domain-search用于DNS服务器(RDNSS)和域搜索列表(DNSSL)。

--ra-param=<interface>,[mtu:<integer>|<interface>|off,][high,|low,]<ra-interval>[,<router lifetime>]

设置通过接口发送的路由器通告的非默认值。路由器的优先级字段可以从默认的介质更改,例如--ra-param = eth0,high。可以使用--ra-param = eth0,60设置路由器通告之间的间隔(以秒为单位)。路由的生命周期可以更改或设置为零,这允许路由器通过前缀而不是通过自身路由。--ra-parm = eth0,0,0(间隔值为零表示默认值。)可以一次设置所有四个参数。--ra-PARAM = eth0的,MTU:1280,低,60,1200接口字段可以包括通配符。mtu:参数可以是任意接口名称,在这种情况下,使用该接口的MTU值。这对于(例如)在路由器的其他接口上通告WAN接口的MTU是有用的。

--dhcp-reply-delay=[tag:<tag>,]<integer>

延迟发送DHCPOFFER和proxydhcp至少回复指定的秒数。这可以用作PXE启动固件中的错误的解决方法,这些错误在收到即时回复时无法正常运行。该选项考虑了等待的时间(例如,执行ping检查),如果有的话。

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

启用TFTP服务器功能。这有意限于网络启动客户端所需的内容。只允许阅读;支持tsize和blksize扩展(仅在八位位组模式下支持tsize)。如果没有参数,TFTP服务将提供给与​​DHCP服务相同的一组接口。如果提供了接口列表,则定义哪些接口接收TFTP服务。

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

查找要使用TFTP相对于给定目录传输的文件。设置此项后,将拒绝包含“..”的TFTP路径,以阻止客户端超出指定的根目录。允许使用绝对路径(以/开头),但它们必须位于tftp-root中。如果给出了可选的接口参数,则该目录仅用于通过该接口的TFTP请求。

--tftp-no-fail

如果指定的tftp根目录不可访问,请不要中止启动。

--tftp-unique-root[=ip|mac]

将TFTP客户端的IP或硬件地址添加为TFTP根目录末端的路径组件。仅在设置了tftp-root且目录存在时才有效。默认为添加IP地址(采用标准的点分四格式)。例如,如果tftp-root是“/ tftp”而客户端1.2.3.4请求文件“myfile”,那么如果/tftp/1.2.3.4存在,则有效路径为“/tftp/1.2.3.4/myfile”或/ tftp /否则我的文件。当指定“= mac”时,它将使用由破折号分隔的小写零填充数字来附加MAC地址,例如:01-02-03-04-aa-bb请注意,只有在客户端处于此状态时才能解析MAC地址本地网络或从我们获得DHCP租约。

--tftp-secure

启用TFTP安全模式:如果没有这个,可以通过TFTP获得dnsmasq进程在正常的unix访问控制规则下可读的任何文件。当给出--tftp-secure标志时,只能访问运行dnsmasq进程的用户拥有的文件。如果以root身份运行dnsmasq,则会应用不同的规则: - tftp-secure无效,但只能访问具有全局可读位的文件。建议不要在启用TFTP的情况下以root身份运行dnsmasq,当然也不能在没有指定--tftp-root的情况下运行。这样做可以将服务器上任何世界可读的文件暴露给网络上的任何主机。

--tftp-lowercase

将TFTP请求中的文件名转换为全部小写。这对于来自Windows计算机的请求很有用,这些计算机具有不区分大小写的文件系统,并且在文件名中使用大小写的情况可能会快速松散。请注意,dnsmasq的tftp服务器始终在文件名中将“\”转换为“/”。

--tftp-max=<connections>

设置允许的最大并发TFTP连接数。默认为50.当提供大量TFTP连接时,可能会遇到每进程文件描述符限制。Dnsmasq每个并发TFTP连接需要一个文件描述符,每个唯一文件需要一个文件描述符(加上其他一些文件描述符)。因此,同时向n个客户端提供相同的文件将使用大约n + 10个文件描述符,同时向n个客户端提供不同的文件将需要大约(2 * n)+ 10个描述符。如果给出了--tftp-port-range,则会影响并发连接数。

--tftp-mtu=<mtu size>

在协商TFTP块大小时,使用size作为中间网络支持的MTU的上限,如果更大,则覆盖本地接口的MTU设置。

--tftp-no-blocksize

停止TFTP服务器与客户端协商“blocksize”选项。一些有缺陷的客户端请求此选项,但在授予它时表现不佳。

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

TFTP服务器侦听一个众所周知的端口(69)以进行连接启动,但它也为每个连接使用动态分配的端口。通常这些是由OS分配的,但是此选项指定了TFTP传输使用的一系列端口。当TFTP必须遍历防火墙时,这非常有用。除非dnsmasq以root身份运行,否则范围的开始不能低于1025。并发TFTP连接数受端口范围大小的限制。

-C, --conf-file=<file>

指定其他配置文件。配置文件中也允许使用conf-file选项,以包含多个配置文件。文件名“ - ”会导致dnsmasq从stdin读取配置。

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

读取给定目录中的所有文件作为配置文件。如果给出了扩展名,则会跳过以这些扩展名结尾的所有文件。名称以〜开头的任何文件。总是跳过#或以#开头和结尾。如果扩展名以开头,则仅加载具有该扩展名的文件。所以--conf -dir = / path / to / dir,。conf在/ path / to / dir中加载后缀为.conf的所有文件。可以在命令行或配置文件中给出此标志。如果在命令行上提供它,请确保转义*字符。

--servers-file=<file>

--conf文件的一个特例,它在两个方面有所不同。首先,在包含的配置文件中只允许使用--server和--rev-server。其次,当dnsmasq接收SIGHUP时,重新读取文件并更新其中的配置。

exit code

  • 0 - Dnsmasq成功分叉到后台,或者如果未启用后台处理则正常终止。
  • 1 - 检测到配置问题。
  • 2 - 发生网络访问问题(正在使用的地址,未经许可尝试使用特权端口)。
  • 3 - 文件系统操作出现问题(缺少文件/目录,权限)。
  • 4 - 内存分配失败。
  • 5 - 其他杂项问题。
  • 11或更大 - 从租用脚本进程“init”调用接收到非零返回码。dnsmasq的退出代码是脚本的退出代码,添加了10。

限制

dnsmasq中资源限制的默认值通常是保守的,适用于处理器速度慢且内存有限的嵌入式路由器类型设备。在功能更强大的硬件上,可以增加限制,并处理更多客户端。以下内容适用于dnsmasq-2.37:早期版本也没有扩展。

Dnsmasq能够为至少一千个客户端处理DNS和DHCP。DHCP租约时间不应该很短(不到一小时)。可以增加--dns-forward-max的值:从等于客户端数量开始,如果DNS看起来很慢,则增加。请注意,DNS性能也取决于上游名称服务器的性能。可以增加DNS缓存的大小:硬限制为10000个名称,默认值(150)非常低。将SIGUSR1发送到dnsmasq会使其成为日志信息,这对于调整缓存大小很有用。有关详细信息,请参阅NOTES部分。

内置的TFTP服务器能够同时进行多个文件传输:绝对限制与进程允许的文件句柄数量以及select()系统调用处理大量文件句柄的能力有关。如果使用--tftp-max将限制设置得太高,它将按比例缩小,并在启动时记录实际限制。请注意,发送相同文件时,与每次传输发送不同文件时相比,可以进行更多传输。

可以使用dnsmasq来阻止Web广告,方法是使用已知的banner-ad服务器列表,所有这些服务器都解析为127.0.0.1或0.0.0.0,位于/ etc / hosts或其他hosts文件中。该列表可能很长,dnsmasq已经成功测试了一百万个名字。该大小的文件需要1GHz处理器和大约60Mb的RAM。

» 转载请注明来源:若我若鱼 » dnsmasq 详细参数

Leave a Reply

Your email address will not be published. Required fields are marked *

one + nineteen =