نظرة عامة
في هذه الوحدة، ستتعلم الأوامر الأساسية لإدارة الشبكات في لينكس، والتي تمكنك من عرض معلومات واجهات الشبكة، تشخيص مشاكل الاتصال، والاستعلام عن معلومات النطاقات وخوادم 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
ip a
ip -4 addr show
ip -6 addr show
عرض معلومات الشبكة (الطريقة التقليدية): 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
ping -c 10 example.com
ping -i 2 example.com
ping -s 1000 example.com
ملاحظة: للخروج من وضع 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
netstat -r
netstat -s
ss -tuln
ملاحظة: في الأنظمة الحديثة، يُنصح باستخدام الأمر 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
traceroute -I google.com
traceroute -w 2 google.com
ملاحظة: في بعض التوزيعات، قد يكون الأمر 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
dig example.com NS
dig example.com +short
dig @8.8.8.8 example.com
dig -x 8.8.8.8
الاستعلام عن معلومات النطاق: 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
host -t NS example.com
host 93.184.216.34
host -a example.com
ملاحظة: 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
;; 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
Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find example.com: NXDOMAIN
تحليل النتائج:
من خلال هذا التمرين، نستنتج أن:
- الاتصال بالإنترنت يعمل (نجاح ping لجوجل)
- المشكلة ليست في الاتصال بالشبكة المحلية أو الإنترنت
- الموقع المطلوب (example.com) غير موجود (حالة NXDOMAIN في DNS)
- المشكلة إما في اسم النطاق (قد يكون مكتوبًا بشكل خاطئ) أو أن النطاق غير مسجل