介绍:什么是DNS服务器就不说了,至于搭建dns服务器,在linux上有很多的服务可以搭建的,比如:bind、dnsmasq、unbound....等;
直接上干货:
搭建环境:redhat7.0,yum源挂载的是redhat7.0的光盘;
一、Dnsmasq安装
yum install dnsmasq -y
二、Dnsmasq配置
1、Dnsmasq的配置文件为:/etc/dnsmasq.conf
2、编辑/etc/dnsmasq.conf
找到下列参数修改或添加:
resolv-file=/etc/resolv.dnsmasq.conf //会从这个文件中寻找上游dns服务器
strict-order //去掉前面的#
addn-hosts=/etc/dnsmasq.hosts //在这个目录里面ip和域名dnsmasq
listen-address=127.0.0.1,172.22.10.50 //监听地址
3、修改/etc/resolv.conf
/etc/resolv.conf 定义了本机的dns地址(在本身不是dns服务器之前),将该文件内容注释并添加 nameserver 127.0.0.1 ,使用本机作为dns服务器;
4、创建 /etc/resolv.dnsmasq.conf 文件并添加上游dns服务器的地址
默认没有 /etc/resolv.dnsmasq.conf ,需要按照dnsmasq配置文件中参数定义的路径创建;
touch /etc/resolv.dnsmasq.conf
echo 'nameserver 114.114.114.114' > /etc/resolv.dnsmasq.conf
* 以 114.114.114.114 为上游的dns服务器;
resolv.dnsmasq.conf 中设置的是真正的nameserver,可以用电信、联通等公共的DNS
5、创建 /etc/dnsmasq.hosts 文件
touch /etc/dnsmasq.hosts
vim 编辑 /etc/dnsmasq.hosts 文件,添加ip对应的域名,例如:
192.168.111.111 xpt.redhat.cn
这样,当客户端要求解析 xpt.redhat.cn 时,会解析为192.168.111.111 ;
三、Dnsmasq启动
1、设置Dnsmasq开机启动并启动Dnsmasq服务:
systemctl start dnsmasq.service
systemctl enable dnsmasq.service
2、netstat -tunlp | grep 53 查看Dnsmasq是否正常启动:
# netstat -tlunp|grep 53
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 2491/dnsmasq
tcp 0 0 :::53 :::* LISTEN 2491/dnsmasq
udp 0 0 0.0.0.0:53 0.0.0.0:* 2491/dnsmasq
udp 0 0 :::53 :::*
如果有防火墙的话还需要打开防火墙:
firewall-cmd --add-service=dns //允许防火墙临时放行dns服务;
firewall-cmd --add-service=dns --permanent //允许dns通过,永久生效;
##### 到此处,一个简单的dns服务器就搭建成功了,主要是理解配置文件中参数定义的文件路径都是什么作用;
可以使用 自己的windows电脑做测试,将自己windows的dns修改成搭建dns服务器的ip;
运行cmd,使用host 或者nslookup命令都可以:
hsot xpt.redhat.cn
nslookup xpt.redhat.cn
工作流程:
windows向dns服务器发送请求解析 xpt.redhat.cn ,dns服务器接收到之后先去 /etc/dnsmasq.hosts 文件中寻找有误匹配的ip、域名,如果有则返回域名对应的ip,如果没有则向 /etc/resolv.dnsmasq.conf 中定义的上级dns服务器发送请求解析;
下面是对dns服务器配置进一步的深入:
1.对参数的解释:
resolv-file 定义dnsmasq从哪里获取上游DNS服务器的地址, 默认是从/etc/resolv.conf获取。
strict-order 表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。
listen-address 定义dnsmasq监听的地址,默认是监控本机的所有网卡上。
局域网内主机若要使用dnsmasq服务时,指定本机的IP地址。
address 启用泛域名解析,即自定义解析a记录,如下配置为demon.com这个域名:
address=/demon.com/127.0.0.1 #访问demon.com时的所有域名都会被解析成127.0.0.1
server 指定dnsmasq程序使用哪个DNS服务器进行解析。对于不同的网站可以使用不同的域名对应解析如下配置
server=/google.com/8.8.8.8 #表示对于google的服务,使用谷歌的DNS解析。
bogus-nxdomain 为防止DNS污染,使用参数定义的DNS解析的服务器。注意:如果是阿里云服务器上配置dnsmasq要启用此项。
############## dns服务器的优化 ################
一、应对ISP的DNS劫持。
1.输入一个不存在的域名,正常的情况下浏览器是显示无法连接,DNS劫持会跳转到一个广告页面。
先随便 nslookup 一个不存在的域名,看看ISP商劫持的IP地址。
2.接着编辑/etc/dnsmasq.conf文件,将:bogus-nxdomain=123.123.123.123 加入进去,
后面的IP是刚刚查询到的DNS劫持IP地址;
3.重启dnsmasq,再尝试打开不存在的域名,这时浏览器就会显示正常的无法连接页面了。
二、智能DNS加快解析速度。
打开/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如国内外不同的网站使用不同的DNS。
#国内指定DNS
server=/cn/114.114.114.114
server=/taobao.com/223.5.5.5
server=/taobaocdn.com/114.114.114.114
#国外指定DNS
server=/google.com/8.8.8.8
server=/cn/表示所有的cn域名都使用114这个公共DNS,
三、屏蔽网页广告。
将指广告的URL指定127这个IP,就可以将网页上讨厌的广告给去掉了。
address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1
四、指定域名解析到特定的IP上。
这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。
address=/freehao123.com/123.123.123.123
五、内网DNS。
首先将局域网中的所有的设备的本地DNS设置为已经安装Dnsmasq的服务器IP地址。
然后修改已经安装Dnsmasq的服务器Hosts文件:/etc/hosts,指定域名到特定的IP中。