محلل DNS

توفر وحدة محلل DNS حماية المستخدم لاعتراض DNS وهجمات تحديث التكوين وتحسين أداء الشبكة لقرارات DNS. وحدة تحتوي على التعليمات البرمجية التي تنفذ محلل كعب DNS، والتي تترجم أسماء مثل www.google.com إلى عناوين IP مثل 2001: DB8 :: 1. محلل كعب DNS تدعم عناصر جافا API مثل InetAddress # getAllByName و شبكة # getAllByName ، فضلا عن وظائف الشبكات المحلية ، والأدوات إرسال واستقبال الاستفسارات DNS والتخزين المؤقت النتائج.

التغييرات في Android 10

على أجهزة تعمل بنظام التشغيل أندرويد 9 و أقل من ذلك، رمز محلل DNS هو انتشار عبر بيونيك و netd . وتتركز عمليات البحث DNS في netd الخفي للسماح للتخزين المؤقت على نطاق المنظومة، في حين تدعو التطبيقات وظائف (مثل getaddrinfo ) في بيونيك. يتم إرسال الاستعلام على UNIX مقبس ل /dev/socket/dnsproxyd إلى netd الخفي، الذي يوزع على طلب ومكالمات getaddrinfo مرة أخرى لعمليات البحث قضية DNS، ثم تخزين النتائج بحيث تطبيقات أخرى يمكن استخدامها. وقد ورد تنفيذ محلل DNS معظمها في bionic/libc/dns/ وجزئيا في system/netd/server/dns .

الروبوت 10 التحركات رمز محلل DNS على system/netd/resolv, تحولوا إلى C ++، ثم عصرنة وrefactors التعليمات البرمجية. يستمر وجود الكود في Bionic لأسباب تتعلق بتوافق التطبيقات ، ولكن لم يعد يتم استدعاؤه بواسطة النظام. تتأثر مسارات المصدر هذه بإعادة البناء:

  • bionic/libc/dns
  • system/netd/client
  • system/netd/server/dns
  • system/netd/server/DnsProxyListener.*
  • system/netd/resolv

التنسيق والتبعيات

يتم تسليم وحدة محلل DNS باعتبارها APEX ملف ويرتبط بشكل حيوي بواسطة netd . ومع ذلك، netd ليس تبعية كما تخدم وحدة المقبس المحلي /dev/socket/dnsproxyd مباشرة. تم نقل نقطة النهاية بيندر لتكوين محلل من netd إلى محلل، وهذا يعني أن نظام الخدمة يمكن استدعاء مباشرة إلى وحدة محلل دون المرور عبر netd .

وحدة محلل DNS يعتمد على libc (بيونيك) وتربط بشكل ثابت تبعياته. لا توجد مكتبات أخرى مطلوبة.