آموزش چک کردن پورت های فعال در لینوکس - وان سرور آکـادمی
آموزش چک کردن پورت های فعال در لینوکس
آموزش چک کردن پورت های فعال در لینوکس

آموزش چک کردن پورت های فعال در لینوکس

زمان تقریبی مطالعه: 4 دقیقه

آموزش چک کردن پورت های فعال در لینوکس

هنگام عیب یابی اتصال به شبکه یا موارد خاص برنامه ، اولین مواردی که باید بررسی کنید این است که در واقع چه پورت هایی در سیستم شما استفاده می شوند و کدام برنامه از یک پورت خاص استفاده می کند.

در این مقاله چگونگی پیدا کردن پورت های مورد استفاده در هر نرم افزار با استفاده از دستورات netstat ، ss و lsof را آموزش می دهیم. این دستورالعمل ها برای همه سیستم عامل های مبتنی بر لینوکس و یونیکس مانند 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 و نام فرآیند شنونده را نشان دهید. این اطلاعات فقط در صورت اجرای دستور به عنوان کاربر root یا 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 AddressLocal Address آدرس IP و شماره پورت که فرآیند آن را فراخوانی میکند.
  • PID/Program name – PID و نام فرآیند.

اگر می خواهید نتایج را فیلتر کنید از دستور grep استفاده کنید . به عنوان مثال ، برای یافتن آنچه در پورت TCP 22 فراخوانی میشود:

 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 :

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

چک کردن پورت های فراخوانی شده با lsof

lsof یک ابزار قدرتمند در خط فرمان است که اطلاعات مربوط به پرونده هایی را که توسط فرآیندها باز شده اند فراهم می کند.

در لینوکس ، همه چیز یک پرونده است. شما می توانید به عنوان پرونده ای که برای شبکه می نویسد ، به یک سوکت فکر کنید.

برای به دست آوردن لیستی از تمام درگاه های TCP فراخوانی شده با نوع lsof از دستور زیر استفاده کنید:

 sudo lsof -nP -iTCP -sTCP:LISTEN 

گزینه های استفاده شده به شرح زیر است:

  • -n – شماره پورت ها را به نام پورت تبدیل نکنید.
  • -p – نامهای میزبان را برطرف نکنید ، آدرسهای عددی را نشان دهید.
  • -iTCP -sTCP:LISTEN – فقط پرونده های شبکه را با لیست TCP فراخوانی کنید.
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 مراجعه کرده و درباره سایر گزینه های قدرتمند این ابزار مطالعه کنید.

نتیجه

ما چندین دستور به شما نشان داده ایم كه می توانید از آنها استفاده كنید تا بررسی كنید كه چه پورت هایی در سیستم شما استفاده می شود و همچنین نحوه پیدا کردن فرایند هایی که از یک پورت خاص استفاده می کنند را به شما آموزش دادیم.

با ثبت نظرات و سوالات خود به ما انرژی دهید.

اولین نفری باشید که از آموزشها و تخفیفهای ویژه با خبر میشوید 😉
با عضویت در خبرنامه از 80 درصد تخفیف بهره مند شوید

Rate this post