6 poin oleh GN⁺ 2024-01-08 | 1 komentar | Bagikan ke WhatsApp
  • 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 alias dy agar 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 tersebut
    • dig 2023-05-28T14:00-mumbai-paris/fr.time @dns.toys: konversi zona waktu antar kota
    • dig mumbai.weather @dns.toys: melihat cuaca kota
    • dig 42km-mi.unit @dns.toys: konversi antar lebih dari 70 satuan
    • dig 100USD-INR.fx @dns.toys: konversi mata uang berbasis kurs harian
    • dig -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 subnet
    • dig 100dec-hex.base @dns.toys: konversi basis bilangan antara hex, dec, oct, dan bin
    • dig 784783800.epoch @dns.toys: mengubah Unix timestamp menjadi tanggal yang bisa dibaca manusia
    • dig 5.uuid @dns.toys: membuat UUID v4
    • dig 5.10.nanoid @dns.toys: membuat NanoID dengan panjang dan jumlah yang ditentukan
  • Fitur mainan

    • dig pi @dns.toys: menampilkan angka Pi
    • dig 3d20/2.dice @dns.toys: melempar dadu dengan jumlah dan sisi yang ditentukan
    • dig 2.coin @dns.toys: lempar koin
    • dig 1-100.rand @dns.toys: membuat angka acak dalam rentang tertentu
    • dig excuse @dns.toys: menampilkan alasan acak ala developer

Alias shell untuk pemanggilan singkat

  • Jika menambahkan perintah singkat dy, pemanggilan bisa dibuat lebih ringkas seperti dy 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
  • 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

 
GN⁺ 2024-01-08
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.com dan sejenisnya) akan me-resolve myip.opendns.com menjadi 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 pun
    Tentu 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

    • Google dan Akamai juga menyediakan layanan DNS
      dig @ns1-1.akamaitech.net ANY whoami.akamai.net +short
      dig @ns1.google.com TXT o-o.myaddr.l.google.com +short
    • Mana yang lebih mungkin down, OpenDNS atau YouTube?
      curl -4si0A "" https://www.youtube.com|sed -n '/ip=/{s/.*ip=//;s/\.*//p;};'|uniq
      Mana 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=/p
      Daftar 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
    • Saya setuju bahwa kebanyakan layanan HTTP untuk mendapatkan IP tidak terlihat terlalu meyakinkan dari sisi uptime
      Namun ada juga https://icanhazip.com/ yang dioperasikan Cloudflare, dan yang ini tampaknya lebih mungkin stabil
      https://ipv4.icanhazip.com/
      https://ipv6.icanhazip.com/
    • Ide yang sangat bagus. Kelihatannya jauh lebih sederhana daripada protokol STUN
  • 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.toys
    dan
    dig A0.0,0.0/90.0,0.0.aerial @dns.toys
    keduanya 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

    • Menarik. Nilai keliling itu ternyata jauh lebih dekat daripada yang saya kira
  • 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

    • Sebaiknya tidak memakai kata “penyalahgunaan”, kecuali maksudnya seperti “SOAP dan XHR adalah ‘penyalahgunaan’ HTTP”
      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 dig terpasang di semua platform
    Selalu 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

    • Dog bersifat lintas platform dan punya fitur bagus seperti keluaran JSON
      https://dns.lookup.dog/
    • Tidak harus memakai dig. nslookup atau host juga bisa
      Di 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

    • Pada dasarnya ini meresolusi domain yang tidak ada melalui server DNS kustom
      Misalnya dig 100USD-INR.fx @dns.toys berarti “resolusikan 100USD-INR.fx dengan memakai dns.toys sebagai server DNS”. Lalu ia mengembalikan record TXT yang berisi jawaban sebenarnya
      .fx adalah domain yang tidak ada, jadi ini bukan menyamar sebagai siapa pun, dan jika @dns.toys diganti menjadi sesuatu seperti @8.8.8.8, tidak ada yang akan teresolusi
    • Bayangkan situs seperti news.ycombinator.com. Browser mencari IP untuk nama itu dari server khusus. Pada domain itu bisa tersimpan kira-kira seperti ini
      A IP = ...1
      AAAA IP = ...2
      Di sini A adalah jenis record. Namun ada juga jenis record lain
      TXT 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
    • Anggap server DNS sebagai server web khusus yang memakai port dan protokol berbeda
      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 tertentu
      Server ini melakukan sejumlah komputasi sebelum menghasilkan hasil, dan itulah bagian yang berbeda dari kebanyakan record DNS yang biasanya diharapkan statis
    • Protokol DNS hanyalah teks di atas UDP. Saat membuat permintaan DNS, sistem membuka socket, menulis google.com ke dalamnya, lalu membaca respons
      Jika server dikonfigurasi dengan benar sebagai server DNS, ia akan membalas dengan record DNS yang sesuai sebagai teks. Karena google.com adalah CNAME yang menunjuk ke suatu subdomain yang dipakai untuk load balancing, server akan menjawab seperti CNAME blabla.google.com dan, jika mau, juga meresolusikan blabla.google.com sekaligus agar tidak perlu permintaan tambahan
      Protokol DNS yang didefinisikan dalam suatu RFC menetapkan bahwa permintaan dan respons harus dilakukan dengan cara tertentu. Salah satunya adalah server harus membalas nxdomain untuk top-level domain yang tidak ada, misalnya .time yang saat ini tidak ada. Namun dalam praktiknya, tidak ada mekanisme teknis yang mencegah server membalas dengan nilai sembarang seperti waktu saat ini
      Secara 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 khusus

    • Jika memakai name server default, semua kerumitan DNS biasa seperti caching akan ikut terlibat
  • Akhir-akhir ini saya lebih sering memakai ini
    https://addr.tools/
    https://dnscheck.tools/
    https://myip.addr.tools/help