dnsmasq詳解&手冊


 

 

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>

     

     


    免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM