• 一个基于.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 的使用

    局域网域名泛解析到指定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,走过路过不要错过~

  • 相关阅读:
    SWAT-MODFLOW地表水与地下水耦合
    高危漏洞分析|CVE-2022-42920 Apache Commons BCEL 越界写漏洞
    无线物理层安全大作业
    学习Python的运行方式
    使用python利用merge+sort函数对excel进行连接并排序
    Java开源工具库使用之虚假数据生成库datafaker
    已经安装tensorflow,仍报错No module named ‘tensorflow‘
    H5 uniapp 在线预览pdf文件流 pdf.js
    简单聊聊如何更优雅的判断空值:Optional、三元运算符及其他方法
    Java学习笔记42——方法引用
  • 原文地址:https://www.cnblogs.com/morang/p/devops-dns-dnserver-install-use.html