6.3 הכלי nc הרצאה
פקודת nc (Netcat) בלינוקס¶
הפקודה nc (או Netcat) היא כלי חזק וגמיש שמספק פתרונות רבים בעבודת רשת. הפקודה מאפשרת לבצע חיבורים בין מחשבים, לשלוח ולקבל נתונים בקלות, ולבצע מגוון רחב של פעולות כמו אקטים של שרתים ולקוחות רשת, אבחון תקלות רשת, וביצוע בדיקות רשת פשוטות.
מה זה nc?¶
הפקודה nc משמשת בעיקר ככלי לשליחת והאזנה על חיבורים ב-RPC, או למעשה כל תקשורת בין מחשבים באמצעות פרוטוקול TCP/UDP. ניתן להשתמש בה לבדוק שירותים ברשת, להעביר קבצים, לבדוק חיבורים פתוחים או ליצור שרתים ולקוחות פשוטים לרשת.
דוגמאות שימוש בסיסיות¶
1. חיבור לשרת TCP (Client)¶
הפקודה nc יכולה לשמש כלקוח שמתחבר לשרת רשת. לדוגמה, אם יש לנו שרת שמאזין על פורט 80, נוכל להתחבר אליו באמצעות הפקודה הבאה:
לאחר שנחבר לשרת, נוכל לשלוח בקשות HTTP ולהתנסות בתקשורת ישירה:
הפקודה nc תחזיר את התשובה שהשרת שלח בחזרה.
2. יצירת שרת TCP (Server)¶
nc יכולה גם לפעול כשרת שמאזין על פורט מסוים וממתין לחיבורים. לדוגמה, על מנת להקים שרת שמאזין על פורט 12345, נשתמש בפקודה:
לאחר מכן, כל לקוח שיתחבר לשרת הזה יוכל לשלוח נתונים ולדבר עם השרת דרך חיבור TCP.
3. העברת קבצים בין מחשבים¶
הפקודה nc מאפשרת להעביר קבצים בקלות בין שני מחשבים, על ידי יצירת חיבור ישיר. נניח שיש לנו מחשב שמאזין על פורט 12345, והמחשב השני מעוניין לשלוח קובץ.
- במחשב השרת (שמאזין לקבלת הקובץ):
- במחשב הלקוח (ששולח את הקובץ):
בזמן שהחיבור פעיל, הקובץ file_to_send.txt יישלח מהמחשב הלקוח ויתקבל כקובץ received_file.txt במחשב השרת.
4. בדיקת חיבור לפורט¶
הפקודה nc שימושית מאוד לבדיקת אם פורט מסוים פתוח בשרת. לדוגמה, כדי לבדוק אם פורט 22 פתוח בשרת example.com (פורטל SSH):
הדגל -z מורה ל-nc לבדוק רק אם הפורט פתוח מבלי לשלוח נתונים, והדגל -v מציין הדפסות מפורטות (verbose). אם הפורט פתוח, תקבלו תשובה כמו:
5. יצירת חיבור UDP¶
הפקודה nc תומכת גם בפרוטוקול UDP, ואפשר להשתמש בה כדי לשלוח נתונים בפרוטוקול זה. לדוגמה, נוכל לשלוח נתונים על פורט 12345 באמצעות UDP:
- במחשב השרת (שמאזין על פורט 12345):
- במחשב הלקוח (ששולח נתונים לשרת):
במחשב השרת, נוכל לראות את הנתונים שהתקבלו: "Hello, server!".
דגלים שימושיים בפקודה nc¶
-l: מאזין לפורט מסוים (שרת).-v: הדפסה מפורטת של מידע על החיבור.-z: סריקת פורטים ללא שליחת נתונים.-u: שימוש בפרוטוקול UDP.-w: הגדרת זמן המתנה (timeout) לחיבור.-n: מניעת פתרון שמות DNS, שימוש בכתובת ה-IP ישירות.-p: הגדרת פורט מקומי.-c: שליחת פקודות באופן אוטומטי (לא תמיד נתמך).
דוגמאות שימוש מתקדמות¶
1. סריקת פורטים (Port Scanning)¶
בעזרת nc אפשר לבצע סריקה של פורטים בשרת, ובכך לבדוק אילו פורטים פתוחים. לדוגמה, נוכל לסרוק את הפורטים 80, 443 ו-22:
הפקודה תציג את הפורטים הפתוחים בשרת example.com.
2. חיבור למספר פורטים¶
אפשר להתחבר ולשלוח נתונים למספר פורטים בעזרת פקודה אחת. לדוגמה, שליחה לשרת על פורט 8080:
נוכל לשלוח את המידע הזה למספר פורטים על ידי ציון הפורטים הרצויים:
3. חיבור לפרוקסי (Proxy)¶
באמצעות nc אפשר להתחבר לשרתים דרך פרוקסי. לדוגמה, חיבור לשרת דרך פרוקסי HTTP:
הדגל -X מציין את סוג החיבור (כמו connect), ו--x מציין את כתובת הפרוקסי והפורט.
סיכום¶
הפקודה nc היא כלי עוצמתי ונפוץ למנהלי רשת ומפתחים. בעזרתה ניתן לבצע חיבורים רשתיים, להעביר קבצים, לבדוק חיבורים, לסרוק פורטים ולבצע הרבה פעולות אחרות בצורה פשוטה ויעילה. הכלי מציע גמישות רבה בתקשורת רשת ומספק הרבה אפשרויות לניהול רשת ולפתרון בעיות רשת.