Dnsmasq自建DNS服务器


## 准备

首先我们需要准备一台服务器 国内国外均可 本教程使用 CentOS 7 的 Azure 香港服务器进行演示

一双手

你智慧的大脑

服务商放通防火墙

你首先需要在你服务商的后台开放服务器防火墙

Azure

在后台 Networking 找到 Add inbound port rule

在 Source port ranges 和 Destination port ranges 两栏输入 *

Source , Destination , Protocol 都选择 Any

然后点Add添加

腾讯云轻量应用

因为买不起CVM只能用lh举例了

点选你的服务器 在防火墙一栏选择添加规则 应用类型自定义 端口需要把TCP和UDP的53端口全放通

服务器放通防火墙

iptables

1
2
3
4
5
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables-save

firewalld

1
2
3
firewall-cmd --zone=public --add-port=53/tcp --permanent
firewall-cmd --zone=public --add-port=53/udp --permanent
firewall-cmd --reload

安装Dnsmasq

安装命令视发行版而定

例如 CentOS yum install dnsmasq -y

Ubuntuapt install dnsmasq -y

配置Dnsmasq

修改配置文件

我们需要修改/etc/dnsmasq.conf文件进行自定义的配置

vim /etc/dnsmasq.conf

默认配置文件应该是这样

因为一点点改太麻烦 如果是进阶用户可以自行配置 初级用户输入ggdG清空文件内容

接下来按i进入编辑模式

粘贴以下内容

1
2
3
4
5
6
resolv-file=/etc/resolv.dnsmasq.conf
no-hosts
cache-size=32768
listen-address=127.0.0.1,<服务器内网地址>,<服务器公网地址>
log-queries
conf-dir=/etc/dnsmasq.d

resolv-file=/etc/resolv.dnsmasq.conf : 从 /etc/resolv.dnsmasq.conf获取上游DNS

no-hosts : 不加载本地的/etc/hosts文件

cache-size=32768 : 最大缓存条数 可自行修改

listen-address=127.0.0.1,<服务器内网地址>,<服务器公网地址> : 监听地址 需要自行修改

log-queries : 开启日志

conf-dir=/etc/dnsmasq.d : 读取该目录下所有.conf文件进行解析

修改上游DNS配置

配置在上一步你写的resolv-file

比如我就应该 vim /etc/resolv.dnsmasq.conf

文件格式为 nameserver <Server Address>

每行一条

修改解析配置

cd进上一步的conf-dir

比如我就是 cd /etc/dnsmasq.d 如果提示不存在则需要自行mkdir

新建一个文件 要以 .conf 结尾

比如 vim zyglq.conf

文件的格式为 address=/域名/IP

同样每行一条

启动服务

service dnsmasq start

配置自启动

chkconfig dnsmasq on

测试

如果一切顺利 这时DNS服务已经可用 在你本地电脑打开终端 输入

nslookup <自己解析的域名> <服务器IP>

如果返回解析IP和你配置文件相同代表配置无误