לדלג לתוכן

6.5 הכלי socat הרצאה

מה זה Socat?

הכלי Socat (SOcket CAT) הוא כלי מתקדם להעברת מידע דרך חיבורי רשת, חיבורי סוקטים, קבצים, התקני מערכת ועוד. הוא מאפשר להעביר מידע בין שני endpoints (נקודות קצה) בצורה גמישה. זהו כלי רב-תכליתי שיכול לשמש כתחליף מתקדם יותר ל-netcat (nc), תוך תמיכה בפרוטוקולים מגוונים, הצפנה, יצירת פרוקסי ועוד.


התקנת Socat

ברוב הפצות ה-Linux socat זמין במאגרים וניתן להתקינו בקלות:

  • Ubuntu/Debian:
sudo apt update && sudo apt install socat
  • CentOS/RHEL:
sudo yum install socat
  • Arch Linux:
sudo pacman -S socat

לאחר ההתקנה, ניתן לבדוק שהכלי עובד:

socat -h

שימושים נפוצים ב-socat

הכלי Socat תומך במגוון רחב של חיבורים, כולל:

  • TCP/UDP (חיבורי רשת)
  • טינולים
  • העברת קבצים
  • OpenSSL (TLS/SSL)
  • Shell execution

להלן שימושים נפוצים ודוגמאות:


1. יצירת חיבור TCP בסיסי (Client-Server)

שרת TCP מאזין

socat TCP-LISTEN:8080,fork -
  • TCP-LISTEN:8080 – מאזין לחיבורים נכנסים על פורט 8080.
  • fork – מאפשר חיבורים מרובים על-ידי יצירת תהליך חדש לכל חיבור.
  • - – פלט למסך.

לקוח שמתחבר לשרת ושולח הודעה

echo "Hello, Server!" | socat - TCP:127.0.0.1:8080
  • שולח את הטקסט "Hello, Server!" לשרת.

2. העברת קובץ ממחשב אחד לשני

שרת (מאזין ומקבל את הקובץ)

socat TCP-LISTEN:9000,reuseaddr OPEN:received_file.txt,creat,trunc,write
  • מאזין על פורט 9000 ומקבל נתונים, אותם הוא שומר בקובץ received_file.txt.

לקוח (שולח קובץ לשרת)

socat -u FILE:myfile.txt TCP:192.168.1.100:9000
  • שולח את תוכן myfile.txt למחשב בכתובת 192.168.1.100 על פורט 9000.

3. יצירת טינול להעברת חיבורים

טינול שמעביר חיבורים לשרת אחר

socat TCP-LISTEN:8080,fork TCP:example.com:80
  • כל חיבור ל-localhost:8080 יועבר ל-example.com:80.

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

שרת UDP מאזין

socat UDP-LISTEN:5000,fork -
  • מאזין לחיבורים ב-UDP על פורט 5000.

לקוח שולח הודעה לשרת

echo "UDP Test" | socat - UDP:127.0.0.1:5000
  • שולח את המידע דרך UDP לשרת.

5. יצירת חיבור עם הצפנת OpenSSL

שרת (מאזין עם SSL)

socat OPENSSL-LISTEN:4433,reuseaddr,cert=server-cert.pem,cafile=ca-cert.pem,verify=0 -
  • מאזין עם SSL/TLS על פורט 4433.
  • משתמש בתעודת SSL (server-cert.pem).

לקוח שמתחבר לשרת עם SSL

socat - OPENSSL:192.168.1.100:4433,verify=0
  • מתחבר לשרת בצורה מאובטחת.

6. יצירת שרת Telnet פשוט

socat TCP-LISTEN:2323,fork EXEC:/bin/bash
  • מאזין לחיבורי Telnet ומספק גישה ל-shell.

7. יצירת TUN/TAP Interface ל-VPN

socat TUN:192.168.1.1/24,up TCP-LISTEN:9000
  • יצירת ממשק רשת וירטואלי (TUN/TAP).

8. שמירת נתונים שמתקבלים מקליינט בקובץ

socat TCP-LISTEN:7000,reuseaddr - | tee output.txt
  • שומר את כל הנתונים המתקבלים בפורט 7000 בקובץ output.txt.

9. שליחת הודעה לשרת Web

echo -e "GET / HTTP/1.1\nHost: example.com\n\n" | socat - TCP:example.com:80
  • שולח בקשת HTTP GET ל-example.com.