Rilis DNS Toys (2022)
(dns.toys)- dns.toys adalah server DNS yang memanfaatkan kueri DNS seperti antarmuka perintah, sehingga utilitas kecil bisa dijalankan di terminal hanya dengan
dig - Tugas yang merepotkan jika harus membuka halaman pencarian, seperti waktu dunia, cuaca, konversi lebih dari 70 satuan, dan konversi mata uang berbasis kurs harian, bisa langsung diproses
- Fitur yang dibutuhkan developer seperti perhitungan rentang CIDR, pembuatan UUID v4·NanoID, konversi Unix epoch, dan konversi basis bilangan juga disediakan
- Pemanggilan dilakukan dengan menentukan
@dns.toys, dan di Bash·Fish·Zsh bisa ditambahkan aliasdyagar lebih singkat - Layanan ini lebih ditujukan untuk keseruan dan kemudahan melakukan pengecekan serta perhitungan cepat di dalam terminal daripada sebagai alat kerja utama, dan cocok untuk tugas pencarian sederhana
Utilitas terminal yang dijalankan lewat kueri DNS
- dns.toys menyediakan berbagai fungsi sebagai server DNS, dan menjalankannya dengan mengirim kueri berbentuk domain lewat
dig -
Waktu·cuaca·konversi
dig mumbai.time @dns.toys: melihat waktu saat ini di kota tersebutdig 2023-05-28T14:00-mumbai-paris/fr.time @dns.toys: konversi zona waktu antar kotadig mumbai.weather @dns.toys: melihat cuaca kotadig 42km-mi.unit @dns.toys: konversi antar lebih dari 70 satuandig 100USD-INR.fx @dns.toys: konversi mata uang berbasis kurs hariandig -4 ip @dns.toys: memeriksa alamat IPv4 atau IPv6
-
Perhitungan·fitur untuk developer
dig 10.0.0.0/24.cidr @dns.toys: menghitung IP pertama dan terakhir yang dapat digunakan dalam subnetdig 100dec-hex.base @dns.toys: konversi basis bilangan antara hex, dec, oct, dan bindig 784783800.epoch @dns.toys: mengubah Unix timestamp menjadi tanggal yang bisa dibaca manusiadig 5.uuid @dns.toys: membuat UUID v4dig 5.10.nanoid @dns.toys: membuat NanoID dengan panjang dan jumlah yang ditentukan
-
Fitur mainan
dig pi @dns.toys: menampilkan angka Pidig 3d20/2.dice @dns.toys: melempar dadu dengan jumlah dan sisi yang ditentukandig 2.coin @dns.toys: lempar koindig 1-100.rand @dns.toys: membuat angka acak dalam rentang tertentudig excuse @dns.toys: menampilkan alasan acak ala developer
Alias shell untuk pemanggilan singkat
- Jika menambahkan perintah singkat
dy, pemanggilan bisa dibuat lebih ringkas sepertidy mumbai.weather- Bash: tambahkan
alias dy="dig +short @dns.toys"ke~/.bashrc - Fish: tambahkan
alias dy="dig +noall +answer +additional $argv @dns.toys"ke~/.config/fish/config.fish - Zsh: tambahkan
alias dy="dig +short @dns.toys"ke~/.zshrc
- Bash: tambahkan
- Pengguna yang menghabiskan banyak waktu di terminal bisa dengan cepat menangani tugas seperti konversi satuan atau memeriksa cuaca tanpa harus membuka halaman pencarian yang berat
1 komentar
Opini Hacker News
Ini mengingatkan saya pada trik kecil yang dulu saya pakai saat membuat utilitas DNS dinamis sendiri, untuk menghitung alamat IP mesin saya secara “andal”
Resolver OpenDNS (
resolver1.opendns.comdan sejenisnya) akan me-resolvemyip.opendns.commenjadi alamat IP sebenarnya. Bergantung pada kondisi koneksi, yang keluar bisa record A atau AAAA, dan karena IP resolver ini biasanya IP anycast, saya ingin percaya bahwa ini sedikit lebih cepat daripada meminta ke layanan HTTP terpusat yang bisa saja mati kapan punTentu OpenDNS juga bisa hilang kapan saja, tetapi saya menganggap risikonya lebih baik dibanding banyak sekali layanan HTTP “apa alamat IP saya?”. Saya juga pernah dengar bahwa DNS memang dimaksudkan untuk menangani data dengan cakupan yang lebih luas daripada sekadar nama domain; hal seperti record TXT adalah jejaknya. Situs ini menunjukkan dengan baik kegunaan yang bisa diperoleh lewat DNS
dig @ns1-1.akamaitech.net ANY whoami.akamai.net +shortdig @ns1.google.com TXT o-o.myaddr.l.google.com +shortcurl -4si0A "" https://www.youtube.com|sed -n '/ip=/{s/.*ip=//;s/\.*//p;};'|uniqMana yang lebih mungkin down, OpenDNS atau Cloudflare? Cara di bawah ini bekerja dari alamat IP Cloudflare mana pun dan tidak memerlukan TLS
printf 'GET /cdn-cgi/trace HTTP/1.0\r\nHost: cloudflare.com |nc -vvn 104.18.25.13 80 |sed -n /ip=/pDaftar IP Cloudflare bisa didapat dengan
curl -4si0A "" https://api.cloudflare.com/client/v4/ips. Ada sangat banyak situs web yang menampilkan alamat IP klien di halaman web atau header HTTP, dan tidak harus berupa situs “What is my IP”Situs web yang memblokir request tertentu lewat Cloudflare juga bisa jadi pilihan. Misalnya, kirim request HTTP ke StackOverflow tanpa header User-Agent
curl -si40A "" http://stackoverflow.com|sed -n '/cf-footer-ip">/{s/.*">//;s/<.*//p;}'Cukup mengejutkan bahwa situs-situs “What is my IP” bisa sukses, padahal alamat IP sendiri ditampilkan di ratusan ribu situs web. Untuk soal kegunaan DNS, https://www.netmeister.org/blog/dns-rrs.html juga layak dilihat
Namun ada juga https://icanhazip.com/ yang dioperasikan Cloudflare, dan yang ini tampaknya lebih mungkin stabil
https://ipv4.icanhazip.com/
https://ipv6.icanhazip.com/
Saya penggemar berat Julia Evans, dan dia juga membuat beberapa mainan berguna terkait DNS
https://jvns.ca/
https://dns-lookup.jvns.ca/
https://messwithdns.net/
Ini tulisan-tulisan terkait
DNS Toys - https://news.ycombinator.com/item?id=31704789 - Juni 2022, 104 komentar
DNS Toys: Useful utilities and services over DNS - https://news.ycombinator.com/item?id=31637226 - Juni 2022, 1 komentar
Ini presentasi terbaru dari pembuat proyek ini, dan ada cerita di balik layar yang menarik tentang bagaimana proyeknya muncul
https://youtu.be/ANmFZ8rbmnc?si=ndEWH4xY2oxJuEnB
Anehnya,
dig A0.0,0.0/0.0,90.0.aerial @dns.toysdan
dig A0.0,0.0/90.0,0.0.aerial @dns.toyskeduanya mengembalikan
TXT "aerial distance = 10007.06 KM"Keliling khatulistiwa adalah 40.075,017 km dan keliling kutub adalah 40.007,863 km. Bahkan jika menganggap Bumi sebagai bentuk sapi imajiner, itu tidak terlalu merugikan, dan memang bisa menghindari deret merepotkan untuk mencari jarak terpendek antara dua titik di sepanjang permukaan elipsoid
Sedikit terkait, ada juga layanan yang menyediakan daftar operator Inggris melalui lookup DNS. Idenya sama: menyediakan data non-DNS sebagai layanan DNS
https://www.num.uk/
Namun melihat roadmap-nya, sepertinya layanan itu mungkin sudah tidak dipelihara lagi
Kelas IN (internet) sekarang mungkin tampak seperti pohon sequoia yang menjulang berkat evolusi, tetapi pada masa Kambrium ada juga kelas CH (chaos) dan HS (hesiod). Tujuan dan sasaran proyek-proyek itu layak ditinjau kembali
Penyalahgunaan pada masa kini justru lebih mirip mengorbankan semua hal lain demi optimasi hanya untuk layanan web berbasis cloud, alias “happy eyeballs”, seperti jendela 10 milidetik untuk retransmisi atau qname minimization. Misalnya, bufferbloat pun tampaknya tidak terlalu disadari. Di luar resolusi A/AAAA ada dunia yang sama sekali berbeda
Di lorong konferensi internet, bukan hal langka melihat dua orang berkantong pelindung pena beradu pedang, atau setidaknya saling menusuk dengan pensil. RFC adalah “Request For Comments”, dan BCP (Best Current Practice) rutin diabaikan
Saya suka. Hanya saja, alangkah baiknya kalau
digterpasang di semua platformSelalu menyebalkan karena tidak bisa dipakai di Windows, dan setelah saya cek, Debian juga tidak menyertakannya secara default. Tentu saja mudah dipasang. OpenBSD dan Mac OS X memilikinya, jadi itu bagus
https://dns.lookup.dog/
dig.nslookupatauhostjuga bisaDi Windows pun pasti ada semacam alat lookup DNS
Bisa jelaskan seperti kepada anak lima tahun untuk orang bodoh di thread ini? Saya tahu ini untuk bersenang-senang, tapi saya tidak paham. Saya juga tidak tahu cara kerjanya, dan saya sadar itu karena ketidaktahuan saya
Misalnya
dig 100USD-INR.fx @dns.toysberarti “resolusikan100USD-INR.fxdengan memakaidns.toyssebagai server DNS”. Lalu ia mengembalikan record TXT yang berisi jawaban sebenarnya.fxadalah domain yang tidak ada, jadi ini bukan menyamar sebagai siapa pun, dan jika@dns.toysdiganti menjadi sesuatu seperti@8.8.8.8, tidak ada yang akan teresolusinews.ycombinator.com. Browser mencari IP untuk nama itu dari server khusus. Pada domain itu bisa tersimpan kira-kira seperti iniA IP = ...1AAAA IP = ...2Di sini
Aadalah jenis record. Namun ada juga jenis record lainTXT gender = 'male'Ada beberapa asumsi yang biasanya dianggap benar secara implisit tentang DNS. Orang memakai DNS seperti papan sambung ke layanan lain, dan nilai di dalam papan sambung itu umumnya statis
Di sini, karena nilai yang dikembalikan berubah bergantung pada domain, yang dilakukan benar-benar berbeda. Untuk melakukan ini diperlukan server DNS buatan sendiri, tetapi protokol DNS itu sendiri cukup sederhana
Alasan hack ini cerdas adalah karena DNS adalah salah satu protokol yang paling luas dipakai dan didukung, sehingga semua library pemrograman arus utama mendukungnya dan ada banyak alat command-line yang sudah tersedia di sistem operasi. Jika disediakan sebagai layanan di atas DNS, ia bisa diakses dari tool dan library dengan dependensi minimal
Selain itu, ini membalik asumsi umum tentang bagaimana sistem DNS seharusnya dipakai, dengan membuat DNS dipakai langsung sebagai layanan aplikasi, bukan sebagai papan sambung untuk layanan internet biasa. Saat dipasang ke perangkat lunak yang sudah ada pun tidak perlu integrasi rumit, dan permintaan DNS bisa dianggap lebih intuitif daripada API web biasa. Kemungkinan besar ada juga manfaat dari sisi ketahanan terhadap sensor
Seperti mengirim permintaan ke server web melalui HTTP, kita berinteraksi dengan server DNS melalui protokol DNS. Mirip menirukan permintaan HTTP atau SMTP dengan
telnet, yaitu berkomunikasi dengan jenis server tertentu memakai sekumpulan aturan tertentuServer ini melakukan sejumlah komputasi sebelum menghasilkan hasil, dan itulah bagian yang berbeda dari kebanyakan record DNS yang biasanya diharapkan statis
google.comke dalamnya, lalu membaca responsJika server dikonfigurasi dengan benar sebagai server DNS, ia akan membalas dengan record DNS yang sesuai sebagai teks. Karena
google.comadalah CNAME yang menunjuk ke suatu subdomain yang dipakai untuk load balancing, server akan menjawab sepertiCNAME blabla.google.comdan, jika mau, juga meresolusikanblabla.google.comsekaligus agar tidak perlu permintaan tambahanProtokol DNS yang didefinisikan dalam suatu RFC menetapkan bahwa permintaan dan respons harus dilakukan dengan cara tertentu. Salah satunya adalah server harus membalas
nxdomainuntuk top-level domain yang tidak ada, misalnya.timeyang saat ini tidak ada. Namun dalam praktiknya, tidak ada mekanisme teknis yang mencegah server membalas dengan nilai sembarang seperti waktu saat iniSecara umum, satu-satunya hal yang melindungi pengguna adalah ekspektasi bahwa operator DNS, publik maupun privat, tidak akan mengembalikan data palsu. HTTPS memang meredakannya sampai batas tertentu, tetapi record DNS itu sendiri pada dasarnya bisa dipalsukan tanpa batas dan tidak ada cara untuk membatalkannya
Saya heran fitur-fitur ini tidak disediakan sebagai subdomain apa pun dari
dns.toys. Dengan begitu, ia bisa diresolusi tanpa memakai name server khususAkhir-akhir ini saya lebih sering memakai ini
https://addr.tools/
https://dnscheck.tools/
https://myip.addr.tools/help