الفلاتر
طريقة البحث
  • الكلمات العادية تجد الأسماء والنصوص والأمثلة.
  • "كلمتان" تجد العبارة بالضبط.
  • --name أو -x تجد خيارًا.
  • #كلمة تبحث داخل الأوامر فقط.
  • @grep تجد الدروس والمعامل التي تستخدم grep.
  • الفلاتر: cat:network · in:labs · level:rhcsa · ch:8 · root:yes. ضع ! قبل كلمة لاستبعادها. OR بين الكلمات تعني إحداها.
  • ↑ ↓ للتنقل · Enter للفتح · Esc للإغلاق · / للبحث

ip

عرض وتغيير بطاقات الشبكة والعناوين والمسارات والجيران (الإعدادات الحية في النظام).

المستوى
امتحان RHCSA
المجموعة
الشبكة
يحتاج root
للتغييرات
الحزمة
iproute

ماذا يفعل

الأمر ip يتكلم مباشرة مع نواة لينكس (kernel). يعرض الشبكة كما تعمل الآن بالضبط: كل عنوان وكل مسار وحالة كل بطاقة. الجميع يستطيع القراءة، وتحتاج صلاحية root للتغيير.

التغييرات التي تتم بـ ip مؤقتة. تختفي بعد إعادة التشغيل أو عندما يضبط NetworkManager البطاقة من جديد. استخدم ip للنظر والاختبار، واستخدم nmcli للإعدادات التي يجب أن تبقى.

الأمر ip يحل محل الأدوات القديمة ifconfig و route و arp. كل جزء من الشبكة هو كائن (object): address و link و route و neigh وغيرها. يمكن اختصار الكائنات والأوامر: ip a = ip address show، و ip r = ip route show.

طريقة الكتابة

ip [OPTIONS] OBJECT { COMMAND | help }
ip address { show | add | del | flush } [ dev IFNAME ] ...
ip link { show | set | add | del } [ dev IFNAME ] ...
ip route { show | get | add | del | replace | flush } ...
ip neigh { show | add | del | flush } ...

الأجزاء الرئيسية

address (a, addr)
عناوين IPv4 و IPv6 على البطاقات. show و add و del و flush.
link (l)
بطاقات الشبكة نفسها: الحالة up أو down، وعنوان MAC، و MTU، والنوع.
route (r)
جدول التوجيه: البوابة الافتراضية والمسارات الأخرى. show و get و add و del.
neigh (n, neighbour)
الجيران: جدول IP إلى MAC (‏ARP لـ IPv4 و NDP لـ IPv6).
rule (ru)
قواعد التوجيه حسب السياسة: أي جدول توجيه لأي حركة.
netns
نطاقات أسماء الشبكة (namespaces) التي تستخدمها الحاويات. list و add و exec و del.
monitor
متابعة تغييرات العناوين والروابط والمسارات مباشرة.
maddress
عناوين البث المتعدد (multicast).
tunnel, tuntap
الأنفاق (GRE و IPIP) وأجهزة TUN/TAP للشبكات الخاصة VPN.
xfrm
إعدادات IPsec.

الخيارات 34

الأكثر استخدامًا

المخرجات

-br, -brief
مخرجات قصيرة: سطر واحد لكل بطاقة فيه الحالة والعناوين فقط.
-c, -color[=always|auto|never]
ألوان للأسماء والعناوين والحالات.
-4
‏IPv4 فقط. اختصار لـ -family inet.
-6
‏IPv6 فقط. اختصار لـ -family inet6.
-f, -family family
اختر عائلة البروتوكول: inet و inet6 و link و bridge و mpls.
-0
طبقة الربط فقط (عناوين MAC). اختصار لـ -family link.
-o, -oneline
كل سجل في سطر واحد. سهل مع grep و awk.
-s, -stats, -statistics
أضف العدادات: الحزم والأخطاء والمفقود. استخدمه مرتين لتفاصيل أكثر.
-d, -details
اعرض تفاصيل أكثر، مثل نوع الرابط (vlan و bond و bridge).
-h, -human, -human-readable
اعرض العدادات بوحدات سهلة (K و M و G).
-iec
وحدات سهلة بقوى 1024 (Ki و Mi).
-j, -json
مخرجات بصيغة JSON للسكربتات والأدوات مثل jq.
-p, -pretty
مع ‎-json: صيغة JSON منسّقة سهلة القراءة.
-r, -resolve
اعرض أسماء DNS بدل العناوين.
-N, -Numeric
اعرض أرقام البروتوكولات والنطاقات بدل الأسماء.
-t, -timestamp
مع ip monitor: أضف الوقت لكل حدث.
-ts, -tshort
مثل ‎-timestamp لكن أقصر.

العمل

-n, -netns name
نفّذ الأمر داخل نطاق أسماء شبكة (namespace).
-a, -all
نفّذ الأمر على كل الكائنات، مثلًا في كل نطاقات الأسماء.
-b, -batch file
اقرأ أوامر ip كثيرة من ملف (أو - من stdin).
-force
في وضع الدفعات استمر بعد الأخطاء.
-l, -loops count
عدد محاولات ip address flush (الافتراضي 10، و 0 = حتى تُحذف كلها).
-rc, -rcvbuf size
حجم ذاكرة الاستقبال لـ netlink.
-echo
اطلب من النواة أن ترسل التغيير الذي تم.
-V, -Version
يعرض الإصدار.

كلمات تُستخدم مع address و link و route

dev IFNAME
بطاقة الشبكة، مثل enp1s0.
via ADDR
الموجّه التالي (البوابة) للمسار.
default
المسار الافتراضي (0.0.0.0/0 أو ::/0).
metric n
تكلفة المسار. الأقل يفوز.
up, down
مع ip link set: تشغيل البطاقة أو إيقافها.
mtu bytes
مع ip link set: أكبر حجم للحزمة.
address MAC
مع ip link set: تغيير عنوان MAC.
scope {global|link|host}
أين يكون العنوان صالحًا. ‏host = هذا الجهاز فقط.
label name
اسم لعنوان IPv4 إضافي، مثل enp1s0:1.

أمثلة 15

$ مستخدم عادي# بصلاحية root (أو مع sudo)

  1. 1عرض كل العناوين على كل البطاقات

    ip a
    ip -br -c a
    lo               UNKNOWN        127.0.0.1/8 ::1/128
    enp1s0           UP             192.168.122.10/24 fe80::5054:ff:fe3a:7c01/64

    الخيار ‎-br يعرض سطرًا واحدًا لكل بطاقة. هذا أسرع فحص لحالة خادم جديد.

  2. 2عرض عنوان IPv4 لبطاقة واحدة فقط

    ip -4 -o addr show dev enp1s0 | awk '{print $4}'
    192.168.122.10/24

    الخيار ‎-o يضع كل عنوان في سطر، فيستطيع awk أخذ الحقل الرابع. مناسب للسكربتات.

  3. 3معرفة البوابة الافتراضية

    ip route show default
    default via 192.168.122.1 dev enp1s0 proto static metric 100

    عدم وجود سطر default يعني أن الخادم لا يصل إلى الشبكات الأخرى.

  4. 4معرفة المسار وعنوان المصدر لوجهة واحدة

    ip route get 10.20.5.7
    10.20.5.7 via 192.168.122.254 dev enp1s0 src 192.168.122.10 uid 1000

    مفيد جدًا عندما يكون للخادم بطاقتان أو VPN: ترى البطاقة والعنوان الذي تخرج منه الحركة.

  5. 5فحص البطاقة بحثًا عن الأخطاء والحزم المفقودة

    ip -s -h link show enp1s0

    زيادة الأخطاء أو الحزم المفقودة تعني كابلًا سيئًا أو تعريفًا (driver) سيئًا أو ذاكرة ممتلئة. قارن بين تشغيلين بينهما دقيقة.

  6. 6عرض عناوين MAC لكل البطاقات

    ip -br link
    lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
    enp1s0           UP             52:54:00:3a:7c:01 <BROADCAST,MULTICAST,UP,LOWER_UP>

    عنوان MAC مطلوب لحجوزات DHCP ولبعض تراخيص البرامج.

  7. 7إضافة عنوان اختبار لبضع دقائق (مؤقت)

    ip addr add 192.168.122.50/24 dev enp1s0
    ip addr del 192.168.122.50/24 dev enp1s0

    مناسب لاختبار سريع. NetworkManager أو إعادة التشغيل سيحذفه على أي حال. للعنوان الثابت استخدم nmcli.

  8. 8إضافة مسار لاختبار (مؤقت)

    ip route add 10.30.0.0/16 via 192.168.122.254 dev enp1s0
    ip route del 10.30.0.0/16

    اختبر أولًا بـ ip. إذا نجح احفظه بالأمر nmcli con mod enp1s0 +ipv4.routes "10.30.0.0/16 192.168.122.254".

  9. 9عرض الجيران (جدول ARP)

    ip neigh show
    192.168.122.1 dev enp1s0 lladdr 52:54:00:aa:bb:cc REACHABLE

    عنوانا IP لهما نفس عنوان MAC، أو عنوان MAC للبوابة يتغير، قد يكون علامة على هجوم ARP spoofing.

  10. 10مسح سجل جار خاطئ

    ip neigh flush dev enp1s0

    بعد تغيير موجّه أو نقل عنوان IP إلى خادم آخر، قد تمنع السجلات القديمة الحركة لفترة.

  11. 11إيقاف بطاقة ثم تشغيلها

    ip link set enp1s0 down
    ip link set enp1s0 up

    لا تفعل هذا عبر SSH على البطاقة التي تستخدمها: ستفقد الاتصال.

  12. 12تغيير قيمة MTU لاختبار

    ip link set dev enp2s0 mtu 9000
    ip link show enp2s0 | grep -o 'mtu [0-9]*'
    mtu 9000

    الإطارات الكبيرة (jumbo frames) تفيد شبكات التخزين. كل السويتشات والخوادم في الطريق يجب أن تستخدم نفس MTU.

  13. 13الحصول على العناوين بصيغة JSON لسكربت

    ip -j addr show dev enp1s0 | jq -r '.[0].addr_info[] | select(.family=="inet") | .local'
    192.168.122.10

    مخرجات JSON لا تتغير بين الإصدارات، لذلك لا تتعطل السكربتات.

  14. 14النظر داخل نطاق أسماء الشبكة لحاوية

    ip netns list
    ip netns exec blue ip -br a

    الحاويات وبعض أدوات VPN تستخدم نطاقات الأسماء. كل نطاق له بطاقات ومسارات خاصة.

  15. 15متابعة تغييرات الشبكة مباشرة

    ip -t monitor address route

    يعرض كل تغيير في العناوين والمسارات مع الوقت. اضغط Ctrl+C للإيقاف. مفيد عندما يغيّر DHCP أو VPN المسارات.

انتبه

  • كل التغييرات بـ ip تضيع بعد إعادة التشغيل. وقد يكتب NetworkManager فوقها قبل ذلك.
  • الأمر ip link set DEV down عبر SSH على نفس البطاقة يقطع اتصالك.
  • الأمر ip addr flush dev DEV يحذف كل عناوين البطاقة.
  • اقرأ القناع: 192.168.122.10/24 و 192.168.122.10/32 مختلفان جدًا.

الملفات

/etc/iproute2/rt_tables
أسماء جداول التوجيه (يستخدمها التوجيه حسب السياسة).
/proc/net/dev
العدادات الخام لكل البطاقات (ما يعرضه ip -s link).
/sys/class/net/
مجلد لكل بطاقة شبكة فيه إعداداتها.

نصائح للحفظ

  • اقرأ الكائنات كأسئلة: a = أي عناوين؟ r = أي طريق؟ l = أي بطاقات؟ n = من بجانبي؟
  • ‏ip -br a و ip r هما أول أمرين في أي شبكة معطلة.
  • انظر بـ ip وغيّر بـ nmcli.