Linux 命令 socat - netcat 實用程序的出色替代品
Socat或SOcket CAT是一個基于 Linux 命令行/終端的實用程序,用于在兩個雙向字節流之間建立和傳輸數據。socat命令可以在多種場景下實現,主要有兩個原因:
- 數據接收器和數據源;不同類型并存在于一個大集合中,可用于構造流。
- 這些構造的流可以與許多地址選項相關聯。
socat命令可以比作與TCP和UDP協議綁定的netcat 實用程序。但是,socat比netcat具有安全優勢(chrooting),并且還支持設備、管道、文件、SSL、SOCKS4 客戶端、TCP 套接字、代理 CONNECT、UNIX 套接字等。
Socat 命令
為了更熟悉這個 Linux 命令行實用程序,我們需要列出它的一些實際應用。以下要點總結了一些流行的 socat 實用程序應用程序:
- 安全測試和研究。
- 面向 TCP 的程序進行串行線路重定向。
- 作為 UNIX 套接字 shell 接口。
- 建立 su 和 chroot 安全環境以在共享網絡連接上執行服務器/客戶端 Shell 腳本。
- 不同計算機上串行線路的邏輯連接。
- IP6 relay。
- 通過攻擊弱防火墻進行安全測試。
- TCP 端口轉發。
在 Linux 中安裝 Socat 實用程序
如果您的 Linux 操作系統發行版上尚未安裝基于socat Linux 命令行的實用程序,請參考您正在使用的 Linux 操作系統發行版參考以下安裝命令之一:
$ sudo apt install socat [在 Debian, Ubuntu 和 Mint 上]
$ sudo yum install socat [在 RHEL/CentOS/Fedora 和 Rocky Linux/AlmaLinux 上]
$ sudo emerge -a net-misc/socat [在 Gentoo Linux 上]
$ sudo pacman -S socat [在 Arch Linux 上]
$ sudo zypper install socat [在 OpenSUSE 上]
正如已經討論過的,socat是netcat實用程序的出色替代品,因為它具有強大和高級的功能。我們現在應該能夠通過 Linux 命令行環境看到一些使用socat實用程序的實際示例。其使用語法如下:?
# socat [options] <address> <address>
確保您在 Linux 機器上擁有 sudoer/root 用戶權限。
1、監聽特定端口?
我們可以指示socat通過TCP協議監聽特定端口,例如80 ,并通過STDOUT打印出任何相關的發現,如下所示。
$ sudo socat TCP4-LISTEN:80 STDOUT
TCP可以切換到其他不同的值,例如TCP6、TCP6-LISTEN和TCP4。
2. 連接到遠程服務器的端口?
要連接到與端口關聯的服務器,我們將運行:
$ sudo socat – TCP4:linuxmi.com:80
3. TCP 端口轉發器?
它也是一個有效的TCP端口轉發器。例如,端口81連接可以轉發到端口80,如下所示:對于單個連接。
$ sudo socat TCP4-LISTEN:81 TCP4:192.168.122.1:80
對于多個連接。
$ sudo socat TCP4-LISTEN:81,fork,reuseaddr TCP4:TCP4:192.168.122.1:80
您可以使用鍵盤組合取消端口轉發??[Ctrl]+c?
?。
4.監聽本地端口?
監聽本地端口www。
$ sudo socat TCP4-LISTEN:www TCP4:linuxmi.com:www
5. 監聽遠程套接字上的特定端口?
如果我們想監聽一個特定的端口,接受它的連接并將它轉發到一個遠程的 Unix 套接字,例如 mysql.sock,我們會以如下方式實現 socat 命令:
$ sudo socat TCP-LISTEN:3309,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock
6. 基于網絡的消息收集器?
這個簡單的例子演示了基于網絡的消息收集器的實現。客戶端連接到端口 3354 成功后,文件/tmp/testing.log通過新生成的子進程附加客戶端發送的數據。當發現此文件不存在時, socat會自動創建此文件。
$ sudo socat -u TCP4-LISTEN:3354,reuseaddr,fork OPEN:/tmp/testing.log,creat,append
通過上面討論的幾個示例以及進一步參考socat手冊頁,我們應該能夠深入探索它。
$man socat