轻量级域名解析服务器dnsmasq
最美dee时光 人气:01、dnsmasq的简介
dnsmasq提供DNS缓存和DHCP服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存DNS请求来提高对访问过的网址的连接速度。作为DHCP服务器,dnsmasq可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个PXE服务器。
2、dnsmasq的主要作用
- 将Dnsmasq作为本地DNS服务器使用,直接修改电脑的本地DNS的IP地址即可。
- 应对ISP的DNS劫持(反DNS劫持),输入一个不存在的域名,正常的情况下浏览器是显示无法连接,DNS劫持会跳转到一个广告页面。先随便nslookup 一个不存在的域名,看看ISP商劫持的IP地址。
- 智能DNS加快解析速度,打开/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如国内外不同的网站使用不同的DNS。
国内指定DNS
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
server=/taobaocdn.com/114.114.114.114
国外指定DNS
server=/google.com/223.5.5.5 - 屏蔽网页广告,将指广告的URL指定127这个IP,就可以将网页上讨厌的广告给去掉了。
address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1 - 指定域名解析到特定的IP上。这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。
address=/www.baidu.com/123.123.123.123 - 管理控制内网DNS,首先将局域网中的所有的设备的本地DNS设置为已经安装Dnsmasq的服务器IP地址。然后修改已经安装Dnsmasq的服务器Hosts文件:/etc/hosts,指定域名到特定的IP中。
例如想让局域网中的所有用户访问www.freehao123.com时跳转到192.168.0.2,添加:192.168.0.2 www.freehao123.com在Hosts文件中既可,整个过程也可以说是“DNS劫持”。
3、dnsmasq的解析流程
- dnsmasq先去解析hosts文件;
- 再去解析/etc/dnsmasq.d/下的*.conf文件;
- 上面这些文件的优先级要高于dnsmasq.conf,我们自定义的resolv.dnsmasq.conf中的DNS也被称为上游DNS,这是最后去查询解析的。
如果不想用hosts文件做解析,我们可以在/etc/dnsmasq.conf中加入no-hosts这条语句,这样的话就直接查询上游DNS了;
如果我们不想做上游查询,就是不想做正常的解析,我们可以加入no-reslov这条语句。
4、dnsmasq的参数及常用设置说明(/etc/dnsmasq.conf )
1)dnsmasq经常修改的比较重要参数说明
resolv-file:定义dnsmasq从哪里获取上游DNS服务器的地址, 默认从/etc/resolv.conf获取
strict-order:表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止
listen-address:定义dnsmasq监听的地址,默认是监控本机的所有网卡上
address:启用泛域名解析,即自定义解析a记录,例如:address=/long.com/192.168.115.10 访问> > > long.com时的所有域名都会被解析成192.168.115.10
bogus-nxdomain:对于任何被解析到此IP的域名,将响应 NXDOMAIN 使其解析失效,可以多次指定,通常用于对于访问不存在的域名,禁止其跳转到运营商的广告站点
server:指定使用哪个DNS服务器进行解析,对于不同的网站可以使用不同的域名对应解析。
例如:server=/google.com/8.8.8.8 #表示对于google的服务,使用谷歌的DNS解析。
2)查看配置文件语法是否正确,可执行下列命令
dnsmasq --test
3)DNS 缓存设置
要在单台电脑上以守护进程方式启动dnsmasq做DNS缓存服务器,编辑/etc/dnsmasq.conf,添加监听地址:
listen-address=127.0.0.1
如果用此主机为局域网提供默认DNS,请用为该主机绑定固定IP 地址,设置:
listen-address=10.10.x.x
这种情况建议配置静态IP
多个ip地址设置:
listen-address=127.0.0.1,10.10.x.x
4)三个以上域名服务器
Linux处理DNS 请求时有个限制,在 resolv.conf 中最多只能配置三个域名服务器(nameserver)。作为一种变通方法,可以在 resolv.conf 文件中只保留localhost 作为域名服务器,然后为外部域名服务器另外创建 resolv-file 文件。首先,为dnsmasq 新建一个域名解析文件:
cat /etc/dnsmasq.d/resolv.dnsmasq.conf nameserver 8.8.8.8 nameserver 8.8.4.4
然后编辑 /etc/dnsmasq.conf 让 dnsmasq 使用新创建的域名解析文件:
cat /etc/dnsmasq.conf ... resolv-file=/etc/dnsmasq.d/resolv.dnsmasq.conf ...
5、dnsmasq的部署
1)安装dnsmasq
yum -y install dnsmasq
安装完毕后,可以通过dnsmasq -v命令查看版本,有版本号出来就代表安装上了。
2)修改Dnsmasq配置文件dnsmasq.conf
修改配置文件前一定要先备份
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak echo 'resolv-file=/etc/dnsmasq.d/resolv.dnsmasq.conf' >> /etc/dnsmasq.conf #表示dnsmasq 会从这个指定的文件中寻找上游dns服务器 echo 'addn-hosts=/etc/dnsmasq.d/dnsmasq.hosts' >> /etc/dnsmasq.conf #添加读取额外的 hosts 文件路径,可以多次指定;也可以指定为目录,会自动扫描此目录下的配置文件 cat /etc/dnsmasq.conf ... strict-order #取消这一行的注释,表示严格按照resolv.conf中的顺序进行查找 listen-address=127.0.0.1,192.168.115.120 #多个ip地址设置;如果想允许所有的用户使用你的DNS解析服务器,把listen-address去掉即可 ...
3)修改/etc/resolv.conf文件,并创建resolv.dnsmasq.conf和dnsmasq.hosts文件
echo 'nameserver 127.0.0.1' > /etc/resolv.conf yes | cp /etc/resolv.conf /etc/dnsmasq.d/resolv.dnsmasq.conf echo 'nameserver 8.8.8.8' >>/etc/dnsmasq.d/resolv.dnsmasq.conf echo 'nameserver 10.10.0.120' >>/etc/dnsmasq.d/resolv.dnsmasq.conf yes | cp /etc/hosts /etc/dnsmasq.d/dnsmasq.hosts
resolv.dnsmasq.conf
中设置的是真正的Nameserver,可以填写各大商家提供的免费DNS地址。
4)启动Dnsmasq
systemctl start dnsmasq #启动dnsmasq服务 systemctl enable dnsmasq #设置成开机自启动 netstat -antp|grep 53 #查看端口是否启动成功
5)测试是否配置成功。
第一次查询耗时150ms,第二次查询耗时0ms
6、dnsmasq的使用及实现的功能
1)作为本地DNS使用
将dnsmasq作为本地DNS服务器使用,直接修改电脑的本地DNS的IP地址即可。
ping harbor私服的域名并访问,发现可以ping通且可以正常访问
2)智能DNS加快解析速度。
打开/etc/dnsmasq.conf文件,server=添加指定的DNS
,例如国内外不同的网站使用不同的DNS。
cat /etc/dnsmasq.conf ... 国内指定DNS server=/cn/114.114.114.114 server=/taobao.com/114.114.114.114 server=/taobaocdn.com/114.114.114.114 国外指定DNS server=/google.com/223.5.5.5 ...
3)屏蔽网页广告
将广告的URL指定127.0.0.1这个IP,就可以将网页上讨厌的广告给去掉了。
cat /etc/dnsmasq.conf ... address=/ad.youku.com/127.0.0.1 address=/ad.iqiyi.com/127.0.0.1 ...
4)指定域名解析到特定的IP上
这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。
cat /etc/dnsmasq.conf ... address=/www.baidu.com/123.123.123.123 ...
访问www.baidu.com会发现无法访问此网站
5)管理控制内网DNS
首先将局域网中的所有的设备的本地DNS设置为已经安装dnsmasq的服务器IP地址;然后修改已经安装dnsmasq的服务器hosts文件:/etc/hosts
,指定域名到特定的IP中。
例如:想让局域网中的所有用户访问www.http123.com时跳转到10.10.0.111,添加'10.10.0.111 www.http123.com'
到hosts文件
中既可,整个过程也可以说是"DNS劫持"。
echo'10.10.0.111 www.http123.com' >> /etc/hosts
浏览器访问www.http123.com就会自动跳转到10.10.0.111上
总结
加载全部内容