輕量級集合DNS,HTTP,TFTP軟件。
本初僅使用DNS功能。
用途 : 給本地局域網服務器提供:hosts主機記錄,自定義域名,以及公網域名DNS轉發解析。
集中配置內網服務器的hosts記錄,替代內網bind服務功能。
yum安裝
- 安裝
yum -y install dnsmasq
- 修改配置文件
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
#重新填寫配置文件 /etc/dnsmasq.conf
##偵聽端口
port=53
##服務啟動用戶及用戶組
user=nobody
group=nobody
##業務偵聽地址 - interface 選項和 listen-address 選項可以同時使用
listen-address=10.10.10.10,127.0.0.1
##不加載本地的 /etc/hosts 文件
no-hosts
##添加讀取額外的 hosts 文件路徑,可以多次指定。如果指定為目錄,則讀取目錄中的所有文件。
addn-hosts=/data/dnsmasq/dnsmasq.hosts
##讀取目錄中的所有文件,文件更新將自動讀取
hostsdir=/data/dnsmasq/dnsmasq.d
##記錄dns查詢日志,如果指定 log-queries=extra 那么在每行開始處都有額外的日志信息。
log-queries
##設置日志記錄器
log-facility=/data/dnsmasq/log/dnsmasq.log
##異步log,緩解阻塞,提高性能。默認為5,最大100。
log-async=50
##指定 EDNS.0 UDP 包的最大尺寸,默認為 RFC5625 推薦的 edns-packet-max=4096
edns-packet-max=4096
##指定接口
interface=ens33
##指定不提供 DHCP 或 TFTP 服務的接口,僅提供 DNS 服務。
no-dhcp-interface=ens33
##指定 resolv-file 文件路徑(上游DNS服務器),默認/etc/resolv.dnsmasq
resolv-file=/data/dnsmasq/resolv.dnsmasq
##嚴格按照resolv.conf中的順序進行查找
strict-order
##重啟后清空緩存
clear-on-reload
##完整的域名才向上游服務器查找,如果僅僅是主機名僅查找hosts文件
domain-needed
##緩存條數,默認為150條,cache-size=0 禁用緩存。
cache-size=1000
##不緩存未知域名緩存,默認情況下dnsmasq緩存未知域名並直接返回為客戶端。
no-negcache
##指定DNS同屬查詢轉發數量
dns-forward-max=1000
- 創建相關配置文件及文件夾
mkdir -p /data/dnsmasq/{dnsmasq.d,log}
touch /data/dnsmasq/{dnsmasq.hosts,resolv.dnsmasq}
- 填寫DNS轉發服務器(提供非自定義域名查詢)
#新增配置 /data/dnsmasq/resolv.dnsmasq
nameserver 223.5.5.5
nameserver 1.2.4.8
- 填寫hosts主機記錄(提供域名hosts記錄集中查詢)
#新增配置 /data/dnsmasq/dnsmasq.hosts
10.10.10.10 test10
10.10.10.11 test11
10.10.10.12 test12
修改addn-hosts指定hosts記錄文件,需重啟dnsmasq,可以通過hostsdir指定域名配置文件添加解析。
- 填寫自定義域名(提供內網自定義域名查詢)
#新增配置文件 /data/dnsmasq/dnsmasq.d/k8s.test (為方便區分不同的二級域名,建議按二級域名創建配置文件)
10.10.10.11 etcd.k8s.test
- 啟動服務並設置開機啟動
systemctl start dnsmasq.service
systemctl enable dnsmasq.service
- 所有服務器設置DNS指向10.10.10.10
#修改配置項 /etc/sysconfig/network-scripts/ifcfg-eth0
PEERDNS=no #拒絕接受DHCP分發的DNS配置
DNS1=10.10.10.10 #自定義配置DNS服務器地址
#重啟網絡配置
systemctl restart network.service
其他DNS用法
- 添加指定泛域名通過指定DNS服務器解析(防域名被劫持,或者轉發指定域名解析)
#增加配置 /etc/dnsmasp.conf
server=/sohu.com/10.1.1.1
- 添加指定泛域名解析成指定IP (可用來屏蔽特定的域名)
#增加配置 /etc/dnsmasp.conf
address=/baidu.com/2.2.2.2
- 添加A記錄
#增加配置 /etc/dnsmasp.conf
host-record=test13.test,10.10.10.13
- 添加別名記錄(需要先添加源地址解析記錄,在添加別名記錄)
#增加配置 /data/dnsmasq/dnsmasq.d/test.test
10.10.10.20 20.test.test
#增加配置 /etc/dnsmasp.conf
cname=10.test.test,20.test.test