linux使用dnsmasq搭建DNS服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux使用dnsmasq搭建DNS服务器相关的知识,希望对你有一定的参考价值。

介绍:什么是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中。

以上是关于linux使用dnsmasq搭建DNS服务器的主要内容,如果未能解决你的问题,请参考以下文章

dnsmasq搭建简易dns服务器

搭建dnsmasq

76 windows & mac 连接 linux 上面的 dnsmasq dns服务器, 能够 nslookup 但是 ping 不通

76 windows & mac 连接 linux 上面的 dnsmasq dns服务器, 能够 nslookup 但是 ping 不通

76 windows & mac 连接 linux 上面的 dnsmasq dns服务器, 能够 nslookup 但是 ping 不通

Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析