معرفی 17 دستور عیب یابی شبکه در لینوکس

سرور مجازی
معرفی 17 دستور عیب یابی شبکه در لینوکس
تاریخ انتشار: 4 ماه پیش تعداد بازدید: 363 دسته بندی: لینوکس

پیکربندی شبکه، تشخیص و عیب یابی کلی لینوکس بخش‌های ضروری مدیریت سیستم هستند. حتی برای توسعه دهنده‌ای که با سیستم‌های لینوکس کار می کند، دانش در مورد دستورات شبکه لینوکس یک مزیت اضافی است.
به طور خاص، اگر می‌خواهید یک مهندس DevOps شوید یا بخشی از SRE باشید، لازم است همه دستورات عیب‌یابی لینوکس را بدانید زیرا بخشی از فعالیت‌های روزانه شما خواهند بود.
 


بهترین دستورات شبکه لینوکس و عیب یابی کدامند؟

در زیر لیستی از دستورات عیب‌یابی بومی موجود است.

توضیحات دستور
برای بررسی و تنظیم نام میزبان سرور (هاست‌نیم) hostname
برای دریافت جزئیات DNS هاست host
بررسی می‌کند که آیا سرور ریموت با استفاده از پروتکل ICMP قابل دسترسی است. همچنین زمان رفت و برگشت بسته‌ها را نشان می‌دهد. ping
یک ابزار چند پلتفرمی که برای انتقال داده استفاده می‌شود. می‌توان از آن برای عیب یابی چندین مشکل شبکه استفاده کرد. curl
ابزاری برای دانلود فایل‌ها می‌تواند برای عیب یابی اتصالات پروکسی و کانکشن استفاده شود. wget
جایگزینی برای ifconfig که می‌توان از آن برای پیکربندی و بازیابی اطلاعات در اینترفیس‌های شبکه سیستم استفاده کرد ip
ابزاری برای مشاهده و مدیریت  arp cache arp
در درجه اول برای بررسی اتصالات و PID در پورت‌ها و سوکت‌های یونیکس استفاده می‌شود. ss/netstat
این ابزار از پروتکل ICMP استفاده می‌کند و hopهای مربوط به خواندن سرور مقصد را پیدا می‌کند. همچنین زمان بین hop را نشان می‌دهد. traceroute
mtr ترکیبی از ping و traceroute است. همچنین اطلاعات اضافی مانند هاست‌های میانی و پاسخگویی را فراهم می‌کند. mtr
کمک می‌کند تا رکوردهای DNS مرتبط با نام دامنه را دریافت کنید. dig
دستوری مشابه dig nslookup
ابزاری برای دیباگ سوکت‌های TCP/UDP nc
می‌توان از آن برای تست اتصال ریموت در پورت‌ها استفاده کرد telnet
کمک می‌کند تا تمام اطلاعات route table را دریافت کنید route
این ابزار کمک می‌کند تا پکت‌های شبکه را کپچر کرده و آنها را برای مشکلات شبکه تجزیه و تحلیل کنید. tcpdump
لیست تمام فایل‌های باز و اطلاعات فرآیندی که آن را باز کرده است. lsof


بیایید هر دستور را درک کنیم و ببینیم چگونه می توانیم از آن برای عیب یابی لینوکس استفاده کنیم.

نکته مهم: هر دستور یا ابزار ذکر شده در این مطلب دارای گزینه‌ها و پرچم‌های زیادی است. هر دستور یک صفحه man دارد و می‌توانید از آن برای شناسایی فلگ‌ها و گزینه‌های مورد نیاز برای مورد استفاده خود بهره ببرید. به عنوان مثال، برای دستور ip، فقط می‌توانید man ip را در ترمینال تایپ کنید تا تمام جزئیات مربوط به آن دستور را دریافت نمائید.

 

  1. Hostname

دستور Hostname برای مشاهده نام میزبان دستگاه و تنظیم نام میزبان استفاده می‌شود.


hostname

می توانید از دستور hostname برای تنظیم نام میزبان جدید برای دستگاه استفاده کنید. مثلا،


sudo hostname parsdev.com

اگر نام میزبان را با استفاده از دستور  hostnameتنظیم کنید، هنگامی که دستگاه را ریستارت می‌کنید، نام میزبان به نام مشخص شده در فایل hostname تغییر می‌کند  (etc/hostname/)

بنابراین اگر می‌خواهید نام میزبان را به طور دائم تغییر دهید، می توانید از فایل /etc/hosts یا فایل hostname مربوطه موجود در سرور استفاده کنید.

  • برای ماشین های اوبونتو، می توانید آن را در فایل /etc/hostname تغییر دهید.
  • برای RHEL، CentOS و Fedora می‌توانید آن را در فایل /etc/sysconfig/network تغییر دهید.

 

  1. host 

دستور Host برای جستجوی معکوس IP یا نام DNS است.
به عنوان مثال، اگر می‌خواهید یک DNS متصل به IP پیدا کنید، می‌توانید از دستورات host به صورت زیر استفاده کنید.


host 8.8.8.8

همچنین می توانید برای یافتن آدرس IP مرتبط با نام دامنه برعکس عمل کنید. مثلا،

host parsdev.com

 

  1. ping

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

جزئیات زیر را ارائه می دهد.

  1. بایت‌های ارسال و دریافت شد
  2. بسته‌های (پکت) ارسال، دریافت و گم شده (lost)
  3. زمان تقریبی رفت و برگشت (بر حسب میلی ثانیه)

دستور Ping دارای سینتکس زیر است.

ping


مثلا،

ping parsdev.com

برای پینگ کردن آدرس IP


ping 8.8.8.8

اگر می‌خواهید خروجی پینگ را بدون استفاده از ctrl+c  متوقف کنید، می‌توانید از پرچم «-c» با یک عدد مانند شکل زیر استفاده کنید.


ping -c 1 parsdev.com

  1. curl

ابزار Curl در درجه اول برای انتقال داده‌ها از یا به یک سرور استفاده می‌شود. با این حال، می‌توانید از آن برای عیب یابی شبکه هم استفاده کنید.
برای عیب یابی شبکه، curl  از پروتکل‌هایی مانند DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET و TFTP پشتیبانی می‌کند

به عنوان مثال، curl می تواند اتصال در پورت 22 را با استفاده از telnet بررسی کند


curl -v telnet://1.1.1.1:22

می توانید اتصال FTP را با استفاده از curl بررسی کنید.


curl ftp://parsdev.net 

می توانید اتصال وب سرور را نیز عیب یابی کنید.


curl http://parsdev.com -I

  1. wget

دستور wget در درجه اول برای واکشی صفحات وب استفاده می‌شود.
برای عیب یابی مشکلات شبکه نیز می‌توانید از wget استفاده کنید.
به عنوان مثال، می توانید اتصالات پروکسی سرور را با استفاده از wget عیب یابی کنید.


wget -e use_proxy=yes http_proxy= http://externalsite.com

با واکشی فایل‌ها می‌توانید بررسی کنید که آیا یک وب‌سایت فعال است یا خیر.


wget www.google.com

 

  1. ip (ifconfig)

دستور ip برای نمایش و دستکاری مسیرها و رابط‌های شبکه استفاده می‌شود. دستور ip نسخه جدیدتر ifconfig است.  ifconfig  در همه سیستم‌ها کار می‌کند، اما بهتر است به جای ifconfig از دستور ip استفاده کنید.

بیایید به چند نمونه از دستور ip نگاهی بیندازیم.

نمایش دستگاه‌های شبکه و پیکربندی

ip addr

می توانید از این دستور با pipes و grep استفاده کنید تا خروجی دانه بندی بیشتری مانند آدرس IP رابط eth0 به دست آورید. زمانی که روی ابزارهای اتوماسیون کار می‌کنید که نیاز به دریافت IP به صورت داینامیک دارند، بسیار مفید است.

دستور زیر آدرس IP رابط شبکه eth0 را دریافت می‌کند.


ip a | grep eth0  | grep "inet" | awk -F" " '{print $2}'


جزئیات یک اینترفیس خاص را دریافت کنید


ip a show eth0

می توانید جدول‌های مسیریابی را لیست کنید.

ip route 
ip route list

 

  1. arp

 ARP (Address Resolution Protocol) جدول کش آدرسهای IP شبکه‌های لوکال و آدرس‌های MAC را نشان می‌دهد که سیستم با آنها تعامل داشته است.

arp

خروجی نمونه،

ss (netstat) 

دستور ss جایگزینی برای netstat است. همچنان می‌توانید از دستور netstat در همه سیستم‌ها استفاده کنید.

با استفاده از دستور ss می توانید اطلاعات بیشتری نسبت به دستور netstat به دست آورید. دستور ss سریع است زیرا تمام اطلاعات را از یوزراسپیس کرنل دریافت می‌کند.

حالا اجازه دهید نگاهی به چند کاربرد دستور ss بیندازیم.

  • لیست کردن همه اتصالات

دستور ss تمام اتصالات سوکت TCP، UDP و Unix را در دستگاه شما لیست می‌کند.


خروجی دستور ss بزرگ خواهد بود بنابراین می توانید از ss | less برای ایجاد اسکرول در خروجی استفاده کنید.

  • فیلتر کردن سوکت‌های TCP، UDP و Unix

اگر می‌خواهید جزئیات سوکت TCP، UDP یا یونیکس را فیلتر کنید، از پرچم "-t" "-u" و "-x" با دستور "ss" استفاده کنید. تمام اتصالات ایجاد شده به پورت‌های خاص را نشان می دهد. اگر می خواهید هر دو پورت متصل و گوش دادن را با استفاده از "a" با پرچم خاص مانند شکل زیر لیست کنید.

ss -ta
ss -ua
ss -xa

 

  • لیست تمام پورت‌های listening

برای لیست کردن تمام پورت‌های لیسنینگ، از پرچم "-l" با دستور ss استفاده کنید. برای فهرست کردن سوکت های TCP، UDP یا UNIX خاص، از پرچم های "-t"، "-u" و "-x" با "-l" مانند شکل زیر استفاده کنید.

  • لیست همه ایجاد شده

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


برای فهرست کردن همه سوکت ها در حالت گوش دادن،

سرور مجازی یک ماشین مجازی کامل است که امکان دسترسی SSH طبق آموزش را به آن خواهید داشت.
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.

 

  1. تریس‌روت (traceroute)

اگر ابزار traceroute در سیستم یا سرور خود ندارید، می توانید آن را از مخزن اصلی نصب کنید.
traceroute یک ابزار عیب یابی شبکه است. با استفاده از traceroute می توانید تعداد پرش‌های (hops) مورد نیاز برای رسیدن یک بسته خاص به مقصد را بیابید. شما می توانید مسیر بسته را از سرور خود تا میزبان راه دور ردیابی کنید.

مثلا،


traceroute google.com

در اینجا خروجی است.


خروجی بالا تعداد پرش (12) را برای رسیدن به google.com از سرور نشان می‌دهد.

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

 

  1. mtr


ابزار mtr یک ابزار تشخیص شبکه برای عیب یابی تنگناهای  (bottlenecks) شبکه است. این عملکرد هر دو ping و traceroute را ترکیب می‌کند

به عنوان مثال، دستور زیر خروجی traceroute را در زمان واقعی نشان می دهد.


mtr google.com

در اینجا خروجی است.


گزارش mtr
می توانید با استفاده از پرچم –report گزارشی تولید کنید. وقتی گزارش mtr را اجرا می کنید، 10 بسته به مقصد ارسال می کند و گزارش را ایجاد می کند.


mtr -n --report google.com

  1. dig 

اگر وظیفه‌ای در ارتباط با جستجوی DNS دارید، می‌توانید از دستور «dig» برای پرس و جو از سرورهای DNS استفاده کنید.

dig twiter.com ANY

تمام رکوردهای DNS را با dig دریافت کنید
دستور زیر تمام رکوردهای DNS و اطلاعات TTL یک x.com را برمی گرداند

از +short برای دریافت خروجی بدون کلام استفاده کنید.

dig google.com ANY +short

با dig رکورد DNS خاص را دریافت کنید
به عنوان مثال، اگر می خواهید رکورد A را برای نام دامنه خاص دریافت کنید، می توانید از دستور dig استفاده کنید. +short اطلاعات را بدون کلام ارائه می کند

dig www.google.com A +short

به همین ترتیب، می توانید اطلاعات رکورد دیگر را به طور جداگانه با استفاده از دستورات زیر دریافت کنید.

جستجوی معکوس DNS با dig
می توانید با استفاده از دستور زیر یک جستجوی معکوس DNS با dig انجام دهید. 8.8.8.8 را با IP مورد نیاز جایگزین کنید

dig -x 8.8.8.8

 

  1. nslookup

ابزار Nslookup (Name Server Lookup) برای بررسی ورودی‌های DNS استفاده می‌شود. شبیه دستور dig است.

برای بررسی رکوردهای DNS یک دامنه می‌توانید از دستور زیر استفاده کنید.


nslookup google.com

همچنین می توانید با آدرس IP جستجوی معکوس انجام دهید.


nslookup 8.8.8.8

برای دریافت تمام رکوردهای DNS یک نام دامنه، می توانید از موارد زیر استفاده کنید.


nslookup -type=any google.com

به طور مشابه، می توانید برای رکوردهایی مانند mx، soa و غیره پرس و جو کنید

  1. nc (netcat)

دستور nc (netcat) به عنوان ارتش سوئیس از دستورات شبکه شناخته می شود.
با استفاده از nc، می توانید اتصال سرویسی را که روی یک پورت خاص اجرا می شود، بررسی کنید.
به عنوان مثال برای بررسی باز بودن پورت ssh می توانید از دستور زیر استفاده کنید.

nc -v -n 192.168.33.10 22

netcat همچنین می تواند برای انتقال داده از طریق TCP/UDP و اسکن پورت استفاده شود.

اسکن پورت در محیط های ابری توصیه نمی شود. شما باید از ارائه دهنده ابر درخواست کنید تا عملیات اسکن پورت را در محیط شما انجام دهد.

  1. telnet

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

telnet 10.4.5.5 22

 

  1. route

دستور route برای دریافت جزئیات جدول route برای سیستم شما و دستکاری آن استفاده می‌شود. اجازه دهید به چند مثال برای دستور route نگاه کنیم.

لیست تمام مسیرها
دستور Route را بدون هیچ آرگومان اجرا کنید تا تمام مسیرهای موجود در سیستم یا سرور خود را لست کنید.


اگر می خواهید خروجی کامل را به صورت عددی و بدون نام میزبان دریافت کنید، می توانید از پرچم "-n" با دستور route استفاده کنید.

  1. tcpdump

دستور tcpdump در درجه اول برای عیب یابی ترافیک شبکه استفاده می‌شود.

نکته: تجزیه و تحلیل خروجی دستور tcpdump نیاز به یادگیری دارد، بنابراین توضیح آن از حوصله این مقاله خارج است.

دستور tcpdump با رابط‌های شبکه سیستم کار می‌کند. بنابراین باید از امتیازات مدیریتی برای اجرای دستور استفاده کنید.

لیست تمام رابط های شبکه
از دستور زیر برای لیست کردن تمام اینترفیس‌ها استفاده کنید.


sudo  tcpdump --list-interfaces

گرفتن بسته ها در رابط خاص
برای دریافت dump بسته‌ها در یک رابط خاص، می توانید از دستور زیر استفاده کنید.
برای متوقف کردن دستور از ctrl + c استفاده نمائید


sudo tcpdump -i eth0

برای محدود کردن کپچر بسته، می‌توانید از پرچم -c با شماره استفاده کنید.


sudo tcpdump -i eth0 -c 10

ضبط بسته ها در همه رابط ها
برای گرفتن بسته ها در تمام اینترفیس ها، مطابق شکل زیر از هر پرچم استفاده کنید.


sudo tcpdump -i any

  1. lsof

lsof دستوری است که در عیب یابی روزانه لینوکس استفاده می‌شود. این دستور برای هر کسی که با سیستم‌های لینوکس کار می‌کند به همان اندازه مهم است.

برای لیست کردن همه فایل‌های باز، دستور lsof را اجرا کنید.


lsof

یکی از خطاهای رایج توسعه دهندگان و مهندسان DevOps، خطای Bind failed error: Address already in use است. با استفاده از دستور زیر می توانید شناسه فرآیند مرتبط با پورت را پیدا کنید. شما می توانید فرآیند را برای آزاد کردن پورت kill کنید.

 

lsof -i :8080

ابزارهای عیب یابی شبکه شخص ثالث
ابزارهای خط فرمان عیب یابی شبکه بیشتری از راه حل های شخص ثالث موجود است.
شما باید آنها را جداگانه نصب کنید و از آنها برای اهداف عیب یابی خود استفاده کنید. به دلیل رعایت موارد امنیتی، هر سازمانی به شما اجازه انجام این کار را نمی‌دهد.
با این حال، اگر مجبور به استفاده از ابزارهای شخص ثالث هستید، می توانید آنها را هم بررسی کنید.
ما برخی از اطلاعات ابزار را تحت دسته بندی های مختلف در جدول زیر سازماندهی کرده ایم.

نتیجه

در این مطلب به ابزارهای خط فرمان مهم لینوکس برای عیب یابی و پیکربندی شبکه پرداخته‌‎ایم.
اگر با نقش‌های مدیریت سیستم، DevOps یا SRE شروع می‌کنید، لازم است در مورد این ابزارها برای پشتیبانی از پروژه‌هایی که روی آنها کار می‌کنید، یاد بگیرید.
هر ابزار دارای عملکردهای زیادی است  و شما می توانید برای برآورده کردن نیازهای خود بیشتر بررسی کنید.
اگر فکر می‌کنید دستورات مهمی را از دست داده‌ایم، در بخش نظرات به ما اطلاع دهید.
 


اشتراک گذاری مقاله :

نظرتون برامون مهمه شما اولین نظر رو بنویسید