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文件。

    #############################################################################
    #
    #        DNS 选项
    #
    ##############################################################################
    # 不加载本地的 /etc/hosts 文件
    #no-hosts
    # 添加读取额外的 hosts 文件路径,可以多次指定。如果指定为目录,则读取目录中的所有文件。
    #addn-hosts=/etc/hosts
    # 读取目录中的所有文件,文件更新将自动读取
    #hostsdir=<path>
    # 例如,/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
    # 设置日志记录器,‘-‘ 为 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 接口,可以使用‘*‘通配符
    #interface=wlp2s0
    # 指定排除的接口,排除高优先级,可以使用‘*‘通配符
    #except-interface=
    # 启用 DNS 验证模式
    #auth-server=<domain>,<interface>|<ip-address>
    # 仅接收同一子网的 DNS 请求,仅在未指定 interface、except-interface、listen-address 
    # 或者 auth-server 时有效。
    #local-service
    # 指定不提供 DHCP 或 TFTP 服务的接口,仅提供 DNS 服务
    #no-dhcp-interface=enp3s0
    # 指定IP地址,可以多次指定。下面两行跟指定接口的作用类似。
    #listen-address=192.168.10.254
    #listen-address=127.0.0.1
    # 绑定接口,开启此项将仅监听指定的接口。
    #bind-interfaces
    # 对于新添加的接口也进行绑定。
    #bind-dynamic ##############################################################################
    # 如果 hosts 中的主机有多个 IP 地址,仅返回对应子网的 IP 地址。
    #localise-queries
    # 如果反向查找的是私有地址例如192.168.X.X,仅从 hosts 文件查找,不再转发到上游服务器
    #bogus-priv
    # 对于任何被解析到此IP的域名,使其解析失效,可以多次指定
    #bogus-nxdomain=64.94.110.11
    # 忽略指定的 DNS 响应服务器地址,例如 1.1.1.1 为伪造的 dns 服务器并且响应速度非常快,
    # 指定 ignore-address=1.1.1.1 可以忽略它的响应信息,从而等待正确的响应结果。
    #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=/.dinghuangjie.com/.dhj.com/.harlinsu.com/.example.com/.test.com/.esderive.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=/example.com/192.168.10.252
    #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 # 启用连接跟踪,读取 Linux 入栈 DNS 查询请求的连接跟踪标记,
    # 并且将上游返回的响应信息设置同样的标记。
    # 用于带宽控制和防火墙部署。
    # 此选项必须在编译时启用 conntrack 支持,并且内核正确配置并加载 conntrack。
    # 此选项不能与 query-port 同时使用。
    #conntrack ##############################################################################
    #
    #        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 中继。
    # <local address> 是运行 dnsmasq 的接口的 IP 地址。
    # 所有在 <local address> 接口上接收到的 DHCP 请求将中继到 <server address> 指定的远程 DHCP 服务器。
    # 可以多次配置此选项,使用同一个 <local address> 转发到多个不同的 <server address> 指定的远程 DHCP 服务器。
    # <server address> 仅允许使用 IP 地址,不能使用域名等其他格式。
    # 如果是 DHCPv6,<server address> 可以是 ALL_SERVERS 的多播地址 ff05::1:3 。
    # 在这种情况下必须指定接口 <interface> ,不能使用通配符,用于直接多播到对应的 DHCP 服务器所在的接口。
    # <interface> 指定了仅允许接收从 <interface> 接口的 DHCP 服务器相应信息。
    #dhcp-relay=<local address>,<server address>[,<interface>] ##############################################################################
    # 设置标签
    #dhcp-vendorclass=set:<tag>,[enterprise:<IANA-enterprise number>,]<vendor-class>
    #dhcp-userclass=set:<tag>,<user-class>
    #dhcp-mac=set:<tag>,<MAC address>
    #dhcp-circuitid=set:<tag>,<circuit-id>
    #dhcp-remoteid=set:<tag>,<remote-id>
    #dhcp-subscrid=set:<tag>,<subscriber-id>
    #dhcp-match=set:<tag>,<option number>|option:<option name>|vi-encap:<enterprise>[,<value>]
    #tag-if=set:<tag>[,set:<tag>[,tag:<tag>[,tag:<tag>]]] #dhcp-proxy[=<ip addr>]...... ##############################################################################
    # 不分配匹配这些 tag:<tag> 的 DHCP 请求。
    #dhcp-ignore=tag:<tag>[,tag:<tag>]
    #dhcp-ignore-names[=tag:<tag>[,tag:<tag>]]
    #dhcp-generate-names=tag:<tag>[,tag:<tag>]
    # IPv4 only 使用广播与匹配 tag:<tag> 的客户端通信。一般用于兼容老的 BOOT 客户端。
    #dhcp-broadcast[=tag:<tag>[,tag:<tag>]]  ##############################################################################
    # IPv4 only 设置 DHCP 服务器返回的 BOOTP 选项,
    # <servername> <server address> 可选,
    # 如果未设置服务器名称将设为空,服务器地址设为 dnsmasq 的 IP 地址。
    # 如果指定了多个 tag:<tag> 必须同时匹配才行。
    # 如果指定 <tftp_servername> 将按照 /etc/hosts 中对应的 IP 地址进行轮询负载均衡。  
    #dhcp-boot=[tag:<tag>,]<filename>,[<servername>[,<server address>|<tftp_servername>]]
    # 根据不同的类型使用不同的选项。
    # 使用示例:
    #        dhcp-match=set:EFI_x86-64,option:client-arch,9
    #        dhcp-boot=tag:EFI_x86-64,uefi/grubx64.efi
    #        #dhcp-match=set:EFI_Xscale,option:client-arch,8
    #        #dhcp-boot=tag:EFI_Xscale,uefi/grubx64.efi
    #        #dhcp-match=set:EFI_BC,option:client-arch,7
    #        #dhcp-boot=tag:EFI_BC,uefi/grubx64.efi
    #        #dhcp-match=set:EFI_IA32,option:client-arch,6
    #        #dhcp-boot=tag:EFI_IA32,uefi/grubx64.efi
    #        #dhcp-match=set:Intel_Lean_Client,option:client-arch,5
    #        #dhcp-boot=tag:Intel_Lean_Client,uefi/grubx64.efi
    #        #dhcp-match=set:Arc_x86,option:client-arch,4
    #        #dhcp-boot=tag:Arc_x86,uefi/grubx64.efi
    #        #dhcp-match=set:DEC_Alpha,option:client-arch,3
    #        #dhcp-boot=tag:DEC_Alpha,uefi/grubx64.efi
    #        #dhcp-match=set:EFI_Itanium,option:client-arch,2
    #        #dhcp-boot=tag:EFI_Itanium,uefi/grubx64.efi
    #        #dhcp-match=set:NEC/PC98,option:client-arch,1
    #        #dhcp-boot=tag:NEC/PC98,uefi/grubx64.efi
    #        dhcp-match=set:Intel_x86PC,option:client-arch,0
    #        dhcp-boot=tag:Intel_x86PC,pxelinux.0 ##############################################################################
    # DHCP 使用客户端的 MAC 地址的哈希值为客户端分配 IP 地址,
    # 通常情况下即使客户端使自己的租约到期,客户端的 IP 地址仍将长期保持稳定。
    # 在默认模式下,IP 地址是随机分配的。
    # 启用 dhcp-sequential-ip 选项将按顺序分配 IP 地址。
    # 在顺序分配模式下,客户端使租约到期更像是仅仅移动一下 IP 地址。
    # 在通常情况下不建议使用这种方式。
    #dhcp-sequential-ip ##############################################################################
    # 多数情况下我们使用 PXE,只是简单的允许 PXE 客户端获取 IP 地址,
    # 然后 PXE 客户端下载 dhcp-boot 选项指定的文件并执行,也就是 BOOTP 的方式。
    # 然而在有适当配置的 DHCP 服务器支持的情况下,PXE 系统能够实现更复杂的功能。
    # pxe-service 选项可指定 PXE 环境的启动菜单。
    # 为不同的类型系统设定不同的启动菜单,并且覆盖 dhcp-boot 选项。
    # <CSA> 为客户端系统类型:x86PC, PC98, IA64_EFI, Alpha, Arc_x86, Intel_Lean_Client, 
    # IA32_EFI, X86-64_EFI, Xscale_EFI, BC_EFI, ARM32_EFI 和 ARM64_EFI,其他类型可能为一个整数。
    # <basename> 引导 PXE 客户端使用 tftp 从 <server address> 或者 <server_name> 下载文件。
    #     注意:"layer" 后缀 (通常是 ".0") 由 PXE 提供,也就是 PXE 客户端默认在文件名附加 .0 后缀。
    #     示例:pxe-service=x86PC, "Install Linux", pxelinux         (读取 pxelinux.0 文件并执行)
    #           pxe-service=x86PC, "Install Linux", pxelinux, 1.2.3.4(不适用于老的PXE)
    #     <bootservicetype> 整数,PXE 客户端将通过广播或者通过 <server address> 
    #           或者 <server_name> 搜索对应类型的适合的启动服务。。
    #     示例:pxe-service=x86PC, "Install windows from RIS server", 1
    #           pxe-service=x86PC, "Install windows from RIS server", 1, 1.2.3.4
    #     未指定 <basename>、<bootservicetype> 或者 <bootservicetype> 为 “0”,将从本地启动。
    #     示例:pxe-service=x86PC, "Boot from local disk"
    #           pxe-service=x86PC, "Boot from local disk", 0
    # 如果指定 <server_name> 将按照 /etc/hosts 中对应的 IP 地址进行轮询负载均衡。  
    #pxe-service=[tag:<tag>,]<CSA>,<menu text>[,<basename>|<bootservicetype>][,<server address>|<server_name>]
    # 在 PXE 启动后弹出提示,<prompt> 为提示内容,<timeout> 为超时时间,为 0 则立即执行。
    # 如果未指定此选项,在有多个启动选项的情况下等待用户选择,不会超时。
    #pxe-prompt=[tag:<tag>,]<prompt>[,<timeout>]
    # 根据不同的类型使用不同的菜单,使用示例:
    #        #pxe-prompt="What system shall I netboot?", 120
    #        # or with timeout before first available action is taken:
    #        pxe-prompt="Press F8 or Enter key for menu.", 60
    #        pxe-service=x86PC, "Now in x86PC (BIOS mode), boot from local", 0
    #        pxe-service=x86PC, "Now in x86PC (BIOS mode)", pxelinux
    #        pxe-service=PC98, "Now in PC98 mode", PC98
    #        pxe-service=IA64_EFI, "Now in IA64_EFI mode", IA64_EFI
    #        pxe-service=Alpha, "Now in Alpha mode", Alpha
    #        pxe-service=Arc_x86, "Now in Arc_x86 mode", Arc_x86
    #        pxe-service=Intel_Lean_Client, "Now in Intel_Lean_Client mode", Intel_Lean_Client
    #        pxe-service=IA32_EFI, "Now in IA32_EFI mode", IA32_EFI
    #        pxe-service=X86-64_EFI, "Now in X86-64_EFI (UEFI mode), boot from local", 0
    #        pxe-service=X86-64_EFI, "Now in X86-64_EFI (UEFI mode)", grub/grub-x86_64.efi
    #        pxe-service=Xscale_EFI, "Now in Xscale_EFI mode", Xscale_EFI
    #        pxe-service=BC_EFI, "Now in BC_EFI mode", BC_EFI
    #        # CentOS7 系统不支持下列两个选项
    #        #pxe-service=ARM32_EFI,"Now in ARM32_EFI mode",ARM32_EFI
    #        #pxe-service=ARM64_EFI,"Now in ARM64_EFI mode",ARM64_EFI ##############################################################################
    # 默认为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>

    dnsmasq详解&手册的更多相关文章

    1. Java8 Lambda表达式详解手册及实例

      先贩卖一下焦虑,Java8发于2014年3月18日,距离现在已经快6年了,如果你对Java8的新特性还没有应用,甚至还一无所知,那你真得关注公众号"程序新视界",好好系列的学习一下 ...

    2. Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)

      概述 前面的一篇博文粗略介绍了基于lazyUI的第一个demo,本文将详细描述此工具的设计和使用. 元素获取插件:LazyUI Elements Extractor,作为Chrome插件,用于抓取页面 ...

    3. OpenCV参考手册之Mat类详解

      OpenCV参考手册之Mat类详解(一) OpenCV参考手册之Mat类详解(二) OpenCV参考手册之Mat类详解(三)

    4. CMake 手册详解(二十)

      SirDigit CMake 手册详解(二十) CMD#51: list 列表操作命令. list(LENGTH <list> <output variable>) list( ...

    5. cmake 手册详解【转】

      https://www.cnblogs.com/coderfenghc/tag/cmake/   CMake 手册详解(二十三) SirDigit 2012-12-16 22:03 阅读:11058 ...

    6. 《阿里巴巴Java开发手册》码出高效详解(一)- 为什么要学习阿里编码手册

      <Java 开发手册>(以下简称<手册>)是每个 Java 工程师人手必备的一本参考指南.该手册包括 编程规约.异常日志.单元测试.安全规约.MySQL 数据库.工程结构.设计 ...

    7. Web自动化框架LazyUI使用手册(5)--模板工程:LazyUI-template详解

      概述: LazyUI-template: 提供Maven管理的,基于Spring+Testng的,包含常用浏览器driver的,方便连接各种数据库的java模板工程,并提供以百度搜索为例的第一个测试用 ...

    8. [转载]OpenSSL中文手册之命令行详解(未完待续)

       声明:OpenSSL之命令行详解是根据卢队长发布在https://blog.csdn.net/as3luyuan123/article/details/16105475的系列文章整理修改而成,我自己 ...

    9. 详解Linux目录(目录树详细解释)

      给大家一篇关于Linux目录 方面的详细说明,好好读一下! Linux目录详解(RHEL5.4) linux有四种基本文件系统类型:--普通文件:如文本文件.c语言源代码.shell脚本等,可以用ca ...

    随机推荐

    1. vs不自动退出控制台程序的办法

      1.在主函数rerurn 前加上getchar();即可. 2.ctrl+F5;

    2. 【noip 2011】提高组Day1T3.Mayan游戏

      Description Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是 ...

    3. JVM学习(一)简介

      一.java程序编译到运行大概流程 1.Source Code Files为.java文件 2.通过编译产生可执行的字节码. 3.通过jvm得到机器可以执行的机器码 4.操作系统运行机器码,并与硬件进 ...

    4. 第25月第18天 vue

      1.cnpm sudo chown -R $USER /usr/local  npm install -g cnpm --registry=https://registry.npm.taobao.or ...

    5. js判断浏览器类型和版本

      原网址:http://www.cnblogs.com/rubylouvre/archive/2009/10/14/1583362.html 除了另无它法,肯定不使用navigator.userAgen ...

    6. ES6走一波 字符串的扩展

      ES6字符串扩展: 处理大码点字符 字符的Unicode表示法 \uxxxx表示一个字符串,超出 \u0000 ~ \uffff范围,必须用两个双字节形式表示. ES6改进为 将码点放到大括号 可正确 ...

    7. eclipse使用异常An error has occurred.see error log for more details eclipse

      eclipse使用异常An error has occurred.see error log for more details eclipse 解决Eclipse,MyEclipse出现An erro ...

    8. const的引用

      const的引用 对常量的引用:把引用绑定到const对象上,就像绑定到其他对象上一样,不能被用作修改它所绑定的对象: ; const int &r1 = ci;//正确:引用及其对应的对象都 ...

    9. okhttp3与旧版本okhttp的区别分析

      https://www.jianshu.com/p/4a8c94b239b4  待总结学习

    10. java多线程面试题小结

      http://www.importnew.com/12773.html http://www.cnblogs.com/fingerboy/p/5352880.html https://blog.csd ...