Fedora 40中使用BIND自建递归服务器并启用DoT/DoH

2024-08-09 13:05:13 浏览数 (3)

本文简要介绍一下自建递归解析服务以打破阿里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

0 人点赞