شرح الـ 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.com157.240.241.35بدلfacebook.com13.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.commail.google.comdrive.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 | الخصائص |
|---|---|---|
| 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: سريع للاستخدام اليومي