6 puan yazan GN⁺ 2024-01-08 | 1 yorum | WhatsApp'ta paylaş
  • dns.toys, DNS sorgularını bir komut arayüzü gibi kullanarak terminalde yalnızca dig ile küçük yardımcı araçları çalıştırmayı sağlayan bir DNS sunucusudur
  • Dünya saati, hava durumu, 70'ten fazla birim dönüşümü ve günlük kur bazlı para birimi dönüşümü gibi arama sayfası açması uğraştıran işleri anında halledebilir
  • Geliştiriciler için gerekli CIDR aralığı hesaplama, UUID v4·NanoID üretimi, Unix epoch dönüşümü ve sayı tabanı dönüşümü gibi özellikler de sunar
  • Çağrı, @dns.toys belirtilerek yapılır; Bash·Fish·Zsh'te dy alias'ı eklenerek daha kısa kullanılabilir
  • Daha çok bir iş aracı olmaktan ziyade terminal içinde hızlıca kontrol etme ve hesaplama yapmanın keyfi ile pratikliğini hedefleyen bir hizmettir; basit sorgu işleri için uygundur

DNS sorgusuyla çalışan terminal yardımcı araçları

  • dns.toys, çeşitli işlevleri bir DNS sunucusu olarak sunar ve alan adı biçimindeki sorgular dig ile gönderilerek çalıştırılır
  • Saat·hava durumu·dönüşüm

    • dig mumbai.time @dns.toys: şehrin güncel saatini sorgulama
    • dig 2023-05-28T14:00-mumbai-paris/fr.time @dns.toys: şehirler arasında saat dilimi dönüşümü
    • dig mumbai.weather @dns.toys: şehir hava durumunu sorgulama
    • dig 42km-mi.unit @dns.toys: 70'ten fazla birim arasında dönüşüm
    • dig 100USD-INR.fx @dns.toys: günlük döviz kuru bazlı para birimi dönüşümü
    • dig -4 ip @dns.toys: IPv4 veya IPv6 adresini öğrenme
  • Hesaplama·geliştirici odaklı işlevler

    • dig 10.0.0.0/24.cidr @dns.toys: bir alt ağdaki ilk ve son kullanılabilir IP'yi hesaplama
    • dig 100dec-hex.base @dns.toys: hex, dec, oct, bin arasında taban dönüşümü
    • dig 784783800.epoch @dns.toys: Unix timestamp'i okunabilir tarihe dönüştürme
    • dig 5.uuid @dns.toys: UUID v4 üretme
    • dig 5.10.nanoid @dns.toys: belirtilen uzunluk ve sayıda NanoID üretme
  • Eğlencelik işlevler

    • dig pi @dns.toys: Pi sayısını gösterme
    • dig 3d20/2.dice @dns.toys: belirtilen adet ve yüzde zar atma
    • dig 2.coin @dns.toys: yazı tura atma
    • dig 1-100.rand @dns.toys: aralık içinde rastgele sayı üretme
    • dig excuse @dns.toys: rastgele bir geliştirici bahanesi gösterme

Kısaca çağırmak için kabuk alias'ı

  • dy kısa komutu eklenirse dy mumbai.weather gibi daha kısa çağrılabilir
    • Bash: alias dy="dig +short @dns.toys" satırını ~/.bashrc dosyasına ekleyin
    • Fish: alias dy="dig +noall +answer +additional $argv @dns.toys" satırını ~/.config/fish/config.fish dosyasına ekleyin
    • Zsh: alias dy="dig +short @dns.toys" satırını ~/.zshrc dosyasına ekleyin
  • Terminalde çok zaman geçiren kullanıcılar, ağır arama sayfaları açmadan birim dönüşümü veya hava durumu kontrolü gibi işleri hızlıca halledebilir

1 yorum

 
GN⁺ 2024-01-08
Hacker News yorumları
  • Eskiden kendi dinamik DNS yardımcı aracımı yazarken, makinemin IP adresini “güvenilir” biçimde hesaplamak için kullandığım küçük bir hile aklıma geldi
    OpenDNS çözücüleri (resolver1.opendns.com vb.) myip.opendns.com adını gerçek IP adresine çözer. Bağlantı durumuna göre A veya AAAA kaydı döner; bu çözücülerin IP’leri genelde anycast IP olduğundan, her an çökebilecek merkezi bir HTTP servisine istek atmaktan biraz daha hızlı olacağını düşünmek istiyordum
    Elbette OpenDNS de her an ortadan kalkabilir, ama bu riski sayısız “IP adresim ne?” HTTP servisinden daha kabul edilebilir gördüm. DNS’in aslında alan adlarından daha geniş kapsamlı verileri taşımak için tasarlandığını da duymuştum; TXT kayıtları gibi şeyler bunun izi. Bu site, DNS ile elde edilebilecek faydayı iyi gösteriyor

    • Google ve Akamai de DNS hizmetleri sunuyor
      dig @ns1-1.akamaitech.net ANY whoami.akamai.net +short
      dig @ns1.google.com TXT o-o.myaddr.l.google.com +short
    • OpenDNS ile YouTube’dan hangisinin kapanma ihtimali daha yüksek?
      curl -4si0A "" https://www.youtube.com|sed -n '/ip=/{s/.*ip=//;s/\.*//p;};'|uniq
      OpenDNS ile Cloudflare’dan hangisinin kapanma ihtimali daha yüksek? Aşağıdaki yöntem herhangi bir Cloudflare IP adresinde çalışır ve TLS de gerektirmez
      printf 'GET /cdn-cgi/trace HTTP/1.0\r\nHost: cloudflare.com |nc -vvn 104.18.25.13 80 |sed -n /ip=/p
      Cloudflare IP listesini curl -4si0A "" https://api.cloudflare.com/client/v4/ips ile alabilirsiniz. İstemci IP adresini web sayfasında veya HTTP başlıklarında gösteren çok sayıda web sitesi var; bunun illa “What is my IP” sitesi olması gerekmez
      Cloudflare ile belirli istekleri engelleyen web siteleri de bir seçenek. Örneğin StackOverflow’a User-Agent başlığı olmadan HTTP isteği gönderebilirsiniz
      curl -si40A "" http://stackoverflow.com|sed -n '/cf-footer-ip">/{s/.*">//;s/<.*//p;}'
      Kendi IP adresiniz yüz binlerce web sitesinde gösterilirken “What is my IP” sitelerinin başarılı olması oldukça şaşırtıcı. DNS’in faydası konusunda https://www.netmeister.org/blog/dns-rrs.html da bakmaya değer
    • IP’yi döndüren HTTP servislerinin çoğunun çalışma süresi açısından pek güvenilir görünmediği yorumuna katılıyorum
      Ancak Cloudflare’ın işlettiği https://icanhazip.com/ da var; bunun daha kararlı olma ihtimali yüksek görünüyor
      https://ipv4.icanhazip.com/
      https://ipv6.icanhazip.com/
    • Çok iyi fikir. STUN protokolünden çok daha basit görünüyor
  • Julia Evans’ın büyük hayranıyım; DNS ile ilgili birkaç faydalı oyuncak da yaptı
    https://jvns.ca/
    https://dns-lookup.jvns.ca/
    https://messwithdns.net/

  • İlgili yazılar
    DNS Toys - https://news.ycombinator.com/item?id=31704789 - Haziran 2022, 104 yorum
    DNS Toys: Useful utilities and services over DNS - https://news.ycombinator.com/item?id=31637226 - Haziran 2022, 1 yorum

  • Bu projenin yazarı yakın zamanda bir sunum yaptı; projenin nasıl ortaya çıktığına dair eğlenceli bir arka plan hikâyesi anlatılıyor
    https://youtu.be/ANmFZ8rbmnc?si=ndEWH4xY2oxJuEnB

  • Tuhaf bir şekilde
    dig A0.0,0.0/0.0,90.0.aerial @dns.toys
    ve
    dig A0.0,0.0/90.0,0.0.aerial @dns.toys
    ikisi de TXT "aerial distance = 10007.06 KM" döndürüyor
    Ekvator çevresi 40.075,017 km, kutupsal çevre ise 40.007,863 km. Dünya’nın varsayımsal olarak inek biçiminde olduğunu kabul etsek bile büyük bir zararı yok; ayrıca elipsoid yüzeyi boyunca iki nokta arasındaki en kısa mesafeyi bulmaya yarayan can sıkıcı serilerden kaçınmayı sağlıyor

    • İlginç. Bu çevre değerleri aslında düşündüğümden çok daha birbirine yakınmış
  • Biraz bağlantılı olarak, Birleşik Krallık işletme listesini DNS sorgusuyla sunan bir hizmet de var. DNS hizmetiyle DNS dışı veri sunma fikri aynı
    https://www.num.uk/
    Ancak yol haritasına bakınca hizmeti artık sürdürmüyor olabilirler gibi görünüyor

    • “Kötüye kullanım” sözcüğünü, “SOAP ve XHR, HTTP’nin ‘kötüye kullanımıdır’” anlamında değilse kullanmamak daha iyi
      IN(internet) sınıfı bugün evrimsel olarak dimdik duran bir sekoya gibi görünebilir, ama Kambriyen döneminde CH(chaos) ve HS(hesiod) sınıfları da vardı. Bu projelerin amaç ve hedeflerine yeniden bakmaya değer
      Aksine, günümüzdeki kötüye kullanım; yeniden iletim için 10 milisaniyelik pencere ya da qname minimizasyonu gibi şeylerle, bulut tabanlı web hizmetlerine, yani “happy eyeballs”a her şey pahasına optimize etmeye daha yakın. Örneğin bufferbloat gibi şeylerin de pek farkında değiller gibi. A/AAAA çözümlemenin dışında bambaşka bir dünya var
      İnternet konferanslarının koridorlarında cep koruyucu takmış iki kişinin kılıç dövüşü yaptığını, en azından birbirini kalemle dürttüğünü görmek de nadir değildir. RFC, “Request For Comments”tır; BCP(Best Current Practice) ise günlük hayatta düzenli olarak göz ardı edilir
  • Hoşuma gitti. Yalnız digin tüm platformlarda kurulu olmasını isterdim
    Windows’ta kullanılamaması hep sinir bozucu; kontrol edince Debian’da da varsayılan olarak gelmediğini gördüm. Elbette kolayca kurulabiliyor. OpenBSD ve Mac OS X’te var, bu iyi

    • Dog çapraz platform ve JSON çıktısı gibi güzel özellikleri de var
      https://dns.lookup.dog/
    • Mutlaka dig kullanmak gerekmiyor. nslookup ya da host da çalışır
      Windows’ta da mutlaka bir tür DNS sorgulama aracı vardır
  • Bu başlıktaki aptal için, beş yaşındaki bir çocuğa anlatır gibi açıklayabilir misiniz? Eğlence amaçlı olduğunu biliyorum ama anlamıyorum. Nasıl çalıştığını da bilmiyorum; bunun cehaletimden kaynaklandığının farkındayım

    • Özünde, özel bir DNS sunucusu üzerinden var olmayan alan adlarını çözümlemekten ibaret
      Örneğin dig 100USD-INR.fx @dns.toys, “DNS sunucusu olarak dns.toysu kullanıp 100USD-INR.fxi çözümle” demektir. O da içinde gerçek yanıtın bulunduğu bir TXT kaydı döndürür
      .fx var olmayan bir alan adı olduğundan kimliğine bürünülen biri yok; @dns.toysu @8.8.8.8 gibi bir şeyle değiştirirseniz hiçbir şey çözümlenmez
    • news.ycombinator.com gibi bir siteyi düşünün. Tarayıcı, bu adla özel bir sunucudan IP sorgular. Bu alan adında kabaca şöyle bir şey saklanmış olabilir
      A IP = ...1
      AAAA IP = ...2
      Burada A kayıt türüdür. Ama başka kayıt türleri de vardır
      TXT gender = 'male'
      DNS hakkında genellikle zımnen doğru kabul edilen birkaç varsayım var. İnsanlar DNS’i başka hizmetlere giden bir santral gibi kullanır ve santralin içindeki değerler çoğunlukla statiktir
      Burada ise alan adına göre değişen değerler döndürülüyor, yani tamamen farklı bir şey yapılıyor. Bunu yapmak için kendi yaptığınız bir DNS sunucusu gerekir, ama DNS protokolünün kendisi oldukça basittir
      Bu hack’in zekice olmasının nedeni, DNS’in en yaygın kullanılan ve desteklenen protokollerden biri olması; ana akım programlama kütüphanelerinin hepsinin desteklemesi ve işletim sistemlerinde zaten bulunan çok sayıda komut satırı aracının olmasıdır. DNS üzerinde bir hizmet olarak sunarsanız, en az bağımlılıkla araçlardan ve kütüphanelerden erişilebilir
      Ayrıca DNS’i genel internet hizmetlerinin santrali değil, doğrudan bir uygulama hizmeti olarak kullandırarak DNS sisteminin nasıl kullanılması gerektiğine dair genel varsayımları tersine çevirir. Mevcut yazılımlara bağlarken de karmaşık entegrasyon gerekmez; DNS istekleri sıradan bir web API’sinden daha sezgisel sayılabilir. Sansüre dayanıklılık açısından da büyük olasılıkla bazı avantajları vardır
    • DNS sunucusunu, farklı bir port ve farklı bir protokol kullanan özel bir web sunucusu gibi düşünebilirsiniz
      HTTP ile bir web sunucusuna istek yaptığınız gibi, DNS protokolüyle bir DNS sunucusuyla etkileşime girersiniz. telnet ile HTTP ya da SMTP isteğini taklit etmeye benzer; belirli bir kurallar kümesiyle belirli türde bir sunucuyla iletişim kurarsınız
      Bu sunucu sonuç üretmeden önce bir miktar hesaplama yapar; bu da genellikle statik olması beklenen çoğu DNS kaydından ayrıldığı noktadır
    • DNS protokolü basitçe UDP üzerinde metindir. Bir DNS isteği oluştururken sistem bir soket açar, içine google.com yazar ve yanıtı okur
      Sunucu DNS sunucusu olarak doğru yapılandırılmışsa uygun DNS kaydını yine metin olarak döndürür. google.com, yük dengelemede kullanılan bir alt alan adına işaret eden bir CNAME olduğundan, sunucu CNAME blabla.google.com gibi yanıt verebilir ve isterse blabla.google.comu da birlikte çözümleyerek ek isteğin zahmetinden kurtarabilir
      Bir RFC’de tanımlanan DNS protokolü, istek ve yanıtların belirli bir şekilde yapılmasını şart koşar. Bunlardan biri, var olmayan bir üst düzey alan adı için — örneğin şu anda var olmayan .time — sunucunun nxdomain döndürmesi gerektiğidir. Ama pratikte sunucunun güncel saat gibi herhangi bir değeri döndürmesini engelleyen teknik bir mekanizma yoktur
      Genel olarak bakarsak, ister herkese açık ister özel olsun, DNS operatörünün saçma veri döndürmeyeceği beklentisi kullanıcıyı koruyan tek şeydir. HTTPS bunu bir ölçüde hafifletir, ancak DNS kayıtlarının kendisi fiilen sınırsız biçimde sahte üretilebilir ve bunu geri almanın bir yolu yoktur
  • Bu özelliklerin dns.toysun herhangi bir alt alan adı üzerinden sunulmaması şaşırtıcı. O zaman özel bir ad sunucusu kullanmadan da çözümlenebilirdi

    • Varsayılan ad sunucusunu kullanırsanız önbellekleme gibi tüm olağan DNS karmaşıklığı devreye girer
  • Son zamanlarda bunun için çoğunlukla şunları kullanıyorum
    https://addr.tools/
    https://dnscheck.tools/
    https://myip.addr.tools/help