接上篇 docker-bind 的使用搭建了一個 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,走過路過不要錯過~
作者:易墨
Github:yimogit
純靜態工具站點:metools
說明:歡迎拍磚,不足之處還望園友們指出;
迷茫大概是因為想的太多做的太少。