DNSMasq基本服务的搭建与设置
dnsmasq是Linux上常用的一款设置较简易的dns服务端之一,这里介绍它的最基本应用,dns缓存与解析代理服务。
首先通过源安装dnsmasq服务
yum install dnsmasq -y
先将本机的默认解析文件拷贝一份
cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
然后编辑它的配置文件
vi /etc/dnsmasq.conf
我们主要更改如下参数(请根据注释配置你自己的内容)
resolv-file=/etc/resolv.dnsmasq.conf 《--这是刚才新建的那个解析文件 strict-order 《--取消注释 listen-address=127.0.0.1,192.168.1.100 《--dns服务监听的地址,用逗号分隔,必须有本机地址;如果 你的局域网是192.168.1.x段,你安装dnsmasq的服务器是1.100, 那在这里你也必须加上服务器本机地址,否则局域网内的机器无法 使用dnsmasq提供的服务 addn-hosts=/etc/dnsmasq.hosts 《--在配置文件任意空行处添加此条 cache-size= 《--缓存大小请依照自身服务量设置,不明请先用默认值;如果不 开启缓存,请去掉no-negcache前的注释符号
为了使dnsmasq成为网段内dns的首要代理服务,还需要在服务器上做如下调整
echo 'nameserver 127.0.0.1' > /etc/resolv.conf 《--更改服务器默认DNS解析为本机 echo 'nameserver 8.8.4.4' > /etc/resolv.dnsmasq.conf 《--这个值用来设定,当本机DNS缓存内没有相应的 解析条目时,向公网上的dns请求解析 cp /etc/hosts /etc/dnsmasq.hosts 《--可选项,自定义host文件的路径,这个文件里 定义的条目格式和win系统下相同 chkconfig dnsmasq --level 3 on service dnsmasq start
执行命令
netstat -tunlp|grep 53
查看服务是否正常监听53端口了,如果正常监听了,可以测试一下
dig www.iooii.com
会得到解析结果,第一次延迟比较高,第二次就是0延迟了,因为有了缓存
如果服务器还开启了系统防火墙的话,需要编辑iptables文件加上相应的53端口的tcp条目,如果有硬件防火墙存在,并且有对外网提供服务的需求,需要映射53端口到外网。以下是系统防火墙配置范例:
iptables -t nat -A PREROUTING -i eth0 -p upd --dport 53 -j REDIRECT --to-port 53 上面这句是转发eth0接口的域名解析,然后再把53端口开启,不然内网的域名解析都会发不出去 iptables -A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT iptables -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 53 -j ACCEPT service iptables save service iptables restart
DNSmasq服务还有一些另类用法,比如作为dns代理跨过电信等ISP的DNS劫持或广告推送,也可以用来做翻跃高墙之途,甚至还可以用来给PS4玩家做PSN服务地址的泛解析和精准解析,增加下载速度等。一般这类解析条目的格式为
address=/.google.com/203.208.37.0 address=/www.youtube.com/203.208.37.0
网上搜一下会得到大量网友收集好的相应地址,按照自己的需求使用即可。由于地址一般条目数量巨大,故推荐专门新建一个文件用于整理存放。这里推荐去掉dnsmasq配置文件末尾
conf-dir=/etc/dnsmasq.d
前的注释,然后去/etc/dnsmasq.d/目录下面新建一个文件,比如psn.conf,然后把和psn有关的条目都复制进去,reload一下dnsmasq服务即可享受加速的快感了~