الوحدة 2: أوامر إعداد الشبكة

تعلم الأوامر الأساسية لإدارة الشبكات والتشخيص والاستعلام عن معلومات النطاقات

نظرة عامة

في هذه الوحدة، ستتعلم الأوامر الأساسية لإدارة الشبكات في لينكس، والتي تمكنك من عرض معلومات واجهات الشبكة، تشخيص مشاكل الاتصال، والاستعلام عن معلومات النطاقات وخوادم DNS. هذه المهارات أساسية لأي مسؤول أنظمة أو متخصص في الأمن السيبراني.

ملاحظة: في أمثلة الأوامر أدناه، يشير الرمز $ إلى موجه الأوامر (prompt) ولا يجب كتابته عند تنفيذ الأوامر.

هيكل الشبكة في لينكس

يتكون نظام الشبكة في لينكس من المكونات الأساسية التالية:

  • واجهات الشبكة (Network Interfaces): تمثل البطاقات الشبكية الفعلية أو الافتراضية
  • عناوين IP: عناوين فريدة لتحديد الجهاز على الشبكة
  • جدول التوجيه (Routing Table): يحدد كيفية توجيه الحزم الشبكية
  • جدار الحماية (Firewall): يحمي النظام من الوصول غير المصرح به
  • خدمة DNS: تحويل أسماء النطاقات إلى عناوين IP

عرض معلومات واجهات الشبكة: ip addr show

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

user@server:~$
ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:4e:66:a1 brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0 valid_lft 86382sec preferred_lft 86382sec inet6 fe80::a00:27ff:fe4e:66a1/64 scope link valid_lft forever preferred_lft forever
شرح الأمر:

يعرض ip addr show معلومات مفصلة عن جميع واجهات الشبكة في النظام، بما في ذلك:

  • اسم الواجهة (مثل lo, eth0)
  • عنوان MAC (عنوان الجهاز الفريد)
  • عنوان IPv4 و IPv6
  • حالة الواجهة (UP أو DOWN)
  • وغيرها من المعلومات التقنية
أمثلة أخرى:
ip addr show eth0
# عرض معلومات واجهة شبكة محددة (eth0)
ip a
# اختصار للأمر ip addr show
ip -4 addr show
# عرض عناوين IPv4 فقط
ip -6 addr show
# عرض عناوين IPv6 فقط

عرض معلومات الشبكة (الطريقة التقليدية): ifconfig

أمر تقليدي لعرض معلومات واجهات الشبكة، لا يزال مستخدمًا على نطاق واسع رغم وجود بدائل حديثة.

user@server:~$
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::a00:27ff:fe4e:66a1 prefixlen 64 scopeid 0x20<link> ether 08:00:27:4e:66:a1 txqueuelen 1000 (Ethernet) RX packets 123456 bytes 123456789 (117.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 98765 bytes 98765432 (94.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 1234 bytes 123456 (120.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1234 bytes 123456 (120.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
شرح الأمر:

يعرض ifconfig معلومات مفصلة عن واجهات الشبكة، بما في ذلك:

  • عنوان IP والماسك الشبكي (netmask)
  • عنوان البث (broadcast)
  • عنوان MAC (Ethernet)
  • إحصاءات حركة المرور (الرزم المرسلة والمستقبلة)
ملاحظة: في بعض توزيعات لينكس الحديثة، لم يعد ifconfig مثبتًا افتراضيًا، حيث تم استبداله بأمر ip الأكثر تطورًا. يمكن تثبيته يدويًا عبر حزمة net-tools إذا لزم الأمر.

اختبار الاتصال: ping

يستخدم لاختبار إمكانية الوصول إلى مضيف على شبكة IP وقياس وقت الاستجابة.

user@server:~$
ping google.com -c 4
PING google.com (142.250.191.46) 56(84) bytes of data. 64 bytes from muc11s09-in-f14.1e100.net (142.250.191.46): icmp_seq=1 ttl=117 time=15.3 ms 64 bytes from muc11s09-in-f14.1e100.net (142.250.191.46): icmp_seq=2 ttl=117 time=15.6 ms 64 bytes from muc11s09-in-f14.1e100.net (142.250.191.46): icmp_seq=3 ttl=117 time=15.4 ms 64 bytes from muc11s09-in-f14.1e100.net (142.250.191.46): icmp_seq=4 ttl=117 time=15.7 ms --- google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 15.342/15.525/15.721/0.162 ms
شرح الأمر:

يرسل ping حزم طلبات ICMP Echo Request إلى المضيف المحدد ويقيس وقت استجابة الحزمة (Round-Trip Time).

يستخدم بشكل شائع ل:

  • فحص اتصال الشبكة
  • قياس جودة الاتصال (فقدان الحزم، وقت الاستجابة)
  • تشخيص مشاكل الشبكة
أمثلة أخرى:
ping 8.8.8.8
# اختبار الاتصال بعنوان IP مباشرة (خادم DNS لجوجل)
ping -c 10 example.com
# إرسال 10 حزم فقط ثم التوقف
ping -i 2 example.com
# إرسال حزمة كل ثانيتين (بدلاً من 1 ثانية افتراضيًا)
ping -s 1000 example.com
# إرسال حزم بحجم 1000 بايت
ملاحظة: للخروج من وضع ping المستمر، اضغط Ctrl+C.

عرض اتصالات الشبكة: netstat

يعرض اتصالات الشبكة النشطة، وجداول التوجيه، وإحصائيات الواجهة، والمنافذ التي تستمع للاتصالات.

user@server:~$
netstat -tuln
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:* udp 0 0 0.0.0.0:5353 0.0.0.0:*
شرح الأمر:

يعرض netstat معلومات عن اتصالات الشبكة النشطة والمنافذ التي تستمع للاتصالات. الخيارات المستخدمة:

  • -t: عرض اتصالات TCP
  • -u: عرض اتصالات UDP
  • -l: عرض المقابس (Sockets) التي تستمع للاتصالات فقط
  • -n: عرض العناوين والأرقام بدلاً من الأسماء (أسرع)
أمثلة أخرى:
netstat -tulnp
# عرض العمليات المرتبطة بالاتصالات (يحتاج صلاحيات root)
netstat -r
# عرض جدول التوجيه (Routing Table)
netstat -s
# عرض إحصاءات الشبكة حسب البروتوكول
ss -tuln
# استخدام الأمر ss (بديل أكثر حداثة لـ netstat)
ملاحظة: في الأنظمة الحديثة، يُنصح باستخدام الأمر ss بدلاً من netstat لأنه أسرع ويعرض معلومات أكثر تفصيلاً.

تتبع مسار الحزم: traceroute

يستخدم لتتبع المسار الذي تأخذه الحزم من مضيف إلى آخر عبر الشبكة.

user@server:~$
traceroute google.com
traceroute to google.com (142.250.191.46), 30 hops max, 60 byte packets 1 router.local (192.168.1.1) 1.234 ms 1.123 ms 1.098 ms 2 10.10.10.1 (10.10.10.1) 5.678 ms 5.543 ms 5.498 ms 3 100.64.0.1 (100.64.0.1) 10.123 ms 10.098 ms 10.076 ms 4 203.0.113.1 (203.0.113.1) 15.432 ms 15.398 ms 15.376 ms 5 72.14.194.25 (72.14.194.25) 20.123 ms 20.098 ms 20.076 ms 6 108.170.245.1 (108.170.245.1) 25.543 ms 25.498 ms 25.476 ms 7 muc11s09-in-f14.1e100.net (142.250.191.46) 30.123 ms 30.098 ms 30.076 ms
شرح الأمر:

يتبع traceroute المسار الذي تسلكه الحزم من مضيف إلى آخر، مع عرض وقت الاستجابة لكل قفزة (hop).

مفيد في تشخيص مشاكل الشبكة وتحديد مكان التوقف أو البطء في الاتصال.

أمثلة أخرى:
traceroute -n google.com
# عرض عناوين IP فقط دون أسماء النطاقات
traceroute -I google.com
# استخدام ICMP Echo بدلاً من UDP (يتطلب صلاحيات)
traceroute -w 2 google.com
# تحديد وقت الانتظار لكل قفزة (2 ثواني)
ملاحظة: في بعض التوزيعات، قد يكون الأمر tracepath متاحًا كبديل أبسط لـ traceroute.

الاستعلام عن DNS: dig

أداة قوية للاستعلام عن خوادم نظام أسماء النطاقات (DNS) والحصول على معلومات مفصلة عن النطاقات.

user@server:~$
dig example.com
; <<>> DiG 9.16.1-Ubuntu <<>> example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 86400 IN A 93.184.216.34 ;; Query time: 20 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Mon Sep 13 10:45:30 +03 2023 ;; MSG SIZE rcvd: 56
شرح الأمر:

يستخدم dig للاستعلام عن سجلات DNS المختلفة للنطاق المحدد. يعرض معلومات مفصلة عن عملية الاستعلام والنتيجة.

بعض أنواع سجلات DNS الشائعة:

  • A: عنوان IPv4 للنطاق
  • AAAA: عنوان IPv6 للنطاق
  • MX: خوادم البريد الإلكتروني
  • NS: خوادم الأسماء
  • TXT: سجلات نصية (غالبًا للتحقق)
  • CNAME: اسم نطاق مشير إلى نطاق آخر
أمثلة أخرى:
dig example.com MX
# الاستعلام عن سجلات MX (خوادم البريد)
dig example.com NS
# الاستعلام عن سجلات NS (خوادم الأسماء)
dig example.com +short
# عرض النتيجة بشكل مختصر (العنوان فقط)
dig @8.8.8.8 example.com
# استخدام خادم DNS محدد للاستعلام (خادم جوجل)
dig -x 8.8.8.8
# البحث العكسي لعنوان IP (Reverse DNS Lookup)

الاستعلام عن معلومات النطاق: whois

يستخدم للحصول على معلومات التسجيل الخاصة باسم نطاق (Domain Name).

user@server:~$
whois example.com
Domain Name: EXAMPLE.COM Registry Domain ID: 2336799_DOMAIN_COM-VRSN Registrar WHOIS Server: whois.iana.org Registrar URL: http://res-dom.iana.org Updated Date: 2022-08-14T07:01:31Z Creation Date: 1995-08-14T04:00:00Z Registry Expiry Date: 2023-08-13T04:00:00Z Registrar: IANA Registrar Registrar IANA ID: 376 Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited Name Server: A.IANA-SERVERS.NET Name Server: B.IANA-SERVERS.NET DNSSEC: unsigned
شرح الأمر:

يستعلم whois من قواعد البيانات العامة لمعلومات التسجيل عن اسم النطاق المحدد، ويعرض معلومات مثل:

  • المسجل (Registrar) وتاريخ التسجيل
  • معلومات جهة الاتصال (قد تكون مخفية لحماية الخصوصية)
  • خوادم الأسماء (Name Servers)
  • حالة النطاق وتاريخ الانتهاء
ملاحظة: قد لا يكون الأمر whois مثبتًا افتراضيًا في بعض توزيعات لينكس. يمكن تثبيته عبر مدير الحزم الخاص بتوزيعتك (مثل: sudo apt install whois في ديبيان/أوبونتو).

البحث عن معلومات النطاق: host

أداة بسيطة للبحث عن أسماء النطاقات وعناوين IP، تعرض معلومات DNS بشكل مبسط.

user@server:~$
host example.com
example.com has address 93.184.216.34 example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946 example.com mail is handled by 0 .
شرح الأمر:

يقدم host واجهة أبسط لاستعلامات DNS مقارنة بـ dig، ويعرض المعلومات بشكل مباشر وسهل القراءة.

مفيد للحصول على معلومات سريعة عن نطاق دون التفاصيل التقنية الكثيرة التي يوفرها dig.

أمثلة أخرى:
host -t MX example.com
# البحث عن سجلات MX محددة
host -t NS example.com
# البحث عن سجلات NS محددة
host 93.184.216.34
# البحث العكسي (من IP إلى اسم النطاق)
host -a example.com
# عرض جميع سجلات النطاق (مشابه لـ dig)
ملاحظة: host يعتبر أسهل للمبتدئين، بينما dig يوفر تحكمًا أكبر ومعلومات أكثر تفصيلاً للمستخدمين المتقدمين.

تمرين عملي: تشخيص مشكلة شبكة

لنفترض أنك تواجه مشكلة في الوصول إلى موقع ويب. استخدم الأوامر التي تعلمتها لتشخيص المشكلة خطوة بخطوة:

user@server:~$
ping google.com
# التحقق من الاتصال بالإنترنت
PING google.com (142.250.191.46) 56(84) bytes of data. 64 bytes from muc11s09-in-f14.1e100.net (142.250.191.46): icmp_seq=1 ttl=117 time=15.3 ms
user@server:~$
ping example.com
# التحقق من الاتصال بالموقع المحدد
ping: example.com: Name or service not known
user@server:~$
dig example.com
# البحث عن معلومات DNS للموقع
;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 12345 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
user@server:~$
nslookup example.com
# طريقة بديلة للتحقق من DNS
Server: 8.8.8.8 Address: 8.8.8.8#53 ** server can't find example.com: NXDOMAIN
تحليل النتائج:

من خلال هذا التمرين، نستنتج أن:

  1. الاتصال بالإنترنت يعمل (نجاح ping لجوجل)
  2. المشكلة ليست في الاتصال بالشبكة المحلية أو الإنترنت
  3. الموقع المطلوب (example.com) غير موجود (حالة NXDOMAIN في DNS)
  4. المشكلة إما في اسم النطاق (قد يكون مكتوبًا بشكل خاطئ) أو أن النطاق غير مسجل
العودة إلى الوحدة الأولى الانتقال إلى الوحدة الثالثة