本文简要介绍一下自建递归解析服务以打破阿里DNS等提供公共DNS服务的请求频率限制:
1、安装软件包:
代码语言:shell复制sudo dnf -y install bind bind-utils
2、修改递归服务器的配置,使其可以接受网络中发起的递归请求,
打开配置文件:
代码语言:shell复制vim /etc/named.conf
这里我们只需要简单的对默认的配置进行一下修改即可,按下i进入编辑模式:
代码语言:shell复制options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { any; };
allow-recursion { any; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
geoip-directory "/usr/share/GeoIP";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
include "/etc/crypto-policies/back-ends/bind.config";
};
按下ESC,输入 :wq
退出并保存,在这里我们主要修改的是以下的部分:
在这里,listen-on port 53 { any; }; 以及 listen-on-v6 port 53 { any; };表示监听所有IPV4和IPV6,因为在家庭网络中普遍存在的NAT,这里不需要进行限制。allow-query { any; };表示允许所有地址向该递归服务器发起请求。allow-recursion { any; };表示允许所有地址向该服务器发起递归请求。可以根据自己实际的情况来进行调整。
保持其他的配置部分不要变更。
3、使用命令检查配置文件是否存在错误:
代码语言:shell复制named-checkconf /etc/named.conf
4、启动解析服务并配置其开机自动启动:
代码语言:shell复制systemctl enable --now named
5、为服务器配置DNS Over TLS以及DNS Over HTTPS(略去了ACME申请证书的步骤):
在options { }块之前添加一个部分以配置证书,记得给这里的路径换成你证书所在的路径:
代码语言:shell复制tls local-tls {
key-file "/ssl/domain.pem";
cert-file "/ssl/domain.key";
};
为证书路径配置权限:
代码语言:shell复制chown -R named:named ssl
在options { } 块中添加以下内容以启用=
代码语言:shell复制 listen-on port 443 tls local-tls http default {any;};
listen-on port 853 tls local-tls {any;};
使用命令检查配置文件是否存在错误:
代码语言:shell复制named-checkconf /etc/named.conf
重新启动解析服务:
代码语言:shell复制systemctl restart named
打开防火墙:
代码语言:shell复制firewall-cmd --add-port=53/udp --permanent
firewall-cmd --add-port=53/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --add-port=853/tcp --permanent
firewall-cmd --reload