树莓派搭建内网DNS服务器并实现内网域名解析

前言

我想在内网搭建一个DNS服务器来实现在内网中,用外网不存在的域名后缀网址来访问内网资源。

Dnsmasq工作原理 当接受到一个DNS请求时,Dnsmasq首先会查找/etc/hosts这个文件,然后查找/etc/resolv.conf中定义的外部DNS。所以说Dnsmasq是一个很不错的外部DNS中继。 配置Dnsmasq为DNS缓存服务器,同时在/etc/hosts文件中加入本地内网解析,这样一来每当内网机器查询时就会优先查询hosts文件,这就等于将/etc/hosts共享给全内网机器使用,从而解决内网机器互相识别的问题。相比逐台机器编辑hosts文件或者添加Bind DNS记录,仅编辑一个hosts文件,这简直太容易了。

安装Dnsmasq

配置Dnsmasq

++配置的DNS服务器地址是公网的IP地址, 而你要对域名进行解析的话,可以修改Hosts文件,或者在dnsmasq.conf配置文件里面添加解析即可!++

配置Dnsmasq的配置文件

dnsmasq.conf的配置内容比较多,但是只需要搭建一台DNS服务器的话,只需要简单的配置就可以了。dnsmasq.conf通常坐在地位置是/etc/dnsmasq.conf。

resolve-file定义dnsmasq从哪里获取上游DNS服务器的地址, 默认是从/etc/resolv.conf获取。 strict-order表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。 listen-address定义dnsmasq监听的地址,默认是监控本机的所有网卡上。 address自定义域名解析的IP地址,在此已www.tang.tang这个域名为例。

注意:

这里有个坑,不少人都在这个坑里搞了好长时间,网上很多教程都没有明确强调这一点!这里不少人认为是解析的本机所以就把IP地址写成127.0.0.1,这样局域网其它主机是解析不到的,必须还要写上本机所在局域网内的IP地址,比如这台主机在局域网内的IP地址是192.168.1.24,那么就要加上这个IP地址!所以这个参数正确写法应该是127.0.0.1,192.168.1.24,后面的参数改为你的主机在局域网的IP。

配置上游服务器地址

resolv-file配置Dnsmasq额外的上游的DNS服务器,如果不开启就使用Linux主机默认的/etc/resolv.conf里的nameserver。

添加域名解析记录

方法一

(1)使用系统默认hosts 编辑hosts文件,简单列举一下格式

 

hosts文件的强大之处还在于能够劫持解析,譬如mirror.centos.org是CentOS仓库所在,几乎是机器正常必访问一个域名,我将它解析成一个内网地址,搭建一个内网镜像站,不仅内网机器也可以及时得到安全更新,每月还可以节省很多流量。

(2)使用自定义hosts文件

 

如果你找配置文件找了很久都没找到,我建议你看看VIm的相关语法。

(3)使用dnsmasq.conf文件解析

修改iptables配置

启动与测试

 

修改客户机的DNS服务器

控制面板\网络和 Internet\网络和共享中心中:

1.找到以太网或者有线网络并点击。
2.点击属性
3.找到Internet协议4(TCP/IPV4)并双击
4.点击使用下面的DNS服务器地址。并在首选项输入你的DNS服务器地址以及你的DNS默认网关。
5.点击确定,点击关闭!
6.现在,你应该行了。