前言
最近公司的客户端项目需要用iPhone iPad 等移动设备访问测试服务器,直接客户端改ip显然不是一个好办法,要知道现在我们的客户端编译一次的时间就够我们打一局LOL了,但是iPhone没有越狱又不能更改系统hosts文件,于是就想到了在公司局域网搭建一个DNS服务器,测试和开发人员连上局域网更改请求的DNS服务器,这样就很方便了,google一下,发现DNSmasq特别适合在局域网搭建DNS服务器,不过仅限于局域网,比较大型的网络就不行了。最近弄了一个,记录一下,方便自查。
简介
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。这里只介绍DNSmasq在mac os平台搭建局域网DNS服务器,需要了解DNSmasq其它用法的同学请自行google。
安装
经常使用mac的同学对homebrew这个神器不陌生了吧,这里使用homebrew安装,如果还没有安装homebrew可使用下面命令一键安装
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
使用homebrew一键安装DNSmasq
brew install dnsmasq
最后将DNSmasq默认的配置示例文件放到指定位置并改名
cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
这样DNSmasq就算是安装完成了。
配置
配置就是对dnsmaq.conf文件的参数修改,在修改它之前,我们先建立我们需要读取的hosts文件,实际也可以直接使用系统的hosts文件/etc/hosts里面的域名绑定,但是这样会影响本机的DNS环境,所以还是建议自行生成我们需要的hosts文件比较好
vim /etc/masq.hosts
1.1.1.1 www.baidu.com
这样就建立好了我们需要读取的hosts文件,接下来编辑配置文件dnsmaq.conf,只需要更改两个参数
addn-hosts=/etc/masq.hosts //指定需要解析的hosts文件位置
listen-address=127.0.0.1,x.x.x.x //监听需要解析域名的地址
127.0.0.1是本地,x.x.x.x是本机内网地址,必须设置内网地址,局域网内网的其它设备才能访问这个DNS服务器。
我们使用自己的DNS服务器,一般是针对某些域名需要解析成我们指定的ip地址,但是其它域名我们还是希望它访问正常的DNS服务器,这样我们就需要在DNS服务器上设置默认的DNS服务器
上面两行是公司内网其它的DNS服务器,下面是常用的外网DNS服务器。这样连接到这台DNS服务器的设备访问其它的域名也没问题了。最后如果需要本机也使用masq.hosts里面的解析,那么只需要再添加本地地址127.0.0.1就可以了,当然是添加到最前,不然还没等访问本机已经从其它DNS服务器获得地址了。
最后重启DNSmasq服务生效
sudo brew services restart dnsmasq
以上