طريقة عمل سيرفر dns محلي

طريقة عمل سيرفر DNS محلي داخل الجهاز

① تثبيت dnsmasq (سيرفر dns محلي)


sudo apt update && sudo apt install dnsmasq

② ملف الإعداد (يستمع على 5353 فقط) اعداد dns للمنفذ 5353

اولا: نفتح الملف بنانو :


sudo nano /etc/dnsmasq.conf

ثم نضيف البيانات هذه :


# لا ألمس المنفذ 53
port=5353
listen-address=127.0.0.1
bind-interfaces

# كاش 3 أيام
cache-size=10000
min-cache-ttl=3600
max-cache-ttl=259200
neg-ttl=259200

domain-needed
bogus-priv

# خوادم عليا
server=1.1.1.1
server=8.8.8.8
server=8.8.4.4

ثم نعمل خروج وحفظ : (ctrl+x) و (نختار نعم) ثم (ادخال لاعتماد نفس الاسم)

③ تشغيل الخدمة:


sudo systemctl enable --now dnsmasq

④ نُخبر الاتصال فقط (بدون تعديل نظامي) أن يستخدم المحلي مع المنفذ

يعني نغير اعدادات الشبكة المتصلة لكي تتصل بالسيرفر المحلي:

اولا نبحث عن اسم الشبكة المتصلة نجده تحت اسم NAME مثلا اتصالي وايفاي باسم “تلقائي Galaxy S10+ed3f”


ahmad@ahmad-sonic:~$ nmcli connection show
NAME                     UUID                                  TYPE      DEVICE 
تلقائي Galaxy S10+ed3f   4fa745a9-1c77-4c71-87f3-ba0320bdfef4  wifi      wlo1   
lo                       9e6223ed-5bdb-4f75-b827-8abb14a8b5b0  loopback  lo     
virbr0                   2ebdea49-79c7-4201-a6bf-09288a8a4b1f  bridge    virbr0 
اتصال سلكي 1             f9607e43-533c-3973-8da2-2b575056f012  ethernet  --     
اتصال سلكي 2             87713776-7a90-3d27-b7dc-86eb0640f6e1  ethernet  --     
تلقائي A26 الخاص بـ   c4b45863-93f6-4acb-aa22-a459fe157df2  wifi      --

يظهر اتصالي أمامه wifi وباسم: تلقائي Galaxy S10+ed3f ، وبما أنه فيه مسافات فلا يتعرف عليه الأمر بشكل صحيح ويلزم جعله داخل تنصيص ، الأن نقوم بضبط الاتصال ليستمع لسيرفر ال dns المحلي على المنفذ 5353 ونعمل الأوامر التالية سطر سطر :


nmcli connection modify "تلقائي Galaxy S10+ed3f" ipv4.dns "127.0.0.1#5353"
nmcli connection modify "تلقائي Galaxy S10+ed3f" ipv4.ignore-auto-dns yes
nmcli connection up "تلقائي Galaxy S10+ed3f"

⑤ الآن المفترض أنه يعمل ، نقوم باختباره بحيث نطلب مرتين ويكون مدة الأول فوق 10 ملي ثانية والثانية وما بعدها يكون 0 او 1 ملي ثانية دليل انه طلبها من داخل الجهاز واكتفى ، نكتب امر الاستفسار :


dig google.com

الآن يجيب في المرة الأولى بكلام كثير لكن يهمنا سرعة الرد في السطر :

;; Query time: 187 msec

نلاحظ المرة الثانية :

;; Query time: 0 msec

والثالثة :

;; Query time: 1 msec

هنا دليل على ان الطلب الأول ذهب يطلبه سيرفر ال dns المحلي من الانترنت واستغرق 187 ملي ثانية ، والطلبات التالية لم تستغرق إلا 0 أو 1 ملي ثانية دليل أن الرد اتى من ال dns المحلي .

وهنا سيبقى الاسم مخزن لمدة 3 ايام ويعاد طلبه بعدها ونحقق توفير للطلبات وتقليل لوقت الاستجابة .