如何使用 DNSMAQ 搭建 DNS 服务器?
作者 |阿文责编 |郭芮DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。自己搭建公共DNS更加灵活,如果是在本地搭建,还可以大幅提高解析速度。相比较BIND那复杂的配置来说,dnsmasq轻量很多。概念首先,我们需要了解几个概念,即根服务器和 DNS 的解析步骤方便大家...
; <<>> DiG 9.10.6 <<>> @114.114.114.114
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26189
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 658 IN NS a.root-servers.net.
. 658 IN NS b.root-servers.net.
. 658 IN NS c.root-servers.net.
. 658 IN NS d.root-servers.net.
. 658 IN NS e.root-servers.net.
. 658 IN NS f.root-servers.net.
. 658 IN NS g.root-servers.net.
. 658 IN NS h.root-servers.net.
. 658 IN NS i.root-servers.net.
. 658 IN NS j.root-servers.net.
. 658 IN NS k.root-servers.net.
. 658 IN NS l.root-servers.net.
. 658 IN NS m.root-servers.net.
;; Query time: 39 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Wed Jun 26 17:30:51 CST 2019
;; MSG SIZE rcvd: 239
-
从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录;
-
从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录;
-
从"次级域名服务器"查出"主机名"的IP地址。
-
A 地址记录(Address),返回域名指向的IP地址。
-
NS 域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
-
MX 邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
-
CNAME 规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。
-
PTR 逆向查询记录(Pointer Record),只用于从IP地址查询域名
-
CAA CAA(Certification Authority Authorization,证书颁发机构授权)是一项防止HTTPS证书错误颁发的安全措施,遵从IETF RFC6844。从2017年9月8日起,要求CA(Certification Authority,证书颁发)机构执行CAA强制性检查。
配置
/etc/dnsmasq.conf
,我们要让它能用起来需要做如下配置:
#指定上游dns服务器
resolv-file=/etc/resolv.dnsmasq.conf
#表示严格按照 resolv-file 文件中的顺序从上到下进行 DNS 解析, 直到第一个成功解析成功为止
strict-order
# 开启后会寻找本地的hosts文件在去寻找缓存的域名,最后到上游dns查找
#no-resolv
listen-address=0.0.0.0 #0.0.0.0 设置为公网IP
conf-dir=/etc/dnsmasq.d # 我们的解析记录都写到这个目录下
2.创建 /etc/resolv.dnsmasq.conf
,然后添加:
# cat /etc/resolv.dnsmasq.conf
nameserver 119.29.29.29
nameserver 114.114.114.114
nameserver 8.8.8.8
nameserver 168.95.1.1
3.然后创建 /etc/dnsmasq.d/cloud.conf
,添加:
address=/baidu.com/127.0.0.1 #将百度的域名解析到127.0.0.1
address=/ad.youku.com/127.0.0.1 # 禁止优酷广告
address=/ad.iqiyi.com/127.0.0.1 # 禁止iqiyi广告
格式是:
address=/domain.com/dns
比如上面的百度,我就把它都解析到127.0.0.1。
实现DNS分流
server=/cn/114.114.114.114 # cn的域名都走114的dns
server=/google.com/115.159.220.214 # 将谷歌的解析都走115.159.220.214
上面的是将所有cn结尾的域名都走114解析,下面是将google.com 走115.159.220.214解析。
开启防火墙53端口后,本地测试下 53 端口是否是通的:
➜ www nc -vuz 121.42.18.6 53
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif (null)
src 192.168.2.32 port 49939
dst 121.42.18.6 port 53
rank info not available
Connection to 121.42.18.6 port 53 [udp/domain] succeeded!
启动dnsmaq:
service dnsmasq start
设置为开机自启动。
# systemctl enable dnsmasq
Created symlink from /etc/systemd/system/multi-user.target.wants/dnsmasq.service to /usr/lib/systemd/system/dnsmasq.service.
➜ www dig m.baidu.com @121.42.18.6
; <<>> DiG 9.8.3-P1 <<>> m.baidu.com @121.42.18.6
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41523
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;m.baidu.com. IN A
;; ANSWER SECTION:
m.baidu.com. 0 IN A 127.0.0.1
;; Query time: 30 msec
;; SERVER: 121.42.18.6#53(121.42.18.6)
;; WHEN: Mon Aug 28 10:32:27 2017
;; MSG SIZE rcvd: 45
可以看到,百度的子域名已经被解析到127.0.0.1了,此外还可以配合dnscrypt-proxy 对查询进行加密,这里就不展开了。
热 文 推 荐
点击阅读原文参与开发者大调查,好礼送不停!
更多推荐
所有评论(0)