当前位置: 首页 > news >正文

龙蜥OS搭建Technitium DNS全指南

Technitium DNS 服务器

  • 一、环境介绍
  • 二、安装
    • 1、安装.NET Core runtime
    • 2、下载并解压软件包
    • 3、设置systemd
    • 4、访问
  • 三、配置防火墙规则
  • 四、配置使用
    • 1、基础知识
    • 2、Technitium 界面简单介绍
    • 3、zone信息介绍
    • 4、设置主要zone(权威服务器)
    • 5、设置转发zone
    • 6、Technitium 系统设置
      • (1)secondary zone 同步时间
      • (2)TSIG秘钥
      • (3)缓存设置
      • (4)黑名单 广告过滤设置
      • (5)日志设置
      • (6)说明
  • 五、配置次要服务器
    • 1、安装dns服务器
    • 2、配置Secondary Zone
      • (1)Primary Zone 配置
      • (2)配置secondary zone
      • (3)创建后
  • 六、一些可能需要调优参数
    • 1、系统参数
    • 2、文件限制
    • 3、程序参数

一、环境介绍

操作系统版本:龙蜥os 8.9
配置:4c 8G 100G硬盘
软件地址:https://technitium.com/dns/
端口占用:
5380/tcp(用于 Web 控制台访问)
53443/tcp(用于 Web 控制台 HTTPS 访问)
53/udp(默认 DNS 服务)
53/tcp(默认 DNS 服务)
853/udp(DNS-over-QUIC 服务)
853/tcp(DNS-over-TLS 服务)
443/udp(基于 HTTP/3 的 DNS-over-HTTPS 服务)
443/tcp(基于 HTTP/1.1 和 HTTP/2 的 DNS-over-HTTPS 服务)
80/tcp(用于反向代理或证书续订 HTTP 质询的 DNS-over-HTTP 服务)
67/udp(如果您打算使用内置 DHCP 服务器)

二、安装

1、安装.NET Core runtime

wget https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/8.0.16/aspnetcore-runtime-8.0.16-linux-x64.tar.gz
mkdir -p /opt/dotnet
tar -xvf aspnetcore-runtime-8.0.16-linux-x64.tar.gz -C /opt/dotnet/
ln -s /opt/dotnet/dotnet /usr/bin

在这里插入图片描述

2、下载并解压软件包

wget https://download.technitium.com/dns/DnsServerPortable.tar.gz
mkdir -p /opt/technitium/dns
tar -zxf DnsServerPortable.tar.gz -C /opt/technitium/dns

3、设置systemd

cp /opt/technitium/dns/systemd.service /etc/systemd/system/dns.service
systemctl enable dns.service
systemctl start dns.service

日志查看

journalctl -u dns -f

4、访问

http://<server-ip-address>:5380/

更改admin密码
在这里插入图片描述

三、配置防火墙规则

firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.90.101.1 port port=5380 protocol=tcp accept'
firewall-cmd --permanent --zone=public --add-port=53/udp
firewall-cmd --permanent --zone=public --add-port=53/tcp
firewall-cmd --permanent --zone=public --add-port=853/udp
firewall-cmd --permanent --zone=public --add-port=853/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload

四、配置使用

1、基础知识

在这里插入图片描述

🌐 DNS 查询方式分两种:

  1. ✅ 递归查询(客户端 → 本地DNS)
    客户端只发一次请求,本地DNS负责“包办到底”
    客户端不关心过程,只管等结果

  2. ✅ 迭代查询(本地DNS → 其他DNS服务器)
    本地DNS自己向根、顶级、权威服务器一层一层查询
    每一层都只告诉“下一跳”(比如:“你去问 .com”),而不是给最终答案

🔁 图中体现:

角色查询类型举例
用户 → 本地DNS递归查询“请告诉我 www.baidu.com的IP”
本地DNS → 根DNS迭代查询“我不知道,但.com在这里,你去问它”
本地DNS → 顶级DNS迭代查询“baidu.com 在这个权威服务器上”
本地DNS → 权威DNS迭代查询最终才拿到确切记录

好我们使用命令,看下是如何查询到具体地址的:

dig +trace www.baidu.com

在这里插入图片描述
🔍 查询过程简述:

客户端通过 dig +trace 向配置的 DNS 服务器发起 www.baidu.com 的查询。查询从根域名服务器开始:
1、根域名服务器(Root):返回 .com 顶级域名(TLD)的 13 个 NS(如 a.gtld-servers.net.)。
2、TLD 服务器(.com):返回 baidu.com 的权威 DNS 服务器(如 ns1.baidu.com, ns2.baidu.com 等)。
3、权威 DNS 服务器(baidu.com):返回 www.baidu.com 实际的记录——是一个 CNAME 记录 指向 www.a.shifen.com。
4、最终解析由 ns7.baidu.com 解析出 CNAME 指向的真实 IP 地址。

2、Technitium 界面简单介绍

在这里插入图片描述Dashboard:
总览面板,展示 DNS 查询的实时统计信息
Zones:
配置 DNS 区域(Zone)信息,支持设置自定义的 DNS 记录(如 A、AAAA、CNAME、MX 等)
Cache:
查看和管理 DNS 缓存,显示已经缓存的 DNS 查询记录,可手动清除缓存
Allowed:
白名单设置
Blocked:
黑名单设置,阻止特定域名的 DNS 请求
Apps:
插件/应用程序功能,用于安装额外功能或集成支持,官方自带应用仓库
DNS Client:
用作 DNS 客户端查看请求
Settings:
服务器设置中心,包括网络设置、监听端口、转发器(Forwarder)、日志设置等
DHCP:
配置 DHCP 服务器,给局域网内的设备自动分配 IP 地址,可设定 IP 租期、保留地址、子网,NTP服务器等
Administration:
管理员、用户、权限相关设置
Logs:
查看日志记录、服务器日志,查询日志
About:
软件信息页面,显示当前版本、开发者信息、许可证说明等

3、zone信息介绍

在这里插入图片描述
🔍 各 Zone 类型详细介绍:

  1. Primary Zone (default)
    ✅ 用途:你自己维护的主 DNS 区域。
    ✏️ 你可以手动添加 A、AAAA、MX、CNAME 等记录。
    🏠 常见场景:本地域名解析,如 nas.home → 192.168.1.10。

  2. Secondary Zone
    📥 用途:从远程 DNS 服务器获取并同步某个区域(只读)。
    🔁 作用:容灾、高可用备份,一般与 Primary Zone 搭配使用。
    💡 注意:需要设置主 DNS 服务器的 IP 和允许 zone transfer。

  3. Stub Zone
    🔎 用途:只保存目标 Zone 的 NS 记录和 SOA 记录。
    🧭 用途定位:快速定位目标 Zone 的权威服务器,而不是递归查询。
    ⚙️ 适合场景:大型组织或跨网络架构,提升解析效率。

  4. Conditional Forwarder Zone
    ➡️ 用途:将特定域名的查询转发到指定的 DNS 服务器。
    🎯 按域名条件转发,如:
    查询 corp.example.com → 指定公司内部 DNS,其他继续走公网DNS
    📡 适合场景:分布式 DNS 架构、混合云网络。

  5. Secondary Conditional Forwarder Zone
    🧩 用途:从其他服务器同步得到的“条件转发”配置(只读)。
    🪪 类似于 Secondary Zone,但对象是 Conditional Forwarder。
    📦 适合大规模网络配置共享或管理自动化。

  6. Catalog Zone
    📚 用途:RFC 9432 定义的“DNS Catalog Zones”。
    👥 场景:集中管理多个 DNS 区域的部署。
    🔧 作用:让主服务器将多个 Zone 的列表下发给多个从服务器,自动化 Secondary Zone 分发管理。
    📡 高级企业/运营商级功能,提高大规模 DNS 集群部署效率。

  7. Secondary Catalog Zone
    🧾 用途:从主服务器获取 Catalog Zone 信息。
    🧩 自动订阅和创建 Secondary Zones。
    📍 一旦主服务器更新 Zone 列表,所有 Secondary 会自动同步。

  8. Secondary ROOT Zone (RFC 8806)
    🌍 用途:本地镜像根区域(. zone)。
    📦 基于 RFC 8806,用于本地存储全互联网根域名信息。
    ⚡ 好处:
    减少对外部 DNS 根服务器的依赖。
    更快、更私密的 DNS 解析(常用于企业/国家级 DNS 架构)。
    ⚠️ 需要频繁同步根区域数据,不适合一般家庭使用。

4、设置主要zone(权威服务器)

在这里插入图片描述
添加一个A记录
在这里插入图片描述
在这里插入图片描述
更改本地网络配置 设置dns服务器地址测试
在这里插入图片描述
这里有个小问题:
可以看到上图显示 服务器显示的unknow,这是dns服务器缺少PTR解析,可以建立一个
在这里插入图片描述
添加一个DNS服务器的PTR解析:
在这里插入图片描述
再次在本地解析,看服务器已经显示正常:
在这里插入图片描述

5、设置转发zone

在这里插入图片描述

添加一个A记录
在这里插入图片描述
本地解析测试
在这里插入图片描述
可以看到,在本地解析的123.baidu.com直接出了权威应答,而没有在本地解析的www.baidu.com而是被转发的外网解析。

6、Technitium 系统设置

(1)secondary zone 同步时间

settings–》general
在这里插入图片描述
Technitium会使用系统配置,而不是zone文件中的配置:
在这里插入图片描述

(2)TSIG秘钥

settings–》tsig
这个秘钥再设置secondary zone的时候可以用
在这里插入图片描述

(3)缓存设置

settings–》cache
这里这个问题,我开启这个会变慢而不是快,所以关闭了
在这里插入图片描述

(4)黑名单 广告过滤设置

settings–》blocking

在这里插入图片描述
在这里插入图片描述

(5)日志设置

settings–》logging
在这里插入图片描述

(6)说明

我这里使用的内网dns的人比较多,我关闭了缓存、黑名单、广告、日志

五、配置次要服务器

1、安装dns服务器

按照第二步骤方法,再安装一台DNS服务器

2、配置Secondary Zone

注意: 一般配置这个Secondary Zone需要配合Primary Zone使用

(1)Primary Zone 配置

在这里插入图片描述
使用acl 控制访问,这里需要的使用tcp 53端口
在这里插入图片描述
使用tsig 这里 需要再两个dns中创建一样的tsig
在这里插入图片描述

(2)配置secondary zone

在第二台dns服务器上创建 secondary zone
在这里插入图片描述
在这里插入图片描述

(3)创建后

完成创建后会同步主dns zone的配置,是只读的,根据系统设置每5分钟回同步一次配置。客户端可以配置备选dns,当主dns server 无法访问时候就会使用备选dns
在这里插入图片描述

六、一些可能需要调优参数

1、系统参数

vi /etc/sysctl.conf
# 增大 socket 缓冲
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000# UDP 优化
net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384
net.ipv4.udp_mem = 262144 327680 393216# 文件句柄
fs.file-max = 2097152
sysctl -p

2、文件限制

vi /etc/security/limits.conf
* soft nofile 1048576
* hard nofile 1048576

3、程序参数

vi /etc/systemd/system/dns.service
[Unit]
Description=Technitium DNS Server
After=network.target[Service]
WorkingDirectory=/opt/technitium/dns
ExecStart=/usr/bin/dotnet /opt/technitium/dns/DnsServerApp.dll /etc/dns
Restart=always
RestartSec=5
KillSignal=SIGINT
SyslogIdentifier=technitium-dns# 性能优化(推荐生产环境使用)
Environment=DOTNET_gcServer=1
Environment=DOTNET_ThreadPool_MinThreads=128
Environment=DOTNET_gcHeapHardLimitPercent=75
Environment=DOTNET_gcConcurrent=1# 增加文件句柄限制
LimitNOFILE=1048576[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl stop dns
systemctl start dns

相关文章:

  • git的使用——初步认识git和基础操作
  • 计算机视觉课程总结
  • python实现将COQE数据转换成字符串的格式
  • ollama在win10中使用
  • 前端面试专栏-主流框架:10. React状态管理方案(Redux、Mobx、Zustand)
  • 错误监控----比如实现sentry一些思路
  • web和uniapp接入腾讯云直播
  • 腾讯云TCCA认证考试报名 - TDSQL数据库交付运维工程师(MySQL版)
  • Matlab学习笔记
  • 解决idea无法正常加载lombok包
  • CTF解题:[NSSCTF 2022 Spring Recruit]弱类型比较绕过
  • TikTok 矩阵如何快速涨粉
  • MySQL存储引擎深度解析:InnoDB、MyISAM、MEMORY 与 ARCHIVE 的全面对比与选型建议
  • YOLOv11改进系列---Conv篇---2024最新深度可分卷积与多尺度卷积结合的模块MSCB助力yolov11有效涨点
  • 微信中 qrcode 生成二维码长按无效果的解决方案
  • python函数(II)
  • Jira 需求处理全流程解析:从入门到实践
  • google ADK Agent间传参数
  • 利用cpolar实现Talebook数字图书馆的实时访问
  • 最新期刊影响因子,基本包含全部期刊
  • 宿州哪有做网站的/关键词抓取工具都有哪些
  • 龙文国土局漳滨村新农村建设网站/今日国际新闻热点
  • 产品设计开发流程图/seo排名快速刷
  • 关于推动门户网站建设d/怎么建立网站的步骤
  • 现在网站建设还用测浏览器吗/营销广告语
  • 杭州制作网站的公司/成都私人网站制作