شرح الـ DNS

المقدمة

تخيل إنك عايز تتصل بصاحبك. هل هتحفظ رقمه “01012345678”، ولا هتحفظ اسمه “أحمد” وتدوس على الاسم في جهات الاتصال؟

أكيد الاسم أسهل، صح؟

ده بالظبط دور الـ DNS في عالم الإنترنت:

  • إنت بتكتب: google.com (اسم سهل)
  • الكمبيوتر بيفهم: 142.250.185.46 (IP صعب)
  • الـ DNS هو دليل التليفونات اللي بيترجم الاسم للرقم

يعني إيه DNS؟

DNS اختصار لـ Domain Name System (نظام أسماء النطاقات).

الفكرة الأساسية

إنت تكتب → google.com
  DNS يترجم
الكمبيوتر يفهم → 142.250.185.46

بدون DNS، كنت هتضطر تحفظ:

  • 142.250.185.46 بدل google.com
  • 157.240.241.35 بدل facebook.com
  • 13.107.42.14 بدل microsoft.com

مستحيل، صح؟


مكونات اسم النطاق (Domain Name)

البنية

www.example.com.
 │    │      │  │
 │    │      │  └─ Root (الجذر)
 │    │      └──── TLD (Top Level Domain)
 │    └─────────── Second Level Domain
 └──────────────── Subdomain

الشرح

1. Root (.)

الجذر - عادة مش بنكتبه، لكن موجود ضمنياً.

2. TLD (Top Level Domain)

النطاق الأعلى:

  • Generic TLDs: .com, .org, .net, .edu
  • Country TLDs: .eg, .sa, .us, .uk
  • New TLDs: .tech, .app, .dev, .blog

3. Second Level Domain

الجزء اللي بتختاره إنت: google, facebook, twitter

4. Subdomain

أقسام فرعية:

  • www.google.com
  • mail.google.com
  • drive.google.com

أمثلة

blog.example.com
 │     │      │
 │     │      └─ .com (TLD)
 │     └──────── example (Second Level)
 └────────────── blog (Subdomain)

mail.google.co.uk
 │     │     │  │
 │     │     │  └─ .uk (Country TLD)
 │     │     └──── .co (Second Level in UK)
 │     └─────────── google (Domain)
 └───────────────── mail (Subdomain)

ازاي DNS بيشتغل؟

السيناريو: إنت بتفتح www.google.com

الخطوات بالتفصيل

الخطوة 1: فحص الـ Cache المحلي

# جهازك يشوف: هل عندي IP بتاع google.com محفوظ؟

# على Windows
ipconfig /displaydns | findstr google.com

# على Linux/Mac
cat /etc/hosts

لو لقى الـ IP في الـ Cache، يستخدمه مباشرة. لو ملقاش، يكمل.

الخطوة 2: السؤال للـ DNS Resolver

جهازك بيسأل الـ DNS Resolver (عادة DNS بتاع الـ ISP أو 8.8.8.8 من Google).

Your Computer → DNS Resolver: "عايز IP بتاع google.com"

الخطوة 3: الـ Resolver يسأل الـ Root Server

الـ DNS Resolver مش عارف الإجابة، فبيسأل Root DNS Server.

DNS Resolver → Root Server: "فين google.com?"
Root Server → DNS Resolver: "مش عارف، بس روح اسأل .com server"

في 13 Root Server في العالم كله (بأسماء من A لـ M).

الخطوة 4: السؤال للـ TLD Server

DNS Resolver → .com TLD Server: "فين google.com?"
TLD Server → DNS Resolver: "مش عارف، بس روح اسأل Google's Name Server"

الخطوة 5: السؤال للـ Authoritative Name Server

DNS Resolver → Google's DNS: "فين google.com?"
Google's DNS → DNS Resolver: "ده IP بتاعه: 142.250.185.46"

الخطوة 6: الرد للمستخدم

DNS Resolver → Your Computer: "google.com = 142.250.185.46"
Your Computer: (يحفظ الإجابة في الـ Cache ويفتح الموقع)

الرسم الكامل

┌─────────────┐
│Your Computer  │
└──────┬──────┘
        │ 1. "What's google.com?"
┌──────────────┐
│ DNS Resolver   │ (8.8.8.8)
└──────┬───────┘
        │ 2. "Who knows .com?"
┌──────────────┐
│ Root Server    │
└──────┬───────┘
        │ 3. "Ask .com server"
┌──────────────┐
│   com Server   │
└──────┬───────┘
        │ 4. "Ask google.com server"
┌──────────────┐
│ Google's DNS.  │
└──────┬───────┘
        │ 5. "It's 142.250.185.46"
┌──────────────┐
│ Your Computer  │ ✓ Opens google.com
└──────────────┘

أنواع DNS Records

الـ DNS مش بس بيترجم أسماء لـ IPs، ده كمان بيخزن معلومات تانية.

السجلات الأساسية

1. A Record (Address)

يربط اسم النطاق بـ IPv4 Address.

example.com.  IN  A  93.184.216.34

مثال عملي:

dig example.com A

# النتيجة:
;; ANSWER SECTION:
example.com.  86400  IN  A  93.184.216.34

2. AAAA Record

يربط اسم النطاق بـ IPv6 Address.

example.com.  IN  AAAA  2606:2800:220:1:248:1893:25c8:1946

3. CNAME Record (Canonical Name)

اسم بديل (Alias) لاسم تاني.

www.example.com.  IN  CNAME  example.com.

يعني: لو حد فتح www.example.com، يروح لـ example.com.

مثال عملي:

dig www.github.com

# النتيجة:
;; ANSWER SECTION:
www.github.com.  3600  IN  CNAME  github.com.
github.com.      60    IN  A     140.82.121.3

4. MX Record (Mail Exchange)

سيرفرات البريد الإلكتروني.

example.com.  IN  MX  10  mail1.example.com.
example.com.  IN  MX  20  mail2.example.com.

الرقم (10, 20) هو الأولوية - الأقل رقماً يستخدم الأول.

مثال عملي:

dig google.com MX

# النتيجة:
;; ANSWER SECTION:
google.com.  3600  IN  MX  10  smtp.google.com.

5. NS Record (Name Server)

سيرفرات الـ DNS المسؤولة عن النطاق.

example.com.  IN  NS  ns1.example.com.
example.com.  IN  NS  ns2.example.com.

6. TXT Record

نص حر - بيستخدم لحاجات كتير:

  • التحقق من ملكية النطاق
  • SPF (لحماية البريد)
  • DKIM
  • Site verification
example.com.  IN  TXT  "v=spf1 include:_spf.google.com ~all"

مثال عملي:

dig google.com TXT

# النتيجة:
google.com.  3600  IN  TXT  "v=spf1 include:_spf.google.com ~all"
google.com.  3600  IN  TXT  "google-site-verification=..."

7. PTR Record (Pointer)

عكس الـ A Record - من IP للاسم (Reverse DNS).

34.216.184.93.in-addr.arpa.  IN  PTR  example.com.

الاستخدام: التحقق من سيرفرات البريد.

8. SOA Record (Start of Authority)

معلومات عن المنطقة (Zone).

example.com.  IN  SOA  ns1.example.com. admin.example.com. (
                       2024010601  ; Serial
                       3600        ; Refresh
                       1800        ; Retry
                       604800      ; Expire
                       86400 )     ; Minimum TTL

DNS Caching (التخزين المؤقت)

ليه الـ Caching مهم؟

تخيل لو كل مرة تفتح فيها Google، جهازك يسأل Root Server → TLD Server → Google’s DNS.

هيكون بطيء جداً!

مستويات الـ Cache

1. Browser DNS Cache
   ↓ (لو مش موجود)
2. Operating System DNS Cache
   ↓ (لو مش موجود)
3. Router DNS Cache
   ↓ (لو مش موجود)
4. ISP DNS Resolver Cache
   ↓ (لو مش موجود)
5. Authoritative DNS Server

TTL (Time To Live)

كل DNS Record ليه TTL بيحدد كام ثانية يتخزن في الـ Cache.

example.com.  86400  IN  A  93.184.216.34
              TTL (86400 ثانية = 24 ساعة)

يعني: الـ IP ده يتخزن لمدة 24 ساعة، بعدها اسأل تاني.

مسح الـ Cache

على Windows:

ipconfig /flushdns

على Linux:

sudo systemd-resolve --flush-caches

# أو
sudo service nscd restart

على Mac:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

أدوات فحص DNS

1. nslookup

الأداة الأبسط.

nslookup google.com

# النتيجة:
Server:  8.8.8.8
Address:  8.8.8.8#53

Non-authoritative answer:
Name:    google.com
Address: 142.250.185.46

تحديد DNS Server معين:

nslookup google.com 1.1.1.1

# استخدام Cloudflare DNS

2. dig (Domain Information Groper)

أداة أقوى وأكثر تفصيلاً.

dig google.com

# النتيجة:
; <<>> DiG 9.16.1 <<>> google.com
;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             300     IN      A       142.250.185.46

;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Jan 06 14:30:15 EET 2026
;; MSG SIZE  rcvd: 55

فحص نوع معين من Records:

dig google.com MX        # Mail servers
dig google.com NS        # Name servers
dig google.com TXT       # Text records
dig google.com ANY       # كل الأنواع

Reverse DNS Lookup:

dig -x 142.250.185.46

# النتيجة:
;; ANSWER SECTION:
46.185.250.142.in-addr.arpa. 86400 IN PTR sof02s46-in-f14.1e100.net.

تتبع مسار الـ DNS Query:

dig +trace google.com

# هيوريك كل الخطوات من Root لحد Authoritative Server

3. host

أداة بسيطة وسريعة.

host google.com

# النتيجة:
google.com has address 142.250.185.46
google.com mail is handled by 10 smtp.google.com.

من ناحية السيكيورتي

1. DNS Spoofing / Cache Poisoning

الفكرة: المهاجم يكدب ويقول “google.com = 1.2.3.4” (IP خبيث).

السيناريو:

1. إنت تسأل: "فين google.com?"
2. المهاجم يرد بسرعة: "ده 1.2.3.4" (قبل الـ DNS الحقيقي)
3. جهازك يحفظ الإجابة الغلط
4. كل مرة تفتح google.com، تروح للـ IP الخبيث

مثال عملي - هجوم محلي:

تعديل ملف /etc/hosts:

sudo nano /etc/hosts

# أضف:
1.2.3.4  google.com

دلوقتي لو فتحت google.com، هتروح لـ 1.2.3.4!

الدفاع:

  • DNSSEC (DNS Security Extensions)
  • استخدام DNS موثوق (8.8.8.8, 1.1.1.1)
  • تشفير DNS (DNS over HTTPS/TLS)

2. DNS Tunneling

الفكرة: استخدام DNS لنقل بيانات خبيثة أو التحايل على الـ Firewall.

كيف بيشتغل:

Normal DNS Query:
  "What's google.com?" → Simple question

DNS Tunneling:
  "What's abc123xyz789.attacker.com?" → Data encoded in subdomain
  "What's def456uvw012.attacker.com?" → More data
  ...

البيانات بتتخبى في أسماء الـ Subdomains!

الدفاع:

  • مراقبة DNS queries الغريبة
  • تحديد حجم أقصى للـ DNS queries
  • فحص أسماء الـ Subdomains الطويلة

3. DNS Amplification Attack

الفكرة: استخدام DNS لتكبير حجم هجوم DDoS.

السيناريو:

1. المهاجم يبعت DNS query صغيرة (60 bytes)
2. يزيف الـ Source IP → IP الضحية
3. الـ DNS Server يرد برد كبير (3000 bytes)
4. الرد يروح للضحية
5. كرر الخطوات آلاف المرات
   
نتيجة: 60 bytes → 3000 bytes (تضخيم 50x)

الدفاع:

  • Rate limiting على DNS servers
  • تعطيل DNS Recursion للعامة

4. Subdomain Enumeration

الفكرة: البحث عن Subdomains مخفية في موقع الهدف.

أدوات:

# استخدام sublist3r
sublist3r -d target.com

# استخدام amass
amass enum -d target.com

# استخدام DNS brute force
dnsrecon -d target.com -D wordlist.txt -t brt

مثال النتائج:

admin.target.com
dev.target.com
staging.target.com    ← ممكن يكون فيه ثغرات!
test.target.com
api.target.com

الدفاع:

  • إخفاء Subdomains غير الضرورية
  • تأمين كل الـ Subdomains (حتى الداخلية)

5. DNS Zone Transfer Attack

الفكرة: سحب كل DNS records لنطاق معين.

المحاولة:

dig axfr @ns1.target.com target.com

# لو الـ DNS Server مش محمي:
;; ANSWER SECTION:
target.com.       86400   IN   SOA   ...
target.com.       86400   IN   NS    ns1.target.com.
www.target.com.   86400   IN   A     1.2.3.4
admin.target.com. 86400   IN   A     1.2.3.5
api.target.com.   86400   IN   A     1.2.3.6
vpn.target.com.   86400   IN   A     1.2.3.7
...

دلوقتي عندك كل الـ Subdomains والـ IPs!

الدفاع:

# في إعدادات DNS Server:
allow-transfer { none; };  # أو IPs محددة فقط

DNS العامة الشهيرة

المزود IP الخصائص
Google 8.8.8.8
8.8.4.4
سريع، موثوق
Cloudflare 1.1.1.1
1.0.0.1
أسرع، خصوصية أفضل
OpenDNS 208.67.222.222
208.67.220.220
فلترة، رقابة أبوية
Quad9 9.9.9.9 حظر المواقع الخبيثة

تغيير DNS على جهازك

Windows:

Control Panel → Network and Sharing Center 
→ Change adapter settings 
→ Right-click on connection 
→ Properties → IPv4 → Properties
→ Use the following DNS server addresses:
   Preferred: 1.1.1.1
   Alternate: 8.8.8.8

Linux:

sudo nano /etc/resolv.conf

# أضف:
nameserver 1.1.1.1
nameserver 8.8.8.8

Mac:

System Preferences → Network 
→ Advanced → DNS 
→ Add: 1.1.1.1 and 8.8.8.8

تجربة عملية كاملة

السيناريو: فحص DNS لموقع معين

# 1. معرفة IP الموقع
dig +short google.com
# النتيجة: 142.250.185.46

# 2. معرفة Name Servers
dig google.com NS
# النتيجة: ns1.google.com, ns2.google.com, ...

# 3. معرفة Mail Servers
dig google.com MX
# النتيجة: smtp.google.com

# 4. تتبع المسار الكامل
dig +trace google.com
# هيوريك الرحلة من Root لحد Google's DNS

# 5. Reverse DNS Lookup
dig -x 142.250.185.46
# هيرجعلك الاسم من الـ IP

# 6. فحص كل أنواع الـ Records
dig google.com ANY

خلاصة

DNS ببساطة

  • الوظيفة: ترجمة أسماء المواقع لـ IP Addresses
  • الأهمية: بدونه كنت هتحفظ IPs بدل الأسماء
  • الآلية: استعلامات متسلسلة من جهازك لحد Authoritative Server

المكونات الأساسية

1. Domain Name (google.com)
2. DNS Resolver (8.8.8.8)
3. Root Servers
4. TLD Servers (.com)
5. Authoritative Name Servers (Google's DNS)

DNS Records المهمة

  • A: اسم → IPv4
  • AAAA: اسم → IPv6
  • CNAME: اسم → اسم تاني
  • MX: سيرفرات البريد
  • NS: سيرفرات DNS
  • TXT: نصوص للتحقق

من ناحية السيكيورتي

  • DNS Spoofing: تزييف الردود
  • DNS Tunneling: إخفاء البيانات
  • Zone Transfer: سرقة كل الـ Records
  • Subdomain Enum: البحث عن نقاط ضعف

الأدوات الأساسية

  • nslookup: بسيط وسريع
  • dig: قوي ومفصل
  • host: سريع للاستخدام اليومي