[DNSmasq]安装&配置详解

2022-5-16 18:45| 发布者: Hocassian| 查看: 55| 评论: 0|原作者: 神代綺凜

摘要:
C:\Users\Administrator\Downloads\神代綺凜\2019-10-15-14-34-56-19827351007300-文章归档 - 神代綺凜の萌化小基地-采集的数据-后羿采集器.html

标题

[DNSmasq] 安装&配置详解

标题链接

https://moe.best/linux-memo/dnsmasq.html

正文

DNSmasq 是 Linux 下的一个用于配置 DNS 和 DHCP 的工具,个人认为最主要的功能还是用来做 DNS 服务器。一句话,好用的不行。

Head Pic: 「【PFⅡ】ヘッツェル」/「たはるコウスケ」のイラスト [pixiv]

DNSmasq

安装

Ubuntu/Debian 等

无需多说,直接

1
apt-get install dnsmasq

CentOS

由于 CentOS 的 yum 安装的 DNSmasq 版本比较旧,因此我们可以先下载最新版编译好,用 yum 安装完之后再替换掉程序。

先从 http://www.thekelleys.org.uk/dnsmasq/ 找到你想要的 DNSmasq 版本的源码压缩包的下载地址,例如我选择的是我写这篇文章时的最新版dnsmasq-2.78.tar.gz

下载对应的源码压缩包并解压

1
2
wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.78.tar.gz tar xf dnsmasq-2.78.tar.gz

编译,源码 make 不带 etc 等

1
2
cd dnsmasq-2.78 make V=s

然后用 yum 安装 DNSmasq

1
yum install dnsmasq

yum 安装的是2.4.8版本,然后我们再用我们编译好的最新版本替换

1
yes | cp -f ./src/dnsmasq /usr/sbin/dnsmasq

这时可以查看 DNSmasq 的版本检验一下

1
dnsmasq -v

看一下版本号,应该就是我们编译好的版本了

配置

DNSmasq 的配置文件位于/etc/dnsmasq.conf,下面是 DNSmasq 中和 DNS 相关的配置项的说明。

此处的配置仅为说明,请勿照抄配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# 用指定的端口代替默认的DNS 53端口,如果设置为0,则完全禁止DNS功能,只使用dhcp服务 port=5353 # 以下两个参数告诉Dnsmasq过滤一些查询:1.哪些公共DNS没有回答 2.哪些root根域不可达。 # 从不转发格式错误的域名 domain-needed # 从不转发不在路由地址中的域名 bogus-priv # resolv-file配置Dnsmasq额外的向流的DNS服务器,通过下面的选项指定其他文件。 # 如果不开启就使用linux主机默认的/etc/resolv.conf里的nameserver。 resolv-file=/etc/dnsmasq.d/upstream_dns.conf # 默认情况下Dnsmasq会发送查询到它的任何上游DNS服务器上,如果取消注释, # 则Dnsmasq则会严格按照/etc/resolv.conf中的DNS Server顺序进行查询。 strict-order # 以下两个参数控制是否通过/etc/resolv.conf确定上游服务器,是否检测/etc/resolv.conf的变化。 # 如果你不想Dnsmasq读取/etc/resolv.conf文件或者其他文件,获得它的servers,则取消注释。 no-resolv # 如果你不允许Dnsmasq通过轮询/etc/resolv.conf或者其他文件来获取配置的改变,则取消注释。 no-poll # 增加一个name server,一般用于内网域名 server=/localnet/192.168.0.1 # 设置一个反向解析,所有192.168.3.0/24的地址都到10.1.2.3去解析 server=/3.168.192.in-addr.arpa/10.1.2.3 # 增加一个本地域名,会在/etc/hosts中进行查询 local=/localnet/ # 增加一个域名,强制解析到你指定的地址上 address=/double-click.net/127.0.0.1 # 同上,还支持ipv6 address=/www.thekelleys.org.uk/fe80::20d:60ff:fe36:f83 # 增加查询yahoo google和它们的子域名到vpn、search查找 ipset=/yahoo.com/google.com/vpn,search # 你还可以控制Dnsmasq和Server之间的查询从哪个网卡出去 server=10.1.2.3@eth1 # 指定源地址携带10.1.2.3地址和192.168.1.1的55端口进行通讯 server=10.1.2.3@192.168.1.1#55 # 改变Dnsmasq默认的uid和gid user= group= # 如果你想Dnsmasq监听某个端口为dhcp、dns提供服务 interface= # 你还可以指定哪个端口你不想监听 except-interface= # 设置想监听的地址,如果你本机要使用写上127.0.0.1。 listen-address= # 如果你想在某个端口只提供dns服务,则可以进行配置禁止dhcp服务 no-dhcp-interface= # On systems which support it, dnsmasq binds the wildcard address, # even when it is listening on only some interfaces. It then discards # requests that it shouldn't reply to. This has the advantage of # working even when interfaces come and go and change address. If you # want dnsmasq to really bind only the interfaces it is listening on, # uncomment this option. About the only time you may need this is when # running another nameserver on the same machine. bind-interfaces # 如果你不想使用/etc/hosts,则取消下面的注释 no-hosts # 如果你项读取其他类似/etc/hosts文件,则进行配置 addn-hosts=/etc/banner_add_hosts # 自动的给hosts中的name增加一个域名 expand-hosts # 给dhcp服务赋予一个域名 domain=thekelleys.org.uk # 给dhcp的一个子域赋予一个不同的域名 domain=wireless.thekelleys.org.uk,192.168.2.0/24 # 同上,不过子域是一个范围 domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200 # dhcp分发ip的范围,以及每个ip的租约时间 dhcp-range=192.168.0.50,192.168.0.150,12h # 同上,不过给出了掩码 dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h # 自动加载conf-dir目录下的配置文件 conf-dir=/etc/dnsmasq.d # 设置dns缓存大小,默认为150条 cache-size=150

修改完配置之后需要重启 DNSmasq 以使配置生效

1
service dnsmasq start

配置过程中需要注意的几点

把你的服务器作为一个 DNS 服务器

  1. 配置中的listen-address必须为你服务器的公网 IP
    1
    listen-address=你的公网IP
  2. 在防火墙中开放 53 端口
    1
    2
    iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
  3. 如果是 CentOS 的话需要保存并重启防火墙使以上改动生效
    1
    2
    service iptables save service iptables restart

如果想强制重定向本地的 DNS 请求给 DNSmasq

eth0为网卡名,请替换为你自己机器的网卡名

1
iptables -t nat -A PREROUTING -i eth0 -p upd --dport 53 -j REDIRECT --to-port 53

然后重启防火墙(如果是 CentOS)

如果想自定义上游 DNS

1
2
3
no-resolv no-poll server=x.x.x.x#端口

不写#端口默认是53

使用上的一些建议

如果需要自定义上游 DNS 服务器,以及设置特定域名的 Host 之类的,建议写到一个单独的.conf配置文件里,然后放到一个专门的文件夹,然后修改 DNSmasq 配置中的这条

1
conf-dir=配置文件夹

这样的话以后修改配置就不需要频繁修改主配置文件,而且也有利于配置的分块

dnsmasq-china-list

dnsmasq-china-list项目维护了一张国内常用但是通过国外DNS会解析错误的网站域名的列表,保证List中的国内域名全部走国内DNS服务器解析。

项目地址: https://github.com/felixonmars/dnsmasq-china-list

使用

取消配置文件中conf-dir=/etc/dnsmasq.d这一行的注释

如果此处你是用的是自己的配置文件夹,那么久在后续步骤中将配置文件放入你自己的配置文件夹即可

随便找一个地方将项目文件下载下来

1
git clone https://github.com/felixonmars/dnsmasq-china-list.git

然后将其中的accelerated-domains.china.confbogus-nxdomain.china.confgoogle.china.conf(可选)放到/etc/dnsmasq.d/目录中
最后重启 DNSmasq 即可

参考文章

CentOS下yum安装dnsmasq,并强制替换为最新版
利用Dnsmasq部署DNS服务

搬瓦工VPS优惠套餐,建站稳如狗,支持支付宝,循环出账94折优惠码BWH26FXH3HIQ
年付$28CN2线路,1核/512M内存/10G硬盘/500GB@1Gbps【点击购买】(经常售罄,请抓紧机会)
年付$47CN2线路,1核/1G内存/20G硬盘/1T@1Gbps【点击购买
最后修改:2018 年 04 月 22 日 04 : 37 AM
如果觉得我的文章对你有用,请随意赞赏

文章信息

中二病患者: 神代綺凜  发布时间:2017 年 11 月 06 日  6106 次浏览   1 条评论  5151 字数 分类: Linux 笔记


路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部