نلتقي بالخدمة من Cloudflare على العناوين 1.1.1.1 و 1.0.0.1 ، أو "لقد وصل رف DNS العام!"

نلتقي بالخدمة من Cloudflare على العناوين 1.1.1.1 و 1.0.0.1 ، أو "لقد وصل رف DNS العام!"

شركة Cloudflare مقدم DNS العام على العناوين:

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

يُقال إن السياسة هي "الخصوصية أولاً" حتى يتمكن المستخدمون من الشعور براحة البال بشأن محتوى طلباتهم.

الخدمة مثيرة للاهتمام لأنها، بالإضافة إلى DNS المعتاد، توفر القدرة على استخدام التقنيات DNS-على-TLS и DNS الإفراط في HTTPS، مما سيمنع مقدمي الخدمة بشكل كبير من التنصت على طلباتك على طول مسار الطلبات - وجمع الإحصائيات ومراقبة الإعلانات وإدارتها. تدعي Cloudflare أن تاريخ الإعلان (1 أبريل 2018، أو 04/01 بالتدوين الأمريكي) لم يتم اختياره عن طريق الصدفة: في أي يوم آخر من العام سيتم عرض "الوحدات الأربع"؟

نظرًا لأن جمهور حبر يتمتع بالذكاء الفني، فإن القسم التقليدي "لماذا تحتاج إلى DNS؟" سأضعه في نهاية التدوينة، لكن هنا سأذكر أشياء أكثر فائدة من الناحية العملية:

كيفية استخدام الخدمة الجديدة؟

أبسط شيء هو تحديد عناوين خادم DNS المذكورة أعلاه في عميل DNS الخاص بك (أو في إعدادات خادم DNS المحلي الذي تستخدمه). هل يعقل أن تحل محل القيم المعتادة جوجل DNS (8.8.8.8، وما إلى ذلك)، أو أقل شيوعًا قليلاً خوادم DNS العامة ياندكس (77.88.8.8 وأمثالهم) إلى خوادم Cloudflare - هم من سيقررون لك، لكنهم يتحدثون عن المبتدئين جدول المواعيد سرعة الاستجابة، والتي بموجبها يكون Cloudflare أسرع من جميع المنافسين (سأوضح: تم إجراء القياسات بواسطة خدمة تابعة لجهة خارجية، وقد تختلف السرعة لعميل معين بالطبع).

نلتقي بالخدمة من Cloudflare على العناوين 1.1.1.1 و 1.0.0.1 ، أو "لقد وصل رف DNS العام!"

من المثير للاهتمام العمل مع الأوضاع الجديدة التي ينتقل فيها الطلب إلى الخادم عبر اتصال مشفر (في الواقع، يتم إرجاع الاستجابة من خلاله)، وDNS-over-TLS وDNS-over-HTTPS المذكورين. لسوء الحظ، فهي غير مدعومة "خارج الصندوق" (يعتقد المؤلفون أن هذا "حتى الآن")، ولكن ليس من الصعب تنظيم عملهم في برنامجك (أو حتى على أجهزتك):

DNS عبر HTTPs (DoH)

كما يوحي الاسم، يتم الاتصال عبر قناة HTTPS، وهو ما يعني

  1. وجود نقطة الهبوط (نقطة النهاية) - وهي موجودة في العنوان https://cloudflare-dns.com/dns-queryو
  2. عميل يمكنه إرسال الطلبات وتلقي الردود.

يمكن أن تكون الطلبات بتنسيق DNS Wireformat المحدد في RFC1035 (يتم إرساله باستخدام طريقتي POST وGET HTTP)، أو بتنسيق JSON (باستخدام طريقة GET HTTP). بالنسبة لي شخصيًا، بدت فكرة تقديم طلبات DNS عبر طلبات HTTP غير متوقعة، ولكن هناك ذرة عقلانية فيها: مثل هذا الطلب سوف يمر عبر العديد من أنظمة تصفية حركة المرور، وتحليل الاستجابات بسيط للغاية، وإنشاء الطلبات أسهل. المكتبات والبروتوكولات المعتادة هي المسؤولة عن الأمن.

اطلب أمثلة مباشرة من الوثائق:

الحصول على الطلب بتنسيق DNS Wireformat

$ curl -v "https://cloudflare-dns.com/dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB" | hexdump
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x7f968700a400)
GET /dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB HTTP/2
Host: cloudflare-dns.com
User-Agent: curl/7.54.0
Accept: */*

* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
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
* Connection #0 to host cloudflare-dns.com left intact
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 بتنسيق 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
* Connection #0 to host cloudflare-dns.com left intact
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

نفس الشيء ولكن باستخدام 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"
    }
  ]
}

من الواضح أن جهاز التوجيه المنزلي النادر (إذا كان واحدًا على الأقل) يمكنه العمل مع DNS بهذه الطريقة، لكن هذا لا يعني أن الدعم لن يظهر غدًا - ومن المثير للاهتمام أنه يمكننا هنا تنفيذ العمل مع DNS في تطبيقنا (كما هو الحال بالفعل) ذاهب لجعل موزيلا، فقط على خوادم Cloudflare).

DNS عبر TLS

بشكل افتراضي، يتم إرسال استعلامات DNS بدون تشفير. يعد DNS عبر TLS طريقة لإرسالها عبر اتصال آمن. يدعم Cloudflare DNS عبر TLS على المنفذ القياسي 853 كما هو محدد RFC7858. يستخدم هذا شهادة تم إصدارها لمضيف cloudflare-dns.com، ويتم دعم TLS 1.2 وTLS 1.3.

يتم إنشاء الاتصال والعمل وفقًا للبروتوكول على النحو التالي:

  • قبل إنشاء اتصال DNS، يقوم العميل بتخزين تجزئة SHA64 المشفرة بأساس 256 لشهادة TLS الخاصة بموقع cloudflare-dns.com (تسمى SPKI).
  • يقوم عميل DNS بإنشاء اتصال TCP بـ cloudflare-dns.com:853
  • يبدأ عميل DNS مصافحة TLS
  • أثناء عملية مصافحة TLS، يقدم مضيف cloudflare-dns.com شهادة TLS الخاصة به.
  • بمجرد إنشاء اتصال TLS، يمكن لعميل DNS إرسال طلبات DNS عبر قناة آمنة، مما يمنع التنصت على الطلبات والاستجابات وانتحالها.
  • يجب أن تتوافق جميع استعلامات DNS المرسلة عبر اتصال TLS مع إرسال DNS عبر TCP.

مثال لطلب عبر DNS عبر TLS:

$ kdig -d @1.1.1.1 +tls-ca +tls-host=cloudflare-dns.com  example.com
;; DEBUG: Querying for owner(example.com.), class(1), type(1), server(1.1.1.1), port(853), protocol(TCP)
;; DEBUG: TLS, imported 170 system certificates
;; DEBUG: TLS, received certificate hierarchy:
;; 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, skipping certificate PIN check
;; DEBUG: TLS, The certificate is trusted.
;; TLS session (TLS1.2)-(ECDHE-ECDSA-SECP256R1)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 58548
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1

;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 1536 B; ext-rcode: NOERROR
;; PADDING: 408 B

;; QUESTION SECTION:
;; example.com.             IN  A

;; ANSWER SECTION:
example.com.            2347    IN  A   93.184.216.34

;; Received 468 B
;; Time 2018-03-31 15:20:57 PDT
;; From 1.1.1.1@853(TCP) in 12.6 ms

يبدو أن هذا الخيار يعمل بشكل أفضل مع خوادم DNS المحلية التي تخدم احتياجات الشبكة المحلية أو مستخدم واحد. صحيح، بدعم من المعيار ليست جيدة جدا، ولكن - دعونا نأمل!

كلمتين لشرح موضوع المحادثة

يشير اختصار DNS إلى خدمة اسم المجال (لذا فإن قول "خدمة DNS" يعد زائدًا إلى حد ما، والاختصار يحتوي بالفعل على كلمة "خدمة")، ويستخدم لحل مهمة بسيطة - لفهم عنوان IP الخاص باسم مضيف معين. في كل مرة ينقر فيها أحد الأشخاص على رابط، أو يُدخل عنوانًا في شريط عناوين المتصفح (على سبيل المثال، شيء مثل "https://habrahabr.ru/post/346430/")، يحاول الكمبيوتر البشري معرفة الخادم الذي يرسل طلبًا للحصول على محتوى الصفحة. في حالة habrahabr.ru، ستحتوي استجابة DNS على إشارة إلى عنوان IP لخادم الويب: 178.248.237.68، ثم سيحاول المتصفح بالفعل الاتصال بالخادم بعنوان IP المحدد.

بدوره، يحدد خادم DNS، بعد تلقي الطلب "ما هو عنوان IP الخاص بالمضيف المسمى habrahabr.ru؟"، ما إذا كان يعرف أي شيء عن المضيف المحدد. إذا لم يكن الأمر كذلك، فإنه يقدم طلبًا إلى خوادم DNS الأخرى في العالم، ويحاول خطوة بخطوة معرفة إجابة السؤال المطروح. نتيجة لذلك، عند العثور على الإجابة النهائية، يتم إرسال البيانات التي تم العثور عليها إلى العميل الذي لا يزال ينتظرها، بالإضافة إلى تخزينها في ذاكرة التخزين المؤقت لخادم DNS نفسه، مما سيسمح لك بالإجابة على سؤال مماثل بشكل أسرع بكثير في المرة القادمة.

تتمثل المشكلة الشائعة في أنه، أولاً، يتم نقل بيانات استعلام DNS بشكل واضح (مما يمنح أي شخص لديه حق الوصول إلى تدفق حركة المرور القدرة على عزل استعلامات DNS والاستجابات التي يتلقاها ثم تحليلها لأغراضهم الخاصة؛ وهذا يعطي القدرة على استهداف الإعلانات بدقة لعميل DNS، وهو أمر كثير جدًا!). ثانيًا، يميل بعض مزودي خدمة الإنترنت (لن نشير بأصابع الاتهام، ولكن ليس الأصغر منهم) إلى عرض الإعلانات بدلاً من صفحة واحدة أو أخرى مطلوبة (والتي يتم تنفيذها بكل بساطة: بدلاً من عنوان IP المحدد للاستعلام بواسطة habranabr.ru) اسم المضيف، شخص عشوائي وبالتالي، يتم إرجاع عنوان خادم الويب الخاص بالموفر، حيث يتم تقديم الصفحة التي تحتوي على الإعلان). ثالثًا، هناك مزودو خدمة الوصول إلى الإنترنت يقومون بتنفيذ آلية لتلبية متطلبات حظر المواقع الفردية عن طريق استبدال استجابات DNS الصحيحة حول عناوين IP لموارد الويب المحظورة بعنوان IP الخاص بخادمهم الذي يحتوي على صفحات كعب الروتين (ونتيجة لذلك، الوصول إلى هذه المواقع أكثر تعقيدًا بشكل ملحوظ)، أو إلى عنوان الخادم الوكيل الذي يقوم بإجراء التصفية.

من المحتمل أن تكون هذه صورة من الموقع. http://1.1.1.1/، يستخدم لوصف الاتصال بالخدمة. يبدو أن المؤلفين واثقون تمامًا من جودة DNS الخاص بهم (ومع ذلك، من الصعب توقع أي شيء آخر من Cloudflare):

نلتقي بالخدمة من Cloudflare على العناوين 1.1.1.1 و 1.0.0.1 ، أو "لقد وصل رف DNS العام!"

يمكن للمرء أن يفهم تمامًا Cloudflare، منشئ الخدمة: فهم يكسبون رزقهم من خلال صيانة وتطوير إحدى شبكات CDN الأكثر شيوعًا في العالم (والتي لا تشمل وظائفها توزيع المحتوى فحسب، بل أيضًا استضافة مناطق DNS)، وبسبب رغبة هؤلاء، الذي ليس على دراية جيدة، تعليم هؤلاء الذين لا يعرفون، إلى ذلك الى اين اذهب في الشبكة العالمية، غالبًا ما يعانون من حظر عناوين خوادمهم دعونا لا نقول من - لذا فإن وجود نظام DNS لا يتأثر بـ "الصراخ والصفارات والخربشات" للشركة يعني ضررًا أقل لأعمالهم. والمزايا التقنية (تافهة ولكنها لطيفة: على وجه الخصوص، بالنسبة لعملاء DNS Cloudflare المجاني، سيكون تحديث سجلات DNS للموارد المستضافة على خوادم DNS الخاصة بالشركة أمرًا فوريًا) تجعل استخدام الخدمة الموضحة في المنشور أكثر إثارة للاهتمام.

يمكن للمستخدمين المسجلين فقط المشاركة في الاستطلاع. تسجيل الدخول، من فضلك.

هل ستستخدم الخدمة الجديدة؟

  • نعم، وذلك ببساطة عن طريق تحديده في نظام التشغيل و/أو على جهاز التوجيه

  • نعم، وسأستخدم بروتوكولات جديدة (DNS عبر HTTPs وDNS عبر TLS)

  • لا، لدي ما يكفي من الخوادم الحالية (هذا مزود عام: Google، وYandex، وما إلى ذلك)

  • لا، لا أعرف حتى ما الذي أستخدمه الآن

  • أستخدم DNS العودي الخاص بي مع نفق SSL لهم

صوت 693 من المستخدمين. امتنع مستخدم واحد عن التصويت.

المصدر: www.habr.com

إضافة تعليق