DNSmasq 配置域名重定向

DNS Server
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。

现实中,如果服务端版本变更,需要验证旧版本客户端是否运行正常怎么办?一个选择是修改客户端指向地址,指向为开发环境地址。如果不想修改代码直接使用上线的 release 版本,就可以本地配置一个 DNS 服务器,将域名重定向。

DNSmasq 简介

DNSmasq 是一个小巧且方便地用于配置 DNS 和 DHCP 的工具,它提供了 DNS 功能和可选择的 DHCP 功能。它可以服务那些只在本机和局域网可用的域名,这些域名是不会在全球的DNS服务器中出现的,即不能通过外网访问,也可以配置已存在的域名,对域名地址重新进行指向。

本文使用环境为 Ubuntu 16.04

DNSmasq 安装

1
sudo apt-get install dnsmasq

DNSmasq 配置

DNSmasq 的配置文件为/etc/dnsmasq.conf,编辑内容如下:

1
2
3
4
5
6
7
8
9
# 多个IP用逗号分隔,192.168.x.x表示本机的ip地址,只有127.0.0.1的时候表示只有本机可以访问。
# 通过这个设置就可以实现同一局域网内的设备,通过把网络DNS设置为本机IP从而实现局域网范围内的DNS泛解析(注:无效IP有可能导至服务无法启动)
listen-address=192.168.x.x,127.0.0.1

#指定上游DNS服务器,8.8.8.8为谷歌提供的公共DNS
server=8.8.8.8

# 这一行就是你想要重定向的域名配置.
address=/hello.me/192.168.1.100

通过如上配置,hello.me 及其所有二级域名都会指向 192.168.1.100,不支持只包含顶级域名的配置(Stack Overflow:Wildcard subdomains with dnsmasq )。
若需要某个制定域名指向其他地址,如 mail.hello.me 指向 192.168.1.101,需增加配置:

1
address=/mail.hello.me/192.168.1.101

重启服务使配置生效:

1
sudo service dnsmasq restart

测试

可以使用dig查询 DNS 解析。如 DNSmasq 所安装的服务器地址为 192.168.1.1,则执行如下命令:

1
dig @192.168.1.1 hello.me

若不添加 @192.168.1.1 则用本机获取到的 DNS 服务器进行解析。

Cotin Yang wechat
欢迎订阅我的微信公众号 CotinDev
小小地鼓励一下吧~😘