dnsmasq-full设置
dnsmasq的简介
Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提⾼对访问过的⽹址的
连接速度。作为DHCP 服务器,dnsmasq 可以⽤于为局域⽹电脑分配内⽹ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独
实现。dnsmasq轻量且易配置,适⽤于个⼈⽤户或少于50台主机的⽹络。此外它还⾃带了⼀个 PXE 服务器。
dnsmasq的解析流程
当接受到⼀个DNS请求时,Dnsmasq⾸先会查找/etc/hosts这个⽂件, 再去解析/etc/dnsmasq.d/下的*.conf⽂件,并且这些⽂件的优
先级要⾼于dnsmasq.conf,我们⾃定义的resolv.dnsmasq.conf中的DNS也被称为上游DNS,这是最后去查询解析的;
DNS劫持:
修改已经安装Dnsmasq的服务器Hosts⽂件:/etc/hosts,指定域名到特定的IP中。例如想让局域⽹中的所有⽤户访问www.msy.com时
跳转到192.168.0.2,添加:
192.168.0.2 www.sh.com
以下是测试,了解dnsmasq如何对DNS请求区别对待的。
修改/etc/dnsmasq.conf,最后添加conf-dir=/etc/dnsmasq.d,然后新建/etc/dnsmasq.d⽬录并添加配置⽂件dns_test.conf,该⽬录
下可以添加多个配置⽂件。
添加如下测试样例:对于域名为baidu.com相关的DNS请求,转发到服务器8.8.8.8的53端⼝进⾏查询,并将查询的结果返回给查询者,同
时也将查询结果加⼊ipset中
每次修改配置⽂件后,执⾏命令/etc/init.d/dnsmasq restart重启dnsmasq服务!
server=/baidu.com/8.8.8.8#53
server=/taobao.com/114.114.114.114#53
server=/qq.com/8.8.4.4#53
server=/google.com/127.0.0.1#5300
address=/msy.com/192.168.0.1
通过对配置⽂件dns_test.conf进⾏配置,可对baidu,taobao,qq进⾏配置#,可以对DNS请求进⾏区别对待了。⽐如#qq那⾏,那ping
qq.com就不能域名解析。
常⽤命令:
1 |
/etc/init.d/dnsmasq restart |
查看本机的 DNS 配置:
1 |
cat /etc/resolv.conf |
查看 dnsmasq 配置:
1 2 3 |
cat /etc/dnsmasq.conf conf-dir=/etc/dnsmasq.d dnsmasq --test |
显⽰活动中连接
netstat -lptn
有⼏个坑需要注意:
1、设置dns相关配置,有可能不起作⽤,是因为dns有缓存,需要重启就好啦。
2.dnsmasq-full安装⾮常重要,否则dhcp服务和dns服务都将不能使⽤,dnsmasq.d下配置的脚本也将不能识别,从⽽导致dnsmasq出
错,路由器将不能联⽹和正常dns解析,切记dnsmasq-full必须安装成功。
执⾏:opkg remove dnsmasq && opkg install dnsmasq-full,切记此时openwrt的dns服务器应设在上游⽹关处。因为remove后本
地服务器dns不可⽤,也就不要解析安装dnsmasq-full。
3.network-DHCP/DNS:本地DNS 服务器:127.0.0.1 #5300,必须加#5300,5300与dns转发的local port的要⼀致。DNS
forwardings空着。
4.以上dhcp等服务更新配置后,最好都需要/etc/init.d/xxx restart下。
5…测试GFW是否⽣效?不要试图在openwrt下去ping,⼀定要⽤把⽹关和dns设置成openwrt的ip地址去测试。
在openwrt的Luci是可以 开启dns记录日志 的 ,但是并没有说明 log-queries=extra 这个配置项是记录到哪里了,后续如果有问题可以在/etc/dnsmasq.conf配置文件中加入以下参数,即可现实日志的记录:
1 2 3 |
log-dhcp log-queries log-facility=/tmp/dnsmasq.log |