大家好,我是羊刀仙。

本期為大家?guī)淼氖且豢頓NS小工具:doggo,可通過Docker進行部署。

doggo是一款用 Golang 編寫的現代命令行 DNS 客戶端(類似dig)。它以簡潔明了的方式輸出信息,并支持 DoH、DoT、DoQ 和 DNSCrypt 等協(xié)議。

網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

doggo 在日常中主要用于以下幾個方面:

快速 DNS 查詢:查看域名的 IP 地址;
DNS 服務器驗證:檢查不同 DNS 服務器的解析結果;
性能測試:比較不同 DNS 服務器的響應速度;
解析問題排查:調試 DNS 解析路徑,解決訪問問題;
隱私保護:通過 DoH 進行加密查詢。

項目特點


Doggo 以 Docker 鏡像的形式提供,托管在 GitHub Container Registry (ghcr.io) 上。它支持 x86 和 ARM 架構。

具有顏色編碼和表格格式的人性化輸出;
JSON 輸出支持,方便編寫腳本和解析;
多種傳輸協(xié)議:DoH、DoT、DoQ、TCP、UDP、DNSCrypt;
支持ndots和search配置;
支持多種解析器并可定制查詢策略;
IPv4 和 IPv6 支持;
提供 Web 界面;
殼完成zsh和fish;
反向 DNS 查找;
靈活的查詢選項,包括各種 DNS 標志;
故障排除調試模式;
響應時間測量;
跨平臺支持;

部署


分為NAS和服務器兩部分,都需要通過SSH進入控制臺部署。

官方Web界面:https://doggo.mrkaran.dev/

官方使用文檔:https://doggo.mrkaran.dev/docs/

??首先是VPS服務器

輸入以下命令即可快速安裝:

curl -sS https://raw.githubusercontent.com/mr-karan/doggo/main/install.sh | sh網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

安裝完畢后,輸入doggo并回車,可以看到很多操作指令說明。

網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

這里先大概解釋下,具體例子放在后面演示部分。

傳輸選項:

使用 URL 類型的協(xié)議指定查詢方式:
udp:默認使用的協(xié)議
tcp:使用 TCP 進行查詢
https:使用 HTTPS 進行查詢(DNS over HTTPS, DoH)
tls:使用 TLS 進行查詢(DNS over TLS, DoT)

查詢選項:

-q, --query=HOSTNAME:指定要查詢的主機名(如 mrkaran.dev)
-t, --type=TYPE:指定 DNS 記錄類型(如 A, AAAA, MX 等)
-@, --nameserver=ADDR:指定 DNS 服務器地址
-c, --class=CLASS:指定 DNS 記錄的類(如 IN, CH, HS 等)

解析選項:

--strategy=STRATEGY:指定解析器列表中的策略(如 random, first)
--timeout=DURATION:指定等待解析器響應的超時時間(如 5s, 400ms, 1m)
--ipv4:強制使用 IPv4
--ipv6:強制使用 IPv6

查詢標志:

--ad:設置權威回答標志
--cd:禁用驗證標志

輸出選項:

-J, --json:將輸出格式化為 JSON
-S, --short:簡化輸出,僅顯示響應部分

之后便可以輸入類似于以下命令開始使用:

# 簡單的 DNS 查詢 doggo example.com # 使用指定的名稱服務器查詢 MX 記錄 doggo MX github.com @9.9.9.9 # 使用 DNS over HTTPS doggo example.com @https://cloudflare-dns.com/dns-query # 以 JSON 格式輸出用于腳本處理 doggo example.com --json | jq '.responses[0].answers[].address' # 反向 DNS 查詢 doggo --reverse 8.8.8.8 --short 網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

??部署于NAS中

NAS中因系統(tǒng)原因,部署使用與服務器有些許差異,并不能持久化運行,直接輸入doggo命令進行操作,但也有解決辦法。

登入NAS后輸入以下命令:

docker pull ghcr.io/mr-karan/doggo:latest

按照官方文檔,可通過輸入以下命令返回結果:

docker run --rm ghcr.io/mr-karan/doggo:latest example.com網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

解釋:

docker run --rm: 運行一個臨時 Docker 容器。--rm 參數意味著在容器停止后,Docker 會自動刪除容器,避免占用系統(tǒng)資源。
ghcr.io/mr-karan/doggo:latest: 這是從 GitHub Container Registry 拉取的 Doggo 鏡像,latest 表示使用最新版本的 Doggo。
example.com: 這是你要查詢的域名,Doggo 會對這個域名執(zhí)行 DNS 查詢,并返回結果。

執(zhí)行這個命令后:

拉取鏡像:如果你之前沒有拉取過這個鏡像,Docker 會從 GitHub Container Registry 下載最新的 Doggo 鏡像。
DNS 查詢:Doggo 將會對 example.com 進行默認的 DNS 查詢(查詢 A 記錄),并將結果顯示在終端中。
容器自動刪除:查詢完成后,容器會自動停止并刪除。

我覺得這樣十分麻煩,如果能像python一般,輸入/bin/bash就好了,但doggo并非活動容器。

網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

我們可以通過輸入以下命令解決:

docker run -it --entrypoint /bin/sh ghcr.io/mr-karan/doggo:latest

--entrypoint /bin/sh

--entrypoint:這個選項覆蓋鏡像的默認入口點(ENTRYPOINT),即容器啟動時默認執(zhí)行的命令。通常,Docker 鏡像的創(chuàng)建者會在鏡像的 Dockerfile 中指定一個默認的 ENTRYPOINT 或 CMD(命令),這個命令會在容器啟動時自動運行。

/bin/sh:這是你希望容器運行時啟動的命令,在這個情況下是一個 shell 程序(通常是一個輕量級的 shell)。這意味著,當你啟動這個容器時,它會直接啟動一個 shell,允許你在容器中輸入命令,而不是執(zhí)行鏡像的默認命令。

網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

使用


以我的博客站點為例。

??基本 DNS 記錄查詢

doggo example.com網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

??檢查特定 DNS 服務器的解析

doggo example.com @8.8.8.8 doggo example.com @223.5.5.5 doggo example.com @114.114.114.114網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

??查詢 CNAME 記錄

doggo example.com -t CNAME網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

??測量DNS查詢時間

doggo -q example.com --time @114.114.114.114 doggo -q example.com --time @223.5.5.5 doggo -q example.com --time @119.29.29.29 doggo -q example.com --time @1.1.1.1 doggo -q example.com --time @8.8.8.8網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

??域名的授權 DNS 服務器是否配置正確

doggo example.com -t NS 網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

??網絡中的特定類型

doggo -q example.com --ipv4網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

??以JSON格式輸出

doggo -q example.com --json doggo -q example.com --short # 只輸出結果網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

??不信任環(huán)境下通過 HTTPS 進行加密查詢

doggo -q example.com @https://cloudflare-dns.com/dns-query # 使用 DoH 可以增強 DNS 查詢的安全性,尤其是在不信任的網絡環(huán)境中,通過 HTTPS 加密 DNS 查詢可以防止中間人攻擊和 DNS 劫持。網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

最后


Doggo 適合那些需要現代化、靈活性高、且易于集成的 DNS 查詢工具的用戶。如果你希望使用命令行工具在隱私性和安全性上更進一步,特別是在 DoH 方面,Doggo 是一個很好的選擇。然而,對于需要深入調試和復雜查詢的場景,dig 仍然是不可或缺的工具。結合使用這兩者,可以滿足絕大多數 DNS 查詢和調試的需求。

如果各位覺得本篇文章有所幫助,別忘了三連支持下,能點點關注就更好了!后續(xù)我還會持續(xù)分享各類教程以及有趣好玩的項目網絡調試終極武器,10分鐘快速部署開源工具Doggo,解鎖調試新技能

感謝觀看,本文完。

,

聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發(fā)布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。