Doggo - Klien DNS baris perintah yang ramah pengguna
(doggo.mrkaran.dev)- Doggo adalah klien baris perintah yang menampilkan hasil kueri DNS dalam warna berbeda dan format tabel, dengan tujuan menghasilkan output yang mudah dibaca manusia di terminal
- Untuk lingkungan otomatisasi, output JSON dapat digunakan, dan pengukuran waktu respons serta mode debug juga berguna untuk analisis masalah
- Berbagai protokol transport seperti DNS over HTTPS, TLS, QUIC, TCP, UDP, dan DNSCrypt dapat ditangani dalam satu alat
- Mendukung fitur EDNS seperti EDNS Client Subnet, NSID, DNS Cookies, EDNS Padding, Extended DNS Errors, serta pemrosesan glue record
- Berjalan di Linux, macOS, Windows, FreeBSD, dan NetBSD, serta menyediakan antarmuka web dan pelengkapan shell sehingga dapat digunakan baik dari CLI lokal maupun browser
Kueri DNS yang mudah dibaca di terminal
- Doggo memosisikan diri sebagai klien DNS baris perintah untuk manusia
- Output bawaan menggunakan warna berbeda dan format berbasis tabel, sehingga respons DNS mudah dipindai dengan cepat
- Jika diperlukan untuk scripting atau parsing, output JSON dapat digunakan
- Menyediakan mode debug dan pengukuran waktu respons, sehingga bukan hanya hasil kueri tetapi juga proses kerjanya dapat diperiksa
Protokol dan data DNS yang didukung
- Mendukung berbagai protokol transport DNS
- DNS over HTTPS
- DNS over TLS
- DNS over QUIC
- DNS over TCP
- DNS over UDP
- DNSCrypt
- Juga mencakup banyak fitur terkait EDNS
- Respons sadar lokasi melalui EDNS Client Subnet(ECS)
- Name Server Identifier(NSID)
- DNS Cookies
- EDNS Padding
- Extended DNS Errors(EDE)
- Dapat memproses glue record dan data DNS tambahan pada additional section
- Internationalized Domain Names(IDN) mendukung konversi punycode otomatis
- Juga dapat menangani reverse DNS lookup serta berbagai flag DNS seperti AA, AD, CD, dan DO
Konfigurasi, resolver, dan lingkungan eksekusi
- Pengaturan
ndotsdansearchdapat digunakan dariresolv.confatau argumen baris perintah - Beberapa resolver dapat ditentukan, dan strategi kueri juga dapat disesuaikan pengguna
- Mendukung IPv4 dan IPv6
- Menyediakan antarmuka web di doggo.mrkaran.dev
- Menyediakan pelengkapan shell untuk
zshdanfish - Platform yang didukung adalah Linux, macOS, Windows, FreeBSD, dan NetBSD
1 komentar
Komentar Hacker News
Terlihat sangat keren. Bisa berbagi lebih banyak tentang alasan membuatnya, keputusan desain, dan konteks di baliknya?
ndots, lalu ingin membuat klien DNS yang mudah digunakan dan tidak mengalami perilaku tak terduga karena lingkungan hostSaya membuatnya dengan Go yang paling sering saya pakai, dan karena tidak ingin menambah dependensi eksternal jika tidak benar-benar perlu, saya tidak memakai framework CLI. Saya terutama suka bagian saat membuat utilitas kecil help.go untuk merender teks bantuan dengan warna dan format
Seiring waktu, ada juga kontribusi eksternal yang bagus, terutama @jedisct1 yang menambahkan dukungan DNSCrypt, dan itu sangat berarti. Rilis v1.0 terus tertunda lebih dari setahun karena hidup, proyek lain, dan sedikit kebiasaan menunda, lalu baru minggu lalu saya menetapkan tenggat dan memaksanya selesai
Tulisan terkait
ndots: https://mrkaran.dev/posts/ndots-kubernetes/Pemilihan namanya bagus sekali. Anak anjing (doggo) suka menggali (dig)
digyang cukup umumSenang juga ada image Docker. Akan bagus jika dokumentasinya menambahkan opsi
--rmuntuk pembersihan setelah dijalankan dan-tuntuk warnadocker run --rm -it ghcr.io/mr-karan/doggo:latest mrkaran.dev MXMungkin ini pertanyaan agak bodoh, tapi kenapa output-nya semuanya muncul dua kali?
Jika menjalankan
doggo google.com, A record yang sama muncul masing-masing dari127.0.2.2:53dan127.0.2.3:53, dandoggo news.ycombinator.comjuga menampilkan hasil dari dua nameserverBisa direproduksi dengan menentukan nameserver kustom seperti
@1.1.1.1?doggo google.com --shorthanya mengembalikan satu142.250.185.238Akan sangat bagus jika alat ini mendukung jenis kueri yang setara dengan
ANYAkan segera dirilis
Proyek yang keren. Saya mengetahuinya tahun lalu saat mengembangkan x-cmd pkg, dan saat itu versi terbarunya 0.5.7, tetapi sekarang sudah 1.0.2 jadi sepertinya perlu pembaruan versi
Ada juga video demo: https://x-cmd.com/pkg/doggo
Mengingatkan pada https://github.com/ogham/dog
dogyang ditulis dengan Rust, dan karena dia tidak tahu Rust tetapi ingin menambahkan fitur, ini dijadikan kesempatan bagus untuk menulis klien DNS dari nol dengan GoJadi namanya juga menjadi
dog + go => doggodogtampaknya tidak lagi dipeliharaApakah ada alasan mengapa banyak alat seperti ini ditulis dengan Go? Apakah karena standard library-nya, atau cuma kebetulan?
Sulit mengatakan hal yang sama untuk Python, Java, JavaScript, C#, dan lainnya
Banyak alat seperti k8s atau Terraform beserta provider-nya ditulis dengan Go, dan untuk membuat alat internal, popularitasnya cukup bersaing dengan Python
Menurut README, proyek ini terinspirasi dari
dogyang ditulis dengan Rust, dan karena dia tidak tahu Rust tetapi ingin menambahkan fitur, dia akhirnya menulis sendiri klien DNS dengan Go. Karena itu pula namanyadog + go => doggohttps://github.com/ogham/dog
Apakah ini terkait dengan Dog? Fungsinya terlihat hampir sama
Keduanya mengharuskan jenis kueri tertentu untuk dijalankan (A, AAAA, dll.), jadi kenapa tidak menjadikan kueri semua record sebagai default? Setidaknya saat mengueri satu domain, sepertinya itu masuk akal
https://github.com/mr-karan/doggo
digsecara default hanya menampilkan A record, dan saya juga mempertahankan perilaku yang samaApakah maksudnya semua jenis record yang mungkin, atau beberapa yang umum seperti
MX, AAAA, A, CNAME, TXT?Selamat atas rilis 1.0. doggo sudah menjadi alat DNS utama saya selama beberapa waktu, dan saya sangat menyukainya