chaihongjun.me

使用dnsmasq搭建内网dns服务器解析内网网站

在公司局域网内搭建了一台web服务器用于日常开发,但是因为没有域名可以方便访问,所以每次开发过程中遇到很多不方便的地方,于是想到能不能给局域网内网的网站也弄个域名,只需要内网的人可以访问就可以了,于是查到dnsmasq可以满足我们的需要,一方面日常网站可以正常解析访问,另外一方面本地局域网开发的网站也可以通过自己配置的域名方便的访问与开发调试。

dnsmasq的整体工作思路是:运行在本地局域网一台服务器上(192.168.0.250),为局域网的其他人负责解析服务,这里dnsmasq安装到了web服务器上(192.168.0.250),一台服务器提供多项服务。其他人,比如开发者将自己电脑的DNS服务器地址填写为192.168.0.250,至此,客户端的配置完成了。然后是服务端的配置,由于需要客户端能正常访问其他非开发的网站,因此dnsmasq需要能辨别处理哪些网站由dnsmasq自己处理,哪些由其他dns服务处理,后面的安装配置过程再分析。

dnsmasq安装过程:

# 在本地局域网服务器内
yum install dnsmasq -y  #centos安装方法,其他方法可以查官网参考

接着配置需要dnsmasq负责解析的域名:(配置文件/etc/hosts)

vi /etc/hosts 
# 一行一个解析记录
192.168.0.250 www.blog.com
192.168.0.250 admin.blog.com

上面'blog.com'的域名配置是准备本地访问使用的,公网是否有相同的域名在whois查询之前无法确认,但是配置之后,即使公网也有相同的域名,由于dnsmasq会优先解析本地的配置,因此即使公网存在也只解析本地的。

所有想本地解析的域名都写入上面的配置文件内,那么其它想访问的公网网站谁负责解析呢?这里就是交给所谓的上游DNS也就是我们日常熟知的阿里DNS,电信DNS等等,配置文件是'etc/resolv.conf':

nameserver 223.5.5.5  #这里配置的是阿里云的公共DNS
nameserver 223.6.6.6

所以,总结一下本地域名解析是通过'/etc/hosts',其他公网访问解析通过'/etc/resolv.conf'配置公共DNS,注意客户端电脑的DNS填写的是dnsmasq服务器的内网IP。

以上配置完成之后,重启一下dnsmasq服务,让配置生效:

service dnsmasq restart

最后实际访问一下内网配置的网站和公网网址,可以检查一下配置是否生效。简单的应用就是这样,关于dnsmasq的其他配置,可以进一步查询官网(https://thekelleys.org.uk/dnsmasq/doc.html)了解。

知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。作者:柴宏俊»