dnsmasq
介绍
可以做正向、反向dns解析,支持DHCP服务。也可以做内部dns服务器用.
实现功能:利用dnsmasq做dns解析服务,内网的域名解析为本机的ip地址,外网的域名通过dns解析为外网对应的地址.
搭建
本机的ip地址是:100.100.137.89
1.安装:
yum install dnsmasq -y
2.启动服务:
systemctl enable dnsmasq.service
systemctl start dnsmasq.service
3.查看版本:
dnsmasq -v
4.修改配置文件:
dnsmasq配置选项比较多,我们可以根据实际需求来进行配置。下面为我的配置文件:
cat /etc/dnsmasq.conf
#设置 DNS 缓存大小为 10000 条记录
cache-size=10000
#指定包含上游 DNS 服务器地址的文件位置。当 dnsmasq 接收到它不能直接回答的 DNS 请求时,它会将这些请求转发给这个文件中列出的 DNS 服务器。
resolv-file=/etc/dnsmasq-resolv.conf
#指定一个或多个附加主机文件的位置,这些文件中的条目会被添加到 dnsmasq 的解析表中,允许自定义域名与 IP 地址的映射。
addn-hosts=/etc/dnsmasq.hosts
#启用查询日志记录功能。
log-queries
#指定日志文件的位置
log-facility=/var/log/dnsmasq.log
#设置本地解析的 TTL(Time To Live)值为 600 秒
local-ttl=600
#指定一个目录,dnsmasq 会读取该目录下的所有配置文件。
conf-dir=/etc/dnsmasq.d
#使 dnsmasq 严格按照 /etc/resolv.conf 文件中列出的顺序使用 DNS 服务器。这可以确保特定的 DNS 服务器优先被使用。
strict-order
#指定 dnsmasq 监听的 IP 地址
listen-address=100.100.137.89,127.0.0.1
解析是有顺序的,所以一定要将本机的ip作为dns放在前面,如果顺序不对,解析也是会出问题的.
cat /etc/dnsmasq-resolv.conf
nameserver 223.6.6.6
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 100.100.137.89
添加读取额外的 hosts 文件路径,可以多次指定。如果指定为目录,则读取目录中的所有文件,这里指定的域名和ip都是一对一的关系.
cat /etc/dnsmasq.hosts
100.100.137.89 test.zqf.com
100.100.137.89 test2.zqf.com
100.100.137.89 qq.com
100.100.137.89 aliyun.com
/etc/dnsmasq.d所有.conf文件都是要做解析的,我在这个目录下创建了一个address.conf的配置文件,用来将域名解析到特定的ip上面,这种定义方式支持泛域名解析和反向解析等方式.
cat /etc/dnsmasq.d/address.conf
address=/www.taobao.com/100.100.137.88
ptr-record=127.0.0.1.in-addr.arpa,www.taobao.com
address=/baidu.com/100.100.137.88
address=/saneri.com/100.100.137.88
systemctl restart dnsmasq
这些就是我的配置项,内网的域名解析到指定的主机ip上面,外网的域名解析正常.
解析测试
可以在本机使用nslookup进行测试,也可以在开一个客户机,将客户机的dns指向为100.100.137.20进行解析测试;
1. 修改客户机的dns
vim /etc/resolv.conf
nameserver 100.100.137.89
2. 经过测试,只要是写了dns服务(addn-hosts=/etc/dnsmasq.hosts文件和conf-dir=/etc/dnsmasq.d目录)里面的域名,
都会解析到内网地址,没写进去的正常公网地址比如jd.com(会经过resolv-file=/etc/dnsmasq-resolv.conf配置的解析 )
3. 想要写一个公网的dns要放到内网dns的后面(按照顺序,直到解析到ip),避免内网搭建的dns服务挂了之后,解析不到域名。例如:
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 100.100.137.89
nameserver 223.6.6.6
此时ping test.zqf.com,baidu.com,www.taobao.com,解析的还是100.100.137.21,ping jd.com的话还是走的公网dns。