一个基于.NET7的开源DNS服务 DnsServer 的部署使用经验分享
前言
接上篇 docker-bind 的使用搭建了一个 dns 服务,本篇将介绍另外一款 DnsServer 的部署和使用,更专注,更轻量。
特点
- 基于 。NET 7 实现 ,支持 Windows、Linux、macOS 和 Raspberry Pi
- 开箱即用,使用简单,高性能
- 提供 Web 控制台,可视化管理,查看使用情况
- 提供了对网络的额外控制,允许阻止域名
- 支持 DNS-over-TLS, DNS-over-HTTPS, and DNS-over-QUIC
- DNS-over-HTTPS 实现支持 HTTP/1.1、HTTP/2 和 HTTP/3 传输协议
- HTTP API 由 Web 控制台使用,第三方应用或脚本可以使用 Api 接口配置来 DNS 服务器
使用情况
- 能够快速上手使用,部署好设置域名解析很流畅
- 用得深入一点就需要看官方的博客了
- 高级的功能没深入研究,暂时只使用了简单的域名解析功能
DnsServer 的安装使用
准备
- 版本:v11.4.1
- docker 镜像:technitium/dns-server:11.4.1
- 默认端口映射:53:53/tcp 53:53/udp 5380:5380/tcp(53 端口为 DNS 服务使用,5380为面板使用)
- 面板访问:http://ip:5380
使用 Docker Compose 安装
本篇文章基于 Docker V24 及 Docker Compose V2,安装可以参考之前的文章
配置说明
- 指定版本:
technitium/dns-server:11.4.1 - 指定时区:Asia/Shanghai 并启用日志使用UTC时区
- 指定账号 admin 密码:
devops666 - 指定端口映射:53:53/tcp 53:53/udp 5380 :5380 /tcp(53 端口为 DNS 服务使用,5380 为 Web面板端口)
- 挂载数据目录:
./data:/data - 指定网络:devopsnetwork (
docker network create devopsnetwork) - 指定了本地访问端口范围:
net.ipv4.ip_local_port_range=1024 65000
配置文件 compose.yml
- 准备好 compose.yml 拷贝到服务器
- 然后运行
docker compose up -d即可
version: '3.1'
services:
dns-server:
container_name: dns_server_11_4
hostname: dns-server
restart: always
image: technitium/dns-server:11.4.1
ports:
- "5380:5380/tcp" #DNS web console (HTTP)
# - "53443:53443/tcp" #DNS web console (HTTPS)
- "53:53/udp" #DNS service
- "53:53/tcp" #DNS service
environment:
- TZ=Asia/Shanghai
- DNS_SERVER_LOG_USING_LOCAL_TIME=true
- DNS_SERVER_DOMAIN=dns-server #The primary domain name used by this DNS Server to identify itself.
- DNS_SERVER_ADMIN_PASSWORD=devops666 #DNS web console admin user password.
sysctls:
- net.ipv4.ip_local_port_range=1024 65000
volumes:
- ./data:/etc/dns
networks:
- devopsnetwork
networks:
devopsnetwork:
external: true
部署成功
部署机器 IP:192.168.123.214

容器中资源占用情况

DnsServer 的使用
部署成功后访问:http://192.168.123.214:5380 ,使用 admin devops666 登录 控制台中可以查看到一些监控统计


局域网域名泛解析到指定IP
和上文一样,需求是需要配置 dns 以将 test.com 解析到 192.168.123.214 中
控制台->Zones->Add Zone 创建主区域 test.com

添加泛解析


本机设置 dns
192.168.123.214以及114.114.114.114(不然无法访问其他网站)
验证dns,正常ping test.com 的IP是存在的,现在就被解析到我们自己的dns了

可能存在dns缓存,使用ipconfig /flushdns刷新即可

查看系统日志
需要同时设置环境变量TZ=Asia/Shanghai及DNS_SERVER_LOG_USING_LOCAL_TIME=true才生效,设置后会将设置中的日志配置 Use Local Time默认勾选


禁用域名访问(Blocked)
可能需要使用 ipconfig /flushdns清理dns缓存


踩过的坑
- 日志显示,需要同时设置环境变量
TZ=Asia/Shanghai及DNS_SERVER_LOG_USING_LOCAL_TIME=true才生效 - dns缓存清理:
ipconfig /flushdns - 代理/VPN的设置不对可能导致 DNS 时好时坏,这个时候记得检查下代理,正常dns的生效都挺快的
相关文档
- 项目地址:Github
- 镜像仓库:DockerHub
- 官方博客:technitium.com
- 官方docker-compose:docker-compose.yml
后语
基于DNS服务,还可以做很多,比如自动 https,但是没有研究成功,后面可能会结合真实的自有域名来实现。
预告下篇呕心沥血之作,Nexus3 管理私有 nuget,docker,走过路过不要错过~
一个基于.NET7的开源DNS服务 DnsServer 的部署使用经验分享的更多相关文章
- 如何快速搭建一个基于ServiceStack框架的web服务
ServiceStack是一个高性能的.NET Web Service 平台,能够简化开发高性能的REST (支持JSON,XML,JSV,HTML,MsgPack,ProtoBuf,CSV等消息格式 ...
- 一个基于 Vue3 的开源项目,3个月时间 star 终于破千!
本文主要是对如何做开源项目的一些思考. 前文回顾: <Vue3 来了,Vue3 开源商城项目重构计划正式启动!> <一个基于 Vue 3 + Vant 3 的开源商城项目> 关 ...
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- 基于Redis的开源分布式服务Codis
Redis在豌豆荚的使用历程--单实例==>多实例,业务代码中做sharding==>单个Twemproxy==>多个Twemproxy==>Codis,豌豆荚自己开发的分布式 ...
- 一个基于DDD的开源项目,各种技术!
基于asp.net mvc + DDD 构架的开源.net cms系统. 运行截图: 特性: 跨平台 支持Windows.Linux.MacOX运行.linux运行案例:http://blog.ops ...
- 一个基于Orchard的开源CRM --coevery简介
Coevery是开源的.NET Web平台项目,力争打造一个开放而鲁棒的CRM系统,采用Orchard架构,并使用AngularJS改善页面体验.作为一个后发优势的CRM 产品,Coevery 具有一 ...
- 用Kotlin写一个基于Spring Boot的RESTful服务
Spring太复杂了,配置这个东西简直就是浪费生命.尤其在没有什么并发压力,随便搞一个RESTful服务 让整个业务跑起来先的情况下,更是么有必要纠结在一堆的XML配置上.显然这么想的人是很多的,于是 ...
- Glidar: 一个基于OpenGL的开源实时3D传感器仿真器
1 简介 这篇博文将介绍一个简单易用的3D传感器仿真器,可以用来模拟Lidars,立体视觉,基于时间飞行技术的ToF相机和微软的Kinect实时产生3D点云数据.Glidar仿真器并不是针对特定的某一 ...
- docker19.03制作一个基于centos8的带有nfs4服务的镜像
一,下载centos的image 1,下载centos最新image [root@localhost ~]# docker pull centos 2,查看是否成功下载到本地image [root@l ...
- C#实现DNS解析服务和智能DNS服务
C#实现DNS解析服务有一个开源项目ARSoft.Tools.Net, ARSoft.Tools.Net是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID ...
随机推荐
- 数据库是要拿来用的,不是用来PK先进性的
周五参加了WAIC后又和一家上海本地的数据库厂商交流了一下午.等我要买高铁票回南京的时候已经买不到票了.好不容易刷到一张到苏州北的高铁票,我就上了车.上车后突然想起还不如就回苏州老家住一晚算了.到家后 ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(10.A)- FlexSPI NAND启动时间(RT1170)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 FlexSPI NAND启动时间. 本篇是 i.MXRT1170 启动时间评测第四弹,前三篇分别给大家评测 ...
- Go/C++/Java中的数组对比
数组是大多数编程语言中的基本数据结构.然而,不同的编程语言对数组的实现和语义有所不同.以下是 Go.C++ 和 Java 中数组的主要区别: 1. 基本性质 Go: 数组是值类型.赋值或将数组传递给函 ...
- Docker 安装Redis 无法使用配置文件设置密码问题
背景 最近开发需要使用各种组件,如果都到开发机上安装,会占用电脑资源较多.所以使用docker容器来安装这些组件.例如 redis .mongodb.mysql.rabitmq.elasticsear ...
- P4327题解
思路 分组计算 以下图为例: ..#.. .#.. .*.. .#.. .#.#. #.#. *.*. #.#. #.X.# .X.* .X.* .X.# .#.#. #.#. *.*. #.#. . ...
- MediaBox助力企业一站式获取音视频能力
以一只音视频百宝箱,应对「千行千面」. 洪炳峰.楚佩斯|作者 大家好,今天我分享的主题是MediaBox--行业音视频数字化再加速. 根据权威数据表明,65%的行业数字化信息来自视频,基于此,音视频技 ...
- 分享一个 SpringBoot + Redis 实现「查找附近的人」的小技巧
前言 SpringDataRedis提供了十分简单的地理位置定位的功能,今天我就用一小段代码告诉大家如何实现. 正文 1.引入依赖 <dependency> <groupId> ...
- 二叉搜索树(Binary Search Tree,BST)
二叉搜索树(Binary Search Tree,BST) 二叉搜索树(Binary Search Tree),也称二叉查找树或二叉排序树,是一种特殊的二叉树,它满足以下性质 对于二叉搜索树的每个节点 ...
- mysqlbinlog输出sql
./mysqlbinlog -v --base64-output=DECODE-ROWS ~/Downloads/tymysql2|grep -A4 'ALTER' >~/Downloads/a ...
- Vue3+vite路由配置优化(自动化导入)
今天在维护优化公司中台项目时,发现路由的文件配置非常多非常乱,只要只中大型项目,都会进入很多的路由页面,规范一点的公司还会吧路由进行模块化导入,但是依然存在很多文件夹的和手动导入的问题. 于是我想到了 ...