提供 DNS 缓存和 DHCP 服务、TFTP 服务功能
作为 DNS 中继,当接受到一个 DNS 请求时,DNSmasq 首先会解析 /etc/hosts
这个文件,然后解析 /etc/dnsmasq.d/*.conf
的文件,最后才去查找 /etc/resolv.conf
中定义的外部 DNS
$ yum install dnsmasq -y
# 启动
$ systemctl start dnsmasq.service
# 开机启动
$ systemctl enable dnsmasq.service
# 查看是否在运行(yum install net-tools)
$ netstat -lnp|grep dnsmasq
# 添加本地的域名与服务 IP 映射文件
$ vim /etc/hosts.dnsmasq
192.168.1.148 admin.dev.com
# 添加上游 DNS 服务器地址
$ vim /etc/resolv.conf.dnsmasq
nameserver 114.114.114.114
nameserver 8.8.8.8
$ vim /etc/dnsmasq.conf
# 指定监听地址
listen-address=127.0.0.1,192.168.x.x
# If you don't want dnsmasq to read /etc/hosts, uncomment the
# following line.
#no-hosts
# or if you want it to read another file, as well as /etc/hosts, use
# this.
addn-hosts=/etc/hosts.dnsmasq
# Change this line if you want dns to get its upstream servers from
# somewhere other that /etc/resolv.conf
resolv-file=/etc/resolv.conf.dnsmasq
# 严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止
strict-order
# 设置 DNS 缓存大小(默认 150 条)
cache-size=150
$ vim /etc/dnsmasq.d/example.conf
# 访问 app.dev.com 的所有域名将被解析为 192.168.1.151
address=/app.dev.com/192.168.1.151
# 屏蔽网页广告
address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1
# 为指定域名使用特定 DNS 服务器
server=/google.com/223.5.5.5
# 检查配置文件语法是否正确
$ dnsmasq --test
dnsmasq: syntax check OK.
# 重新启动 dnsmasq
$ systemctl restart dnsmasq
需要开放 dnsmasq 的端口 53 ,如果服务器配置有防火墙,需要把这个防火墙放开 53 端口
不推荐修改 DNS 的端口,电脑默认使用的 DNS 端口是 53,修改之后可能访问不了自己构建的 dns 服务器
每次添加新域名的时候,需要重启下 dnsmasq 服务