前言

接上篇 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 的使用

局域网域名泛解析到指定IP

和上文一样,需求是需要配置 dns 以将 test.com 解析到 192.168.123.214 中

  1. 控制台->Zones->Add Zone 创建主区域 test.com

  2. 添加泛解析



  3. 本机设置 dns 192.168.123.214 以及 114.114.114.114(不然无法访问其他网站)

  4. 验证dns,正常ping test.com 的IP是存在的,现在就被解析到我们自己的dns了



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

查看系统日志

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

禁用域名访问(Blocked)

可能需要使用 ipconfig /flushdns清理dns缓存

踩过的坑

  • 日志显示,需要同时设置环境变量TZ=Asia/ShanghaiDNS_SERVER_LOG_USING_LOCAL_TIME=true才生效
  • dns缓存清理:ipconfig /flushdns
  • 代理/VPN的设置不对可能导致 DNS 时好时坏,这个时候记得检查下代理,正常dns的生效都挺快的

相关文档

后语

基于DNS服务,还可以做很多,比如自动 https,但是没有研究成功,后面可能会结合真实的自有域名来实现。

预告下篇呕心沥血之作,Nexus3 管理私有 nuget,docker,走过路过不要错过~

一个基于.NET7的开源DNS服务 DnsServer 的部署使用经验分享的更多相关文章

  1. 如何快速搭建一个基于ServiceStack框架的web服务

    ServiceStack是一个高性能的.NET Web Service 平台,能够简化开发高性能的REST (支持JSON,XML,JSV,HTML,MsgPack,ProtoBuf,CSV等消息格式 ...

  2. 一个基于 Vue3 的开源项目,3个月时间 star 终于破千!

    本文主要是对如何做开源项目的一些思考. 前文回顾: <Vue3 来了,Vue3 开源商城项目重构计划正式启动!> <一个基于 Vue 3 + Vant 3 的开源商城项目> 关 ...

  3. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  4. 基于Redis的开源分布式服务Codis

    Redis在豌豆荚的使用历程--单实例==>多实例,业务代码中做sharding==>单个Twemproxy==>多个Twemproxy==>Codis,豌豆荚自己开发的分布式 ...

  5. 一个基于DDD的开源项目,各种技术!

    基于asp.net mvc + DDD 构架的开源.net cms系统. 运行截图: 特性: 跨平台 支持Windows.Linux.MacOX运行.linux运行案例:http://blog.ops ...

  6. 一个基于Orchard的开源CRM --coevery简介

    Coevery是开源的.NET Web平台项目,力争打造一个开放而鲁棒的CRM系统,采用Orchard架构,并使用AngularJS改善页面体验.作为一个后发优势的CRM 产品,Coevery 具有一 ...

  7. 用Kotlin写一个基于Spring Boot的RESTful服务

    Spring太复杂了,配置这个东西简直就是浪费生命.尤其在没有什么并发压力,随便搞一个RESTful服务 让整个业务跑起来先的情况下,更是么有必要纠结在一堆的XML配置上.显然这么想的人是很多的,于是 ...

  8. Glidar: 一个基于OpenGL的开源实时3D传感器仿真器

    1 简介 这篇博文将介绍一个简单易用的3D传感器仿真器,可以用来模拟Lidars,立体视觉,基于时间飞行技术的ToF相机和微软的Kinect实时产生3D点云数据.Glidar仿真器并不是针对特定的某一 ...

  9. docker19.03制作一个基于centos8的带有nfs4服务的镜像

    一,下载centos的image 1,下载centos最新image [root@localhost ~]# docker pull centos 2,查看是否成功下载到本地image [root@l ...

  10. C#实现DNS解析服务和智能DNS服务

    C#实现DNS解析服务有一个开源项目ARSoft.Tools.Net, ARSoft.Tools.Net是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID ...

随机推荐

  1. boinc使用笔记

    安装 yum install -y epel-release yum install -y boinc-client boinc-manager 启动 在图形界面开启终端 boinc boincmgr

  2. Django跨域问题解决方案: django-cors-headers安装与配置

    django-cors-headers安装与配置 官方文档:https://pypi.org/project/django-cors-headers/ 安装 pip install django-co ...

  3. Oracle11gR2单实例的安装与部署

    1   安装目标与规划 交易系统1台HP DL580 G9服务器将安装Oracle11gR2 . 1.1  安装介质版本 主机名 his1 IP地址 192.168.40.102(非生产环境ip) O ...

  4. 牛客小白月赛65 E题 题解

    原题链接 题意描述 构造一个\(1\)到\(n\)的排列,使得其中正好有\(k\)个二元组\((i, j)\)满足,\(1\le i\lt j\le n\) && \(a_i - a_ ...

  5. Linq开发技巧与业务逻辑校验

    Linq 是一种基于 .NET Framework 的编程语言,它的出现极大地提高了开发效率.Linq 提供了一种统一的查询语法,使得开发人员可以使用一种语言来查询不同类型的数据源,包括对象.集合.数 ...

  6. WPF 入门笔记 - 07 - MVVM示例

    滴咚,大家好久不见.好就没写东西了,鸽着鸽着就无了... 回到正题,上篇文章说完命令提了一嘴MVVM模式直接就上MVVMLight这些程序的框架了,虽然也没说多少,但还是有点不好过渡,这篇对MVVM做 ...

  7. ctfshow--web入门--文件上传

    ctfshow--web入门--文件上传 web151(前端校验) 题目中提示前端检验不可靠,应该对前端检验进行绕过 检查前端代码进行修改,使php文件可以通过前端校验,成功上传后进行命令执行,找到f ...

  8. 国标GB28181视频平台EasyGBS视频监控平台无法播放,抓包返回ICMP排查过程

    国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台,可实现的视频功能包括:实时监控直播.录像.检索与回看.语音对讲.云存储.告警.平台级联等功能.国 ...

  9. 《代码整洁之道 Clean Code》学习笔记 Part 1

    前段时间在看<架构整洁之道>,里面提到了:构建一个好的软件系统,应该从写整洁代码做起.毕竟,如果建筑使用的砖头质量不佳,再好的架构也无法造就高质量的建筑.趁热打铁,翻出<代码整洁之道 ...

  10. centos7.X安装mysql5.7 – 东凭渭水流

    1.下载mysql5.7 可以使用windows下载好后上传至Linux.网络条件好的推荐使用 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/m ...