Wir begrüßen den Cloudflare-Dienst unter den Adressen 1.1.1.1 und 1.0.0.1, oder „Die öffentliche DNS-Regale sind angekommen!“

Wir begrüßen den Cloudflare-Dienst unter den Adressen 1.1.1.1 und 1.0.0.1, oder „Die öffentliche DNS-Regale sind angekommen!“

 

Cloudflare hat Öffentliche DNS an den Adressen:

 

  • 1.1.1.1
  • 1.0.0.1
  • 2606:4700:4700::1111
  • 2606:4700:4700::1001

 

Es wird behauptet, dass eine „Privacy first“-Politik verwendet wird, sodass die Benutzer sich keine Sorgen um den Inhalt ihrer Anfragen machen müssen.

 

Der Dienst ist interessant, da er neben den normalen DNS auch die Möglichkeit bietet, Technologien zu verwenden, DNS-over-TLS und DNS-over-HTTPS, was es den Providern erheblich erschwert, Ihre Anfragen auf ihrem Weg abzuhören – und Statistiken zu sammeln, Werbung zu steuern. Cloudflare behauptet, dass das Datum der Ankündigung (1. April 2018, oder 04/01 in amerikanischer Schreibweise) nicht zufällig gewählt wurde: An welchem anderen Tag des Jahres könnte man „vier Einsen“ präsentieren?

Da das Publikum von Habra technisch versiert ist, werde ich den traditionellen Abschnitt „Warum benötigt man DNS?“ ans Ende des Beitrags stellen und hier praktisch nützlichere Dinge darlegen:

 

Wie nutzt man den neuen Dienst?

 

Das Einfachste ist, in Ihrem DNS-Client (oder als Upstream in den Einstellungen des von Ihnen verwendeten lokalen DNS-Servers) die oben genannten DNS-AdressenDNS-Servereinzugeben. Macht es Sinn, die gewohnten Werte von Googles DNS (8.8.8.8 usw.) oder etwas weniger verbreitete Yandex öffentliche DNS-Server (77.88.8.8 und ähnliche) durch Server von Cloudflare zu ersetzen? Das entscheiden Sie, aber für den Anfänger spricht die Grafik der Antwortzeiten, laut der Cloudflare schneller ist als alle Konkurrenten (ich möchte anmerken, dass die Messungen von einem externen Dienst durchgeführt wurden und die Geschwindigkeit zum spezifischen Kunden natürlich variieren kann).

 

Wir begrüßen den Cloudflare-Dienst unter den Adressen 1.1.1.1 und 1.0.0.1, oder „Die öffentliche DNS-Regale sind angekommen!“

 

Viel interessanter ist die Arbeit mit den neuen Modi, in denen die Anfragen über Server eine verschlüsselte Verbindung gesendet werden (die Antwort wird übrigens auch über diese zurückgesendet), wie erwähnt in DNS-over-TLS und DNS-over-HTTPS. Leider werden sie „out of the box“ nicht unterstützt (die Autoren glauben, dass dies „vorübergehend“ ist), aber es ist nicht schwer, ihre Funktionsweise in Ihrer Software (oder sogar auf Ihrer Hardware) zu organisieren:

 

DNS über HTTPs (DoH)

 

Wie der Name schon sagt, erfolgt die Kommunikation über den HTTPS-Kanal, was voraussetzt

 

  1. die Existenz eines Endpunkts (endpoint) – dieser befindet sich unter der Adresse https://cloudflare-dns.com/dns-query, und
  2. eines Clients, der in der Lage ist, Anfragen zu senden und Antworten zu empfangen.

 

Anfragen können entweder im DNS-Wireformat vorliegen, das in RFC1035 definiert ist. (sich mit HTTP-Methoden POST und GET senden), oder im JSON-Format (verwendet die HTTP-Methode GET). Persönlich fand ich die Idee, DNS-Anfragen über HTTP-Anfragen zu stellen, unerwartet, aber es gibt einen rationalen Kern darin: Eine solche Anfrage durchläuft viele Systeme zur Filterung des Datenverkehrs, die Antworten sind relativ einfach zu parsen, und die Erstellung der Anfragen ist noch einfacher. Bibliotheken und Protokolle, die wir gewohnt sind, übernehmen die Sicherheit.

 

Beispiele für Anfragen, direkt aus der Dokumentation:

 

GET-Anfrage im DNS-Wireformat

 

$ curl -v "https://cloudflare-dns.com/dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB" | hexdump
* Verwendung von HTTP2, Server unterstützt Mehrfachverwendung.
* Verbindungszustand geändert (HTTP/2 bestätigt)
* Kopieren von HTTP/2-Daten im Stream-Puffer in den Verbindungs-Puffer nach dem Upgrade: len=0
* Verwendung der Stream-ID: 1 (einfacher Handle 0x7f968700a400)
GET /dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB HTTP/2
Host: cloudflare-dns.com
User-Agent: curl/7.54.0
Accept: */*

* Verbindungszustand geändert (MAX_CONCURRENT_STREAMS aktualisiert)!
HTTP/2 200
date: Fri, 23 Mar 2018 05:14:02 GMT
content-type: application/dns-udpwireformat
content-length: 49
cache-control: max-age=0
set-cookie: __cfduid=dd1fb65f0185fadf50bbb6cd14ecbc5b01521782042; expires=Sat, 23-Mar-19 05:14:02 GMT; path=/; domain=.cloudflare.com; HttpOnly
server: cloudflare-nginx
cf-ray: 3ffe69838a418c4c-SFO-DOG

{ [49 bytes data]
100    49  100    49    0     0    493      0 --:--:-- --:--:-- --:--:--   494
* Verbindung #0 zum Host cloudflare-dns.com blieb intakt
0000000 ab cd 81 80 00 01 00 01 00 00 00 00 03 77 77 77
0000010 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 00 01 00
0000020 01 c0 0c 00 01 00 01 00 00 0a 8b 00 04 5d b8 d8
0000030 22
0000031

 

POST-Anfrage im DNS-Wireformat

 

$ echo -n 'q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB' | base64 -D | curl -H 'Content-Type: application/dns-udpwireformat' --data-binary @- https://cloudflare-dns.com/dns-query -o - | hexdump

{ [49 bytes data]
100    49  100    49    0     0    493      0 --:--:-- --:--:-- --:--:--   494
* Verbindung #0 zum Host cloudflare-dns.com blieb intakt
0000000 ab cd 81 80 00 01 00 01 00 00 00 00 03 77 77 77
0000010 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 00 01 00
0000020 01 c0 0c 00 01 00 01 00 00 0a 8b 00 04 5d b8 d8
0000030 22
0000031

 

Dasselbe, aber mit Verwendung von JSON

 

$ curl 'https://cloudflare-dns.com/dns-query?ct=application/dns-json&name=example.com&type=AAAA'

{
  "Status": 0,
  "TC": false,
  "RD": true,
  "RA": true,
  "AD": true,
  "CD": false,
  "Question": [
    {
      "name": "example.com.",
      "type": 1
    }
  ],
  "Answer": [
    {
      "name": "example.com.",
      "type": 1,
      "TTL": 1069,
      "data": "93.184.216.34"
    }
  ]
}

 

Es ist offensichtlich, dass nur sehr wenige (wenn überhaupt) Heimrouter so mit DNS arbeiten können, aber das bedeutet nicht, dass die Unterstützung nicht morgen erscheinen könnte — interessant ist, dass wir hier durchaus die Möglichkeit haben, die DNS-Arbeit in unserer Anwendung zu implementieren (wie bereits Mozilla plant es zu tun, gerade auf den Servern von Cloudflare).

 

DNS über TLS

 

Standardmäßig werden DNS-Anfragen unverschlüsselt übertragen. DNS über TLS ist eine Möglichkeit, sie über eine gesicherte Verbindung zu senden. Cloudflare unterstützt DNS über TLS am Standardport 853, wie vorgeschrieben. RFC7858. Dabei wird ein Zertifikat verwendet, das für den Host cloudflare-dns.com ausgestellt wurde, und es werden TLS 1.2 und TLS 1.3 unterstützt.

 

Die Verbindung und der Betrieb über das Protokoll funktionieren etwa so:

 

  • Vor der Herstellung der Verbindung speichert der DNS-Client den in Base64 codierten SHA256-Hash des TLS-Zertifikats von cloudflare-dns.com (auch SPKI genannt).
  • Der DNS-Client stellt eine TCP-Verbindung zu cloudflare-dns.com:853 her.
  • Der DNS-Client initiiert den TLS-Handshake.
  • Im Verlauf des TLS Handshakes präsentiert der Host cloudflare-dns.com sein TLS-Zertifikat.
  • Sobald die TLS-Verbindung hergestellt ist, kann der DNS-Client DNS-Anfragen über den gesicherten Kanal senden, was das Abhören und Manipulieren von Anfragen und Antworten verhindert.
  • Alle DNS-Anfragen, die über die TLS-Verbindung gesendet werden, müssen den Spezifikationen zum Senden von DNS über TCP entsprechen..

 

Ein Beispiel für eine Anfrage über DNS über TLS:

 

$ kdig -d @1.1.1.1 +tls-ca +tls-host=cloudflare-dns.com example.com
;; DEBUG: Anforderung für Eigentümer(example.com.), Klasse(1), Typ(1), Server(1.1.1.1), Port(853), Protokoll(TCP)
;; DEBUG: TLS, 170 Systemzertifikate importiert
;; DEBUG: TLS, Zertifikathierarchie erhalten:
;; DEBUG:  #1, C=US,ST=CA,L=San Francisco,O=Cloudflare, Inc.,CN=*.cloudflare-dns.com
;; DEBUG:      SHA-256 PIN: yioEpqeR4WtDwE9YxNVnCEkTxIjx6EEIwFSQW+lJsbc=
;; DEBUG:  #2, C=US,O=DigiCert Inc,CN=DigiCert ECC Secure Server CA
;; DEBUG:      SHA-256 PIN: PZXN3lRAy+8tBKk2Ox6F7jIlnzr2Yzmwqc3JnyfXoCw=
;; DEBUG: TLS, Zertifikats-PIN-Überprüfung wird übersprungen
;; DEBUG: TLS, Das Zertifikat ist vertrauenswürdig.
;; TLS-Sitzung (TLS1.2)-(ECDHE-ECDSA-SECP256R1)-(AES-256-GCM)
;; ->>HEADER<<- op-code: QUERY; status: NOERROR; id: 58548
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1

;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP-Größe: 1536 B; ext-rcode: NOERROR
;; PADDING: 408 B

;; FRAGESEKTION:
;; example.com. IN A

;; ANTWORTSEKTION:
example.com. 2347 IN A 93.184.216.34

;; Empfangen 468 B
;; Zeit 2018-03-31 15:20:57 PDT
;; Von 1.1.1.1@853(TCP) in 12.6 ms

 

Diese Variante scheint besser für lokale DNS-Server geeignet zu sein, die die Bedürfnisse eines lokalen Netzwerks oder eines einzelnen Benutzers bedienen. Allerdings steht es um die Unterstützung des Standards nicht besonders gut, aber – wir wollen hoffen!

 

Zwei Worte der Erläuterung, worum es geht

 

Die Abkürzung DNS steht für Domain Name Service (also ist „DNS-Dienst“ etwas übertrieben, da das Wort „Dienst“ bereits in der Abkürzung enthalten ist) und wird verwendet, um eine einfache Aufgabe zu lösen – herauszufinden, welche IP-Adresse einem bestimmten Hostnamen zugeordnet ist. Jedes Mal, wenn jemand auf einen Link klickt oder eine Adresse in die Adresszeile eines Browsers eingibt (sagen wir, etwas wie „https://habrahabr.ru/post/346430/Der Computer des Menschen versucht herauszufinden, an welchen Server die Anfrage zum Abrufen des Seiteninhalts gerichtet werden soll. Im Fall von habrahabr.ru enthält die Antwort vom DNS eine Angabe zur IP-Adresse des Webservers: 178.248.237.68, und dann wird der Browser versuchen, mit dem Server mit der angegebenen IP-Adresse eine Verbindung herzustellen.

 

Im Gegenzug erkennt der DNS-Server, nachdem er die Anfrage "Welche IP-Adresse hat der Host mit dem Namen habrahabr.ru?" erhalten hat, ob er etwas über den angegebenen Host weiß. Wenn nicht, stellt er Anfragen an andere DNS-Server weltweit und versucht Schritt für Schritt, die Antwort auf die gestellte Frage zu finden. Schließlich, nachdem die endgültige Antwort gefunden wurde, werden die gesammelten Daten an den weiterhin wartenden Klienten gesendet und auch im Cache des DNS-Servers gespeichert, was es ermöglicht, bei einer ähnlichen Anfrage beim nächsten Mal viel schneller zu antworten.

 

Ein häufiges Problem besteht darin, dass, erstens, die Daten der DNS-Anfragen unverschlüsselt übermittelt werden (was es jedem, der Zugang zum Datenverkehr hat, ermöglicht, die DNS-Anfragen und die erhaltenen Antworten herauszufiltern und sie für eigene Zwecke zu analysieren; dies ermöglicht eine zielgerichtete Werbung mit großer Präzision für den DNS-Kunden, was nicht zu vernachlässigen ist!). Zweitens neigen einige Internetanbieter (wir wollen hier keine Namen nennen, aber es sind nicht die kleinsten) dazu, Werbung anstelle der angeforderten Seite anzuzeigen (was ziemlich einfach umgesetzt wird: anstelle der angegebenen IP-Adresse für die Anfrage an den Hostnamen habranabr.ru wird dem Nutzer zufällig die Adresse des Webservers des Anbieters zurückgegeben, der eine Seite mit Werbung bereitstellt). Drittens gibt es Internetzugangsprovider, die einen Mechanismus implementieren, der das Erfüllen von Anforderungen zur Blockierung bestimmter Websites durch die Ersetzung der richtigen DNS-Antworten zu den IP-Adressen der blockierten Webseiten mit der IP-Adresse ihres eigenen Servers, der Platzhalterseiten enthält, ermöglicht (infolgedessen wird der Zugang zu solchen Seiten erheblich erschwert), oder durch die Adresse ihres Proxy-Servers, der die Filterung vornimmt.

 

Hier sollte wahrscheinlich ein Bild von der Website platziert werden http://1.1.1.1/, das zur Beschreibung der Verbindung zum Dienst dient. Die Autoren sind, wie man sieht, absolut überzeugt von der Qualität ihrer DNS-Dienste (obwohl man von Cloudflare nichts anderes erwarten kann):

 

Wir begrüßen den Cloudflare-Dienst unter den Adressen 1.1.1.1 und 1.0.0.1, oder „Die öffentliche DNS-Regale sind angekommen!“

 

Man kann die Firma Cloudflare, den Betreiber des Dienstes, gut verstehen: Sie verdienen ihren Lebensunterhalt damit, eines der beliebtesten CDN-Netzwerke der Welt zu betreiben und weiterzuentwickeln (zu den Funktionen gehört nicht nur die Verteilung von Inhalten, sondern auch das Hosting von DNS-Zonen). Und, aufgrund des Wunsches derjenigen, die sich nicht so gut auskennen, diejenigen zu unterrichten, die sie nicht kennen, in Bezug darauf, wo man im globalen Netzwerk hingehen sollte, leidet häufig unter der Blockierung der Adressen ihrer Server durch wir wollen nicht sagen von wem – daher bedeutet die Verfügbarkeit von DNS, das nicht von "Rufen, Pfiffen und Notizen" beeinflusst wird, für das Unternehmen weniger Schaden für ihr Geschäft. Die technischen Vorteile (eine Kleinigkeit, aber angenehm: insbesondere für die Kunden des kostenlosen DNS von Cloudflare wird die Aktualisierung von DNS-Einträgen von Ressourcen, die auf den DNS-Servern des Unternehmens gehostet werden, sofort sein) machen die Nutzung des in diesem Beitrag beschriebenen Dienstes noch interessanter. Werden Sie den neuen Dienst nutzen?

Nur registrierte Benutzer können an der Umfrage teilnehmen. Bitte einloggen.

Ja, ich gebe ihn einfach im OS und/oder im Router an

  • Ja, und ich werde die neuen Protokolle (DNS über HTTPs und DNS über TLS) nutzen
  • Nein, mir reichen die aktuellen Server (öffentlicher Anbieter: Google, Yandex usw.)
  • Nein, ich weiß nicht einmal, was ich gerade benutze
  • Ich benutze meine rekursiven DNS mit SSL-Tunnel zu ihnen
  • 693 Nutzer haben abgestimmt. 191 Nutzer haben sich enthalten.

Synthese als eine der Methoden zur Verbesserung der Leistung von PostgreSQL

Quelle: habr.com

60GB SSD 8Gb DDR4