ذكري المظهر

كيفية التحقق من منافذ الاستماع في نظام التشغيل Linux (المنافذ قيد الاستخدام)

CS50 2018 - Lecture 5 - HTTP, HTML, CSS

CS50 2018 - Lecture 5 - HTTP, HTML, CSS

جدول المحتويات:

Anonim

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

تشرح هذه المقالة كيفية معرفة الخدمات التي تستمع إليها حول المنافذ التي تستخدم أوامر netstat و ss و lsof . تنطبق التعليمات على جميع أنظمة التشغيل المستندة إلى Linux و Unix مثل macOS.

ما هو ميناء الاستماع

يتم تحديد منفذ الشبكة برقمه وعنوان IP المرتبط ونوع بروتوكول الاتصال مثل TCP أو UDP.

منفذ الاستماع هو منفذ شبكة يستمع إليه أحد التطبيقات أو العمليات ، ويكون بمثابة نقطة نهاية للاتصال.

يمكن فتح أو إغلاق كل منفذ استماع (تصفيته) باستخدام جدار الحماية. بعبارات عامة ، المنفذ المفتوح هو منفذ شبكة يقبل الحزم الواردة من المواقع البعيدة.

لا يمكنك الحصول على خدمتين تستمعان إلى نفس المنفذ على نفس عنوان IP.

على سبيل المثال ، إذا كنت تقوم بتشغيل خادم ويب Apache يستمع إلى المنفذين 80 و 443 وتحاول تثبيت Nginx ، فسوف يفشل الإصدار الأحدث في البداية لأن منافذ HTTP و HTTPS قيد الاستخدام بالفعل.

تحقق من منافذ الاستماع مع netstat

netstat هي أداة سطر أوامر يمكنها توفير معلومات حول اتصالات الشبكة.

لسرد جميع منافذ TCP أو UDP التي يتم الاستماع إليها ، بما في ذلك الخدمات التي تستخدم المنافذ وحالة المقبس ، استخدم الأمر التالي:

sudo netstat -tunlp

الخيارات المستخدمة في هذا الأمر لها المعنى التالي:

  • -t - إظهار منافذ TCP. -u - إظهار منافذ UDP. -n - إظهار العناوين الرقمية بدلاً من حل المضيفين. -l - إظهار منافذ الاستماع فقط. -p - إظهار PID واسم عملية المستمع. يتم عرض هذه المعلومات فقط إذا قمت بتشغيل الأمر كمستخدم الجذر أو sudo.

سيظهر الإخراج بشيء من هذا القبيل:

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 929/master tcp6 0 0:::3306:::* LISTEN 534/mysqld tcp6 0 0:::80:::* LISTEN 515/apache2 tcp6 0 0:::22:::* LISTEN 445/sshd tcp6 0 0:::25:::* LISTEN 929/master tcp6 0 0:::33060:::* LISTEN 534/mysqld udp 0 0 0.0.0.0:68 0.0.0.0:* 966/dhclient

الأعمدة المهمة في حالتنا هي:

  • Proto - البروتوكول الذي يستخدمه المقبس. Local Address - Local Address IP ورقم المنفذ الذي تستمع إليه العملية. PID/Program name - معرف العملية واسم العملية.

sudo netstat -tnlp | grep:22

يُظهر الإخراج أنه على هذا الجهاز ، يتم استخدام منفذ 22 من قبل خادم SSH:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp6 0 0:::22:::* LISTEN 445/sshd

إذا كان الإخراج فارغًا فهذا يعني أنه لا يوجد شيء يصغي على المنفذ.

يمكنك أيضًا تصفية القائمة بناءً على معايير ، على سبيل المثال ، PID ، البروتوكول ، الحالة ، وما إلى ذلك.

netstat عفا عليه الزمن ويتم استبداله بـ ss و ip ، ولكن لا يزال من أكثر الأوامر استخدامًا للتحقق من اتصالات الشبكة.

تحقق من منافذ الاستماع باستخدام ss

ss هو netstat الجديد. يفتقر إلى بعض ميزات netstat ولكنه يكشف عن مزيد من حالات TCP وهو أسرع قليلاً. خيارات الأوامر هي نفسها في الغالب ، لذا فإن الانتقال من netstat إلى ss ليس صعبًا.

للحصول على قائمة بجميع منافذ الاستماع باستخدام ss اكتب:

sudo ss -tunlp

الإخراج هو نفسه تقريبا الذي أبلغ عنه netstat :

State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd", pid=445, fd=3)) LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master", pid=929, fd=13)) LISTEN 0 128 *:3306 *:* users:(("mysqld", pid=534, fd=30)) LISTEN 0 128 *:80 *:* users:(("apache2", pid=765, fd=4), ("apache2", pid=764, fd=4), ("apache2", pid=515, fd=4)) LISTEN 0 128:22:* users:(("sshd", pid=445, fd=4)) LISTEN 0 100:25:* users:(("master", pid=929, fd=14)) LISTEN 0 70 *:33060 *:* users:(("mysqld", pid=534, fd=33))

تحقق منافذ الاستماع مع lsof

lsof هي أداة مساعدة قوية لسطر الأوامر توفر معلومات حول الملفات المفتوحة بواسطة العمليات.

في Linux ، كل شيء ملف. يمكنك التفكير في المقبس كملف يكتب على الشبكة.

للحصول على قائمة بجميع منافذ TCP للاستماع بنوع lsof :

sudo lsof -nP -iTCP -sTCP:LISTEN

الخيارات المستخدمة هي كما يلي:

  • -n - لا تقم بتحويل أرقام المنافذ إلى أسماء المنافذ. -p - لا تحل أسماء المضيفين ، اعرض العناوين الرقمية. -iTCP -sTCP:LISTEN - إظهار ملفات الشبكة فقط مع حالة TCP LISTEN.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 445 root 3u IPv4 16434 0t0 TCP *:22 (LISTEN) sshd 445 root 4u IPv6 16445 0t0 TCP *:22 (LISTEN) apache2 515 root 4u IPv6 16590 0t0 TCP *:80 (LISTEN) mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN) mysqld 534 mysql 33u IPv6 19973 0t0 TCP *:33060 (LISTEN) apache2 764 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) apache2 765 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) master 929 root 13u IPv4 19637 0t0 TCP *:25 (LISTEN) master 929 root 14u IPv6 19638 0t0 TCP *:25 (LISTEN)

معظم أسماء أعمدة المخرجات ذاتية التفسير:

  • COMMAND ، PID ، USER - الاسم ، PID والمستخدم الذي يقوم بتشغيل البرنامج المرتبط بالمنفذ. NAME - رقم المنفذ.

للعثور على العملية التي تستمع إليها على منفذ معين ، على سبيل المثال ، المنفذ 3306 الذي تستخدمه:

sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

يُظهر الإخراج أن المنفذ 3306 يستخدمه خادم MySQL:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN)

لمزيد من المعلومات ، تفضل بزيارة صفحة lsof man واقرأ جميع الخيارات القوية الأخرى لهذه الأداة.

استنتاج

لقد أوضحنا لك العديد من الأوامر التي يمكنك استخدامها للتحقق من المنافذ المستخدمة على نظامك ، وكيفية العثور على العملية التي تستمع إليها على منفذ معين.

طرفية