使用dnsmasq搭建dns服务器解决内网域名测试问题
问题背景
有时候需要在内网环境里进行域名相关的测试。
如果是简单域名,可以通过修改/etc/hosts文件来实现,比如
127.0.0.1 test.xmanyou.com
但是如果是通配符域名呢?hosts文件是不支持下边这边配置来解析通配符的:
127.0.0.1 *.apps.xmanyou.com
解决方法
解决方法,就是搭建一个自己的dns服务器。dnsmasq就是这样一个dns服务器。
下边详细介绍一下在MacOS环境下,利用dnsmasq搭建内网域名测试环境的方法。
关于 dnsmasq
Dnsmasq provides network infrastructure for small networks: DNS, DHCP, router advertisement and network boot.
Dnsmasq是一个开源的轻量级DNS转发和DHCP、TFTP服务器,使用C语言编写。Dnsmasq针对家庭局域网等小型局域网设计,资源占用低,易于配置。
安装 dnsmasq
brew install dnsmasq
使用 dnsmasq
一些命令
- 启动/重启
注意1 需要用sudo启动
sudo brew services restart dnsmasq
- 停止
sudo brew services stop dnsmasq
配置 dnsmasq
dnsmasq的配置文件
/usr/local/etc/dnsmasq.conf
注意2 修改配置后,需要重启服务来生效
参数
- strict-order
- listen-address ,
示例
# 严格按照/etc/resolv.conf文件指定的dsn解析器的顺序进行解析
strict-order
# 服务监听地址,设置为127.0.0.1仅限本机使用
listen-address=127.0.0.1
添加dns解析记录
# 不使用通配符
address=/test.xmanyou.com/127.0.0.1
# 使用通配符
address=/.apps.xmanyou.com/127.0.0.1
指定dns服务器
测试
dig test.xmanyou.com
dig 123.apps.xmanyou.com
/usr/local/etc/dnsmasq.conf 配置文件完整示例
# 严格按照/etc/resolv.conf文件指定的dsn解析器的顺序进行解析
strict-order
# 服务监听地址,设置为127.0.0.1仅限本机使用
listen-address=127.0.0.1
# 不使用通配符
address=/test.xmanyou.com/127.0.0.1
# 使用通配符解析 *.apps.xmanyou.com
address=/.apps.xmanyou.com/127.0.0.1
好了,现在可以在内网进行域名测试了,测试完毕后再部署到生产环境就很省心了。