לדלג לתוכן

6.3 הכלי nc הרצאה

פקודת nc (Netcat) בלינוקס

הפקודה nc (או Netcat) היא כלי חזק וגמיש שמספק פתרונות רבים בעבודת רשת. הפקודה מאפשרת לבצע חיבורים בין מחשבים, לשלוח ולקבל נתונים בקלות, ולבצע מגוון רחב של פעולות כמו אקטים של שרתים ולקוחות רשת, אבחון תקלות רשת, וביצוע בדיקות רשת פשוטות.

מה זה nc?

הפקודה nc משמשת בעיקר ככלי לשליחת והאזנה על חיבורים ב-RPC, או למעשה כל תקשורת בין מחשבים באמצעות פרוטוקול TCP/UDP. ניתן להשתמש בה לבדוק שירותים ברשת, להעביר קבצים, לבדוק חיבורים פתוחים או ליצור שרתים ולקוחות פשוטים לרשת.


דוגמאות שימוש בסיסיות

1. חיבור לשרת TCP (Client)

הפקודה nc יכולה לשמש כלקוח שמתחבר לשרת רשת. לדוגמה, אם יש לנו שרת שמאזין על פורט 80, נוכל להתחבר אליו באמצעות הפקודה הבאה:

nc example.com 80

לאחר שנחבר לשרת, נוכל לשלוח בקשות HTTP ולהתנסות בתקשורת ישירה:

GET / HTTP/1.1
Host: example.com

הפקודה nc תחזיר את התשובה שהשרת שלח בחזרה.

2. יצירת שרת TCP (Server)

nc יכולה גם לפעול כשרת שמאזין על פורט מסוים וממתין לחיבורים. לדוגמה, על מנת להקים שרת שמאזין על פורט 12345, נשתמש בפקודה:

nc -l 12345

לאחר מכן, כל לקוח שיתחבר לשרת הזה יוכל לשלוח נתונים ולדבר עם השרת דרך חיבור TCP.

3. העברת קבצים בין מחשבים

הפקודה nc מאפשרת להעביר קבצים בקלות בין שני מחשבים, על ידי יצירת חיבור ישיר. נניח שיש לנו מחשב שמאזין על פורט 12345, והמחשב השני מעוניין לשלוח קובץ.

  • במחשב השרת (שמאזין לקבלת הקובץ):
nc -l 12345 > received_file.txt
  • במחשב הלקוח (ששולח את הקובץ):
nc example.com 12345 < file_to_send.txt

בזמן שהחיבור פעיל, הקובץ file_to_send.txt יישלח מהמחשב הלקוח ויתקבל כקובץ received_file.txt במחשב השרת.

4. בדיקת חיבור לפורט

הפקודה nc שימושית מאוד לבדיקת אם פורט מסוים פתוח בשרת. לדוגמה, כדי לבדוק אם פורט 22 פתוח בשרת example.com (פורטל SSH):

nc -zv example.com 22

הדגל -z מורה ל-nc לבדוק רק אם הפורט פתוח מבלי לשלוח נתונים, והדגל -v מציין הדפסות מפורטות (verbose). אם הפורט פתוח, תקבלו תשובה כמו:

example.com [192.168.1.1] 22 open

5. יצירת חיבור UDP

הפקודה nc תומכת גם בפרוטוקול UDP, ואפשר להשתמש בה כדי לשלוח נתונים בפרוטוקול זה. לדוגמה, נוכל לשלוח נתונים על פורט 12345 באמצעות UDP:

  • במחשב השרת (שמאזין על פורט 12345):
nc -lu 12345
  • במחשב הלקוח (ששולח נתונים לשרת):
echo "Hello, server!" | nc -u example.com 12345

במחשב השרת, נוכל לראות את הנתונים שהתקבלו: "Hello, server!".


דגלים שימושיים בפקודה nc

  • -l: מאזין לפורט מסוים (שרת).
  • -v: הדפסה מפורטת של מידע על החיבור.
  • -z: סריקת פורטים ללא שליחת נתונים.
  • -u: שימוש בפרוטוקול UDP.
  • -w: הגדרת זמן המתנה (timeout) לחיבור.
  • -n: מניעת פתרון שמות DNS, שימוש בכתובת ה-IP ישירות.
  • -p: הגדרת פורט מקומי.
  • -c: שליחת פקודות באופן אוטומטי (לא תמיד נתמך).

דוגמאות שימוש מתקדמות

1. סריקת פורטים (Port Scanning)

בעזרת nc אפשר לבצע סריקה של פורטים בשרת, ובכך לבדוק אילו פורטים פתוחים. לדוגמה, נוכל לסרוק את הפורטים 80, 443 ו-22:

nc -zv example.com 80 443 22

הפקודה תציג את הפורטים הפתוחים בשרת example.com.

2. חיבור למספר פורטים

אפשר להתחבר ולשלוח נתונים למספר פורטים בעזרת פקודה אחת. לדוגמה, שליחה לשרת על פורט 8080:

echo "Hello, server!" | nc example.com 8080

נוכל לשלוח את המידע הזה למספר פורטים על ידי ציון הפורטים הרצויים:

echo "Hello, server!" | nc example.com 8080 9090

3. חיבור לפרוקסי (Proxy)

באמצעות nc אפשר להתחבר לשרתים דרך פרוקסי. לדוגמה, חיבור לשרת דרך פרוקסי HTTP:

nc -X connect -x proxy.example.com:8080 example.com 80

הדגל -X מציין את סוג החיבור (כמו connect), ו--x מציין את כתובת הפרוקסי והפורט.


סיכום

הפקודה nc היא כלי עוצמתי ונפוץ למנהלי רשת ומפתחים. בעזרתה ניתן לבצע חיבורים רשתיים, להעביר קבצים, לבדוק חיבורים, לסרוק פורטים ולבצע הרבה פעולות אחרות בצורה פשוטה ויעילה. הכלי מציע גמישות רבה בתקשורת רשת ומספק הרבה אפשרויות לניהול רשת ולפתרון בעיות רשת.