DNS Toys (2022) veröffentlicht
(dns.toys)- dns.toys ist ein DNS-Server, der DNS-Abfragen wie ein Command-Interface nutzt und kleine Utilities direkt im Terminal allein mit
digausführen lässt - Aufgaben, für die man ungern erst eine Suchseite öffnet, lassen sich direkt erledigen: Weltzeit, Wetter, über 70 Einheitenumrechnungen sowie Währungsumrechnung auf Basis täglicher Wechselkurse
- Auch für Entwickler nützliche Funktionen sind dabei, etwa CIDR-Bereichsberechnung, Erzeugung von UUID v4 und NanoID, Unix-Epoch-Konvertierung sowie Umrechnung zwischen Zahlensystemen
- Aufgerufen wird der Dienst durch Angabe von
@dns.toys; in Bash, Fish und Zsh kann man zusätzlich den Aliasdyeinrichten, um ihn kürzer zu nutzen - Eher ein Dienst für Spaß und Komfort beim schnellen Nachschlagen und Rechnen im Terminal als ein Werkzeug für den produktiven Einsatz; gut geeignet für einfache Abfragen
Terminal-Utilities per DNS-Abfrage ausführen
- dns.toys stellt mehrere Funktionen über einen DNS-Server bereit; Abfragen im Domain-Format werden mit
diggesendet und ausgeführt -
Zeit, Wetter und Umrechnung
dig mumbai.time @dns.toys: aktuelle Uhrzeit einer Stadt abfragendig 2023-05-28T14:00-mumbai-paris/fr.time @dns.toys: Zeitzonen-Umrechnung zwischen Städtendig mumbai.weather @dns.toys: Wetter einer Stadt abfragendig 42km-mi.unit @dns.toys: Umrechnung zwischen über 70 Einheitendig 100USD-INR.fx @dns.toys: Währungsumrechnung auf Basis täglicher Wechselkursedig -4 ip @dns.toys: IPv4- oder IPv6-Adresse ermitteln
-
Rechen- und Entwicklerfunktionen
dig 10.0.0.0/24.cidr @dns.toys: erste und letzte nutzbare IP in einem Subnetz berechnendig 100dec-hex.base @dns.toys: Umrechnung zwischen Zahlensystemen hex, dec, oct und bindig 784783800.epoch @dns.toys: Unix-Timestamp in ein lesbares Datum umwandelndig 5.uuid @dns.toys: UUID v4 erzeugendig 5.10.nanoid @dns.toys: NanoIDs mit angegebener Länge und Anzahl erzeugen
-
Spielzeugfunktionen
dig pi @dns.toys: Ziffern von Pi ausgebendig 3d20/2.dice @dns.toys: Würfel mit angegebener Anzahl und Seitenzahl werfendig 2.coin @dns.toys: Münze werfendig 1-100.rand @dns.toys: Zufallszahl innerhalb eines Bereichs erzeugendig excuse @dns.toys: zufällige Entwickler-Ausrede ausgeben
Shell-Alias für kürzere Aufrufe
- Mit dem Kurzbefehl
dylässt sich der Dienst noch knapper aufrufen, etwady mumbai.weather- Bash:
alias dy="dig +short @dns.toys"zu~/.bashrchinzufügen - Fish:
alias dy="dig +noall +answer +additional $argv @dns.toys"zu~/.config/fish/config.fishhinzufügen - Zsh:
alias dy="dig +short @dns.toys"zu~/.zshrchinzufügen
- Bash:
- Wer viel Zeit im Terminal verbringt, kann Aufgaben wie Einheitenumrechnung oder Wetterabfragen schnell erledigen, ohne eine schwere Suchseite zu öffnen
1 Kommentare
Meinungen auf Hacker News
Das erinnert mich an einen kleinen Trick, den ich früher verwendet habe, als ich selbst ein Dynamic-DNS-Utility gebaut habe, um die IP-Adresse meines Rechners „zuverlässig“ zu ermitteln.
Die OpenDNS-Resolver (
resolver1.opendns.comusw.) lösenmyip.opendns.comzur tatsächlichen IP-Adresse auf. Je nach Verbindungsstatus kommt ein A- oder AAAA-Record zurück, und da die IPs dieser Resolver normalerweise Anycast-IPs sind, wollte ich glauben, dass das etwas schneller ist, als einen zentralen HTTP-Dienst anzufragen, der jederzeit ausfallen kann.Natürlich kann auch OpenDNS jederzeit verschwinden, aber ich hielt dieses Risiko für besser als bei den vielen „Wie lautet meine IP-Adresse?“-HTTP-Diensten. Ich habe auch einmal gehört, dass DNS ursprünglich dafür gedacht war, ein breiteres Spektrum an Daten als nur Domainnamen zu behandeln; TXT-Records sind eine Spur davon. Diese Seite zeigt gut, welchen Nutzen man aus DNS ziehen kann.
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;};'|uniqWas ist wahrscheinlicher: dass OpenDNS ausfällt oder Cloudflare? Die folgende Methode funktioniert mit jeder Cloudflare-IP-Adresse und braucht nicht einmal TLS.
printf 'GET /cdn-cgi/trace HTTP/1.0\r\nHost: cloudflare.com |nc -vvn 104.18.25.13 80 |sed -n /ip=/pDie Liste der Cloudflare-IPs bekommt man mit
curl -4si0A "" https://api.cloudflare.com/client/v4/ips. Es gibt sehr viele Websites, die die Client-IP-Adresse auf der Webseite oder in HTTP-Headern ausgeben; es muss nicht unbedingt eine „What is my IP“-Seite sein.Auch Websites, die bestimmte Anfragen über Cloudflare blockieren, kommen infrage. Zum Beispiel kann man eine HTTP-Anfrage ohne User-Agent-Header an StackOverflow schicken.
curl -si40A "" http://stackoverflow.com|sed -n '/cf-footer-ip">/{s/.*">//;s/<.*//p;}'Es ist ziemlich erstaunlich, dass „What is my IP“-Seiten so erfolgreich geworden sind, obwohl die eigene IP-Adresse auf Hunderttausenden Websites angezeigt wird. Zum Nutzen von DNS ist auch https://www.netmeister.org/blog/dns-rrs.html lesenswert.
Allerdings gibt es auch https://icanhazip.com/, das von Cloudflare betrieben wird; das wirkt wahrscheinlich stabiler.
https://ipv4.icanhazip.com/
https://ipv6.icanhazip.com/
Ich bin ein großer Fan von Julia Evans; sie hat auch ein paar nützliche Spielzeuge rund um DNS gebaut.
https://jvns.ca/
https://dns-lookup.jvns.ca/
https://messwithdns.net/
Verwandte Beiträge:
DNS Toys - https://news.ycombinator.com/item?id=31704789 - Juni 2022, 104 Kommentare
DNS Toys: Useful utilities and services over DNS - https://news.ycombinator.com/item?id=31637226 - Juni 2022, 1 Kommentar
Das ist ein aktueller Vortrag des Autors dieses Projekts, mit einer unterhaltsamen Hintergrundgeschichte dazu, wie das Projekt entstanden ist.
https://youtu.be/ANmFZ8rbmnc?si=ndEWH4xY2oxJuEnB
Merkwürdigerweise geben
dig A0.0,0.0/0.0,90.0.aerial @dns.toysund
dig A0.0,0.0/90.0,0.0.aerial @dns.toysbeide
TXT "aerial distance = 10007.06 KM"zurück.Der Äquatorumfang beträgt 40.075,017 km, der Polumfang 40.007,863 km. Selbst wenn man annimmt, die Erde sei eine imaginäre Kuhform, richtet das keinen großen Schaden an und man kann die unangenehmen Reihen vermeiden, mit denen man die kürzeste Entfernung zwischen zwei Punkten entlang der Oberfläche eines Ellipsoids berechnet.
Etwas damit verwandt gibt es auch einen Dienst, der die Liste britischer Betreiber per DNS-Abfrage bereitstellt. Es ist dieselbe Idee, über einen DNS-Dienst Daten bereitzustellen, die kein DNS sind
https://www.num.uk/
Allerdings sieht es nach der Roadmap so aus, als würde der Dienst vielleicht nicht mehr gepflegt
Die IN-Klasse (internet) wirkt heute evolutionär wie ein überragender Mammutbaum, aber im Kambrium gab es auch die Klassen CH (chaos) und HS (hesiod). Es lohnt sich, Zweck und Ziele dieser Projekte noch einmal anzusehen
Der heutige Missbrauch besteht eher darin, alles für Cloud-basierte Webdienste, also „happy eyeballs“, zu optimieren und alles andere zu opfern, etwa mit einem 10-Millisekunden-Fenster für Retransmits oder qname-Minimierung. Dinge wie Bufferbloat scheint man zum Beispiel kaum im Blick zu haben. Jenseits der A/AAAA-Auflösung gibt es eine ganz andere Welt
Es ist auch nicht selten, auf den Fluren von Internet-Konferenzen zwei Leute mit Pocket Protectors beim Fechten zu sehen – oder zumindest dabei, wie sie sich gegenseitig mit Bleistiften pieksen. RFC steht für „Request For Comments“, und BCP (Best Current Practice) wird routinemäßig ignoriert
Gefällt mir. Ich wünschte nur,
digwäre auf allen Plattformen installiertDass es unter Windows nicht verfügbar ist, nervt mich immer wieder, und wie ich gerade geprüft habe, ist es auch bei Debian nicht standardmäßig dabei. Natürlich lässt es sich leicht installieren. Auf OpenBSD und Mac OS X ist es vorhanden, das ist immerhin gut
https://dns.lookup.dog/
digverwenden.nslookupoderhostfunktionieren ebenfallsUnter Windows wird es sicher irgendein Tool für DNS-Abfragen geben
Kann mir jemand für den Dummen in diesem Thread erklären, als wäre ich fünf? Ich verstehe, dass es nur zum Spaß ist, aber ich kapiere es nicht. Ich weiß auch nicht, wie es funktioniert, und mir ist klar, dass das an meiner Unwissenheit liegt
Zum Beispiel bedeutet
dig 100USD-INR.fx @dns.toys: „Löse100USD-INR.fxauf und verwende dabeidns.toysals DNS-Server.“ Dann wird ein TXT-Record mit der tatsächlichen Antwort zurückgegeben.fxist eine nicht existierende Domain, daher gibt man sich auch nicht als jemand anders aus; und wenn man@dns.toysdurch etwas wie@8.8.8.8ersetzt, wird nichts aufgelöstnews.ycombinator.comvor. Der Browser fragt bei einem speziellen Server nach der IP zu diesem Namen. Für diese Domain könnte dort ungefähr so etwas gespeichert seinA IP = ...1AAAA IP = ...2Dabei ist
Ader Record-Typ. Es gibt aber auch andere Record-TypenTXT gender = 'male'Es gibt ein paar Annahmen über DNS, die man meist stillschweigend für wahr hält. Leute verwenden DNS wie eine Vermittlungsstelle zu anderen Diensten, und die Werte in dieser Vermittlungsstelle sind im Allgemeinen statisch
Hier passiert etwas völlig anderes, weil je nach Domain ein sich ändernder Wert zurückgegeben wird. Dafür braucht man einen selbst gebauten DNS-Server, aber das DNS-Protokoll selbst ist ziemlich simpel
Schlau an diesem Hack ist, dass DNS eines der am weitesten verbreiteten und unterstützten Protokolle ist: Alle gängigen Programmbibliotheken unterstützen es, und in Betriebssystemen gibt es bereits viele Kommandozeilen-Tools dafür. Wenn man etwas als Dienst über DNS anbietet, kann man mit minimalen Abhängigkeiten aus Tools und Bibliotheken darauf zugreifen
Außerdem wird DNS hier nicht als Vermittlungsstelle für normale Internetdienste genutzt, sondern direkt als Anwendungsdienst. Das stellt gängige Annahmen darüber auf den Kopf, wie man das DNS-System verwenden sollte. Beim Anbinden an bestehende Software braucht man keine komplexe Integration, und DNS-Anfragen können sogar intuitiver wirken als eine typische Web-API. Wahrscheinlich gibt es auch Vorteile in Bezug auf Zensurresistenz
So wie man per HTTP Anfragen an einen Webserver stellt, interagiert man per DNS-Protokoll mit einem DNS-Server. Ähnlich wie man mit
telnetHTTP- oder SMTP-Anfragen nachahmen kann, kommuniziert man nach einem bestimmten Regelwerk mit einer bestimmten Art von ServerDieser Server führt vor dem Ausgeben des Ergebnisses gewisse Berechnungen aus; das unterscheidet ihn von den meisten DNS-Records, von denen man normalerweise erwartet, dass sie statisch sind
google.comhinein und liest die AntwortWenn der Server korrekt als DNS-Server eingerichtet ist, antwortet er mit passenden DNS-Records, wiederum als Text. Da
google.comein CNAME ist, der auf irgendeine für Load Balancing verwendete Subdomain zeigt, antwortet der Server etwa mitCNAME blabla.google.comund kann, wenn er möchte,blabla.google.comgleich mit auflösen, damit keine zusätzliche Anfrage nötig istDas in irgendeinem RFC definierte DNS-Protokoll legt fest, dass Anfragen und Antworten auf bestimmte Weise erfolgen sollen. Eine Regel davon ist, dass ein Server für nicht existierende Top-Level-Domains, zum Beispiel die derzeit nicht existierende
.time, mitnxdomainantworten muss. Technisch gibt es in der Praxis aber nichts, was einen Server daran hindert, irgendeinen beliebigen Wert wie die aktuelle Uhrzeit zurückzugebenAllgemein gesagt schützt Nutzer im Wesentlichen nur die Erwartung, dass DNS-Betreiber, ob öffentlich oder privat, keine falschen Daten zurückliefern. HTTPS mildert das bis zu einem gewissen Grad ab, aber DNS-Records selbst sind faktisch unbegrenzt fälschbar und es gibt keinen Weg, das rückgängig zu machen
Es überrascht mich, dass diese Funktionen nicht auch über irgendeine Subdomain von
dns.toysangeboten werden. Dann ließen sie sich ohne speziellen Nameserver auflösenHeutzutage verwende ich dafür meistens das hier
https://addr.tools/
https://dnscheck.tools/
https://myip.addr.tools/help