Linux网络命令:网络工具socat详解

news2024/11/16 11:48:20

目录

一、概述

二、基本用法

1、基本语法

2、常用选项

3、获取帮助

三、用法示例

1. 监听 TCP 端口并回显接收到的数据

2. 通过 TCP 端口转发数据到 UNIX 套接字

3. 将文件内容发送到 TCP 端口:

4. 使用伪终端进行串行通信  

5、启动一个TCP服务器

6、建立一个TCP连接

7、读取文件并发送到网络

8、从网络接收数据并保存到文件

四、高级用法

1、使用 EXEC 参数执行脚本或程序

2、设置超时和重试:

3、使用 UDP 协议:

4、绑定到特定的网络接口:

5、启用 SSL/TLS 加密:

6、启用代理服务器:

五、功能和用途

1、主要功能

(1)数据转发

(2)网络连接

(3)流量重定向

(4)数据转换

(5)代理功能

2、常见用途

3、特性

(1)协议支持

(2)数据通道

(3)安全性

(4)灵活性

六、安装

1、包管理器安装

(1)安装命令

(2)实际操作

2、编译安装

七、其他

1、注意事项

2、安全事项


一、概述

        socat 是一个多功能的网络工具,用于在 Linux 和 Unix 系统中进行双向数据传输。它的名字来源于 "Socket CAT",表示它可以像 cat 命令那样处理数据流,但主要针对网络套接字和其他数据源和目的地。

        它可以被看作是 netcat(nc)的超级集,因为它不仅支持 TCP/UDP 流,还支持多种其他类型的连接,如 UNIX 域套接字、管道、文件、命名管道、串行端口、伪终端(pty)、OpenSSL 加密的套接字等。socat 的强大之处在于它能够几乎在任意两个数据流之间创建双向通道,从而提供了极高的灵活性和强大的功能。

        socat是由 Donnie Berkholz 开发的,并且是开源的。

二、基本用法

1、基本语法

        socat 的基本语法如下:

socat [options] <address> <address>

        其中 <address> 指定了数据传输的源和目标。<address> 的格式由协议类型、地址和其他可能的选项组成,例如:

         TCP-LISTEN:8080,fork

        表示监听 TCP 端口 8080,并对每个连接创建一个新的子进程。

2、常用选项

- -d 或 --debug:增加调试信息的输出。

- -v 或 --verbose:增加输出的详细程度。

- -t 或 --timeout:设置超时时间。

- -u:使用 UNIX 域套接字而不是 TCP/IP。

- TCP-LISTEN:<port>[,options]:监听 TCP 端口。

- TCP:<host>:<port>:连接到指定的 TCP 主机和端口。

- UNIX-LISTEN:<path>[,options]:监听 UNIX 域套接字。

- UNIX:<path>:连接到 UNIX 域套接字。

- EXEC:<command>:执行命令,并将其标准输入输出作为数据通道。

- PIPE:使用管道。

- FILE:<filename>:使用文件作为数据通道。

- PTY:创建伪终端。

3、获取帮助

       在linux的命令行输入:

         socat -h

       如下图所示:

三、用法示例

1. 监听 TCP 端口并回显接收到的数据

      socat TCP-LISTEN:12345,fork EXEC:/bin/cat  

        这条命令监听 TCP 端口 12345,并对每个连接执行 cat 命令,将接收到的数据回显回去。

2. 通过 TCP 端口转发数据到 UNIX 套接字

  

   socat TCP-LISTEN:12345,fork UNIX-CONNECT:/tmp/mysocket

        监听 TCP 端口 12345,并将接收到的数据转发到 UNIX 套接字 /tmp/mysocket。

3. 将文件内容发送到 TCP 端口:

    socat FILE:/path/to/file TCP:example.com:12345

        将文件 /path/to/file 的内容发送到 example.com 的 TCP 端口 12345。

4. 使用伪终端进行串行通信  

   socat PTY,link=/dev/ttyS0 TCP:example.com:12345

        创建一个伪终端,并将其链接到 /dev/ttyS0(这通常用于模拟串行端口),然后将数据通过 TCP 发送到 example.com 的 12345 端口。注意,这里 /dev/ttyS0 只是一个示例,实际使用时可能需要不同的设备文件。

5、启动一个TCP服务器

        socat TCP-LISTEN:1234,reuseaddr,fork TCP:example.com:80

        这条命令会启动一个 TCP 服务器,监听本地端口 1234,并且将接收到的数据转发到目标服务器 example.com 的端口 80。

6、建立一个TCP连接

socat TCP:example.com:80,resolve,waitport=80 TCP:another.example.com:1234

        这条命令会建立一个到 example.com 端口 80 的 TCP 连接,并将数据转发到另一个服务器 another.example.com 的端口 1234。

7、读取文件并发送到网络

        socat - TCP:example.com:80 < /path/to/file

这条命令会读取本地文件 /path/to/file 并将其内容发送到 example.com 的端口 80。

8、从网络接收数据并保存到文件

socat TCP:example.com:80 - | socat - file:/path/to/save/file

        这条命令会从 example.com 的端口 80 接收数据,并通过管道将其保存到 /path/to/save/file 文件中。

四、高级用法

        socat 的强大之处在于它支持多种选项和参数,可以用来定制网络连接和数据转换。以下是一些高级用法:

1、使用 EXEC 参数执行脚本或程序

        在linux命令行输入如下命令:

    socat TCP:example.com:80,exec=/bin/sh

 

2、设置超时和重试:

         在linux命令行输入如下命令:

  socat TCP:example.com:80,connect-timeout=5,retries=3

 

3、使用 UDP 协议:

         在linux命令行输入如下命令:

        socat UDP4-DATAGRAM:1234->192.168.1.1:1234

 

4、绑定到特定的网络接口:

         在linux命令行输入如下命令:

          socat TCP-LISTEN:1234,interface=eth0

 

5、启用 SSL/TLS 加密:

         在linux命令行输入如下命令:

          socat TCP:example.com:443,cert=/path/to/cert.pem,key=/path/to/key.pem

 

6、启用代理服务器:

         在linux命令行输入如下命令:

          socat - PROXY:http=example.com:8080,socks5=example.com:1080

五、功能和用途

1、主要功能

(1)数据转发

        socat 可以在不同的网络协议和接口之间转发数据。例如,它可以将 TCP 数据转发到 UDP 接口,或者将数据从文件系统转发到网络。

(2)网络连接

        socat 可以用来建立网络连接,支持多种连接模式,如同步和异步。

(3)流量重定向

        可以将网络流量重定向到文件、另一个网络接口或者标准输出。

(4)数据转换

        在数据传输过程中,socat 可以将数据进行转换,如加密、压缩、编解码等。

(5)代理功能

        可以用作 SOCKS5 代理服务器,支持客户端和服务器模式。

2、常见用途

        - 端口转发:例如,将本地端口的数据转发到远程服务器的某个端口。

        - 协议桥接:在不同类型的协议之间建立桥梁,比如 UDP 到 TCP。

        - 数据捕获和分析:将网络数据重定向到文件或分析工具。

        - 服务测试:模拟客户端或服务器以测试网络服务的响应。

3、特性

(1)协议支持

        socat 支持多种协议,包括 TCP、UDP、SSL/TLS、SOCKS4、UNIX 域套接字等。

(2)数据通道

        它可以在两个不同的数据通道之间建立连接,这些通道可以是网络端口、本地文件、管道、设备文件等。

(3)安全性

        相比于 netcat,socat 提供了更多的安全选项,比如 chrooting 和 SSL/TLS 加密。

(4)灵活性

        socat 允许你构建复杂的流构造,这意味着你可以创建非常定制化的数据传输方案。

六、安装

1、包管理器安装

(1)安装命令

        在大多数 Linux 发行版中,你可以通过包管理器来安装 socat:

sudo apt-get install socat   Debian/Ubuntu

sudo yum install socat       CentOS/RHEL

sudo dnf install socat       Fedora

(2)实际操作

        在linux(centos)命令行下输入:

sudo yum install socat 

        出现如下结果:

[root@ecs-52a1 /]#
[root@ecs-52a1 /]# socat
bash: socat: command not found
[root@ecs-52a1 /]#
[root@ecs-52a1 /]#
[root@ecs-52a1 /]# sudo yum install socat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                                                                                   | 3.6 kB  00:00:00
epel                                                                                                                                   | 4.3 kB  00:00:00
extras                                                                                                                                 | 2.9 kB  00:00:00
updates                                                                                                                                | 2.9 kB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package socat.x86_64 0:1.7.3.2-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================
 Package                            Arch                                Version                                       Repository                         Size
==============================================================================================================================================================
Installing:
 socat                              x86_64                              1.7.3.2-2.el7                                 base                              290 k

Transaction Summary
==============================================================================================================================================================
Install  1 Package

Total download size: 290 k
Installed size: 1.1 M
Is this ok [y/d/N]: y
Downloading packages:
socat-1.7.3.2-2.el7.x86_64.rpm                                                                                                         | 290 kB  00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : socat-1.7.3.2-2.el7.x86_64                                                                                                                 1/1
  Verifying  : socat-1.7.3.2-2.el7.x86_64                                                                                                                 1/1

Installed:
  socat.x86_64 0:1.7.3.2-2.el7

Complete!
[root@ecs-52a1 /]#
[root@ecs-52a1 /]#
[root@ecs-52a1 /]#
[root@ecs-52a1 /]# socat --help
2024/07/09 21:04:36 socat[10998] E unknown option "--help"; use option "-h" for help
[root@ecs-52a1 /]# 

        可以看出,安装成功,可以使用socat命令了。

2、编译安装

        如果你的系统没有预装 socat 或者没有合适的包,你也可以从源代码编译安装。不是本文的重点,这里就不详细介绍了。

七、其他

1、注意事项

(1)socat 命令的选项和参数很多,使用时需要仔细阅读手册页(man socat)以了解每个选项的具体作用。

(2)socat 在使用时可能需要root权限,特别是在绑定到特定网络接口或启动代理服务器时。

(3)socat 支持大量的协议,包括 TCP、UDP、HTTP、HTTPS、SOCKS5、SM

(6)长时间运行的 socat 进程可能需要考虑资源管理和错误处理机制。

2、安全事项

        socat 是一个功能强大的工具,可以用于多种数据传输和通信场景。它的灵活性和强大的功能使得它成为系统管理员和网络开发人员的宝贵工具。然而,由于其功能过于强大,使用时需要仔细配置,以避免潜在的安全风险。

(1)使用 socat 处理敏感数据时,确保使用适当的加密和权限设置。

(2)在生产环境中使用 socat 时,应该仔细配置防火墙规则以限制不必要的访问。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1911952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】网络新兵连

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 引言 在上一篇博客中&#xff0c;我们简单的介绍了一些Linux网络一些比较基本的概念。本篇博客我们将开始正式学习Linux网络套接字的内容&#xff0c;那么我们开始吧&#xff01; 1.网络中的地址管理 大家一…

【Linux】多线程_2

文章目录 九、多线程2. 线程的控制 未完待续 九、多线程 2. 线程的控制 主线程退出 等同于 进程退出 等同于 所有线程都退出。为了避免主线程退出&#xff0c;但是新线程并没有执行完自己的任务的问题&#xff0c;主线程同样要跟进程一样等待新线程返回。 pthread_join 函数…

搜维尔科技:OptiTrack在NAB2024展示了一系列业界领先的媒体技术

广泛的显示和动作捕捉跟踪技术组合涵盖无与伦比的室内和室外 LED 解决方案、前沿技术演示以及最新的软件和硬件产品 可视化技术领域的全球领导者 Planar及其附属公司 3D 跟踪系统的全球领导者OptiTrack宣布&#xff0c;两家公司将在 2024 年全国广播协会 (NAB) 展会上展示其最全…

【动态规划Ⅴ】二维数组的动态规划——0/1矩阵、最大正方形

二维数组的动态规划——0/1矩阵、最大正方形 最大正方形1277. 统计全为 1 的正方形子矩阵221. 最大正方形 01矩阵542. 01 矩阵 最大正方形 下面两个题目是非常相似的&#xff0c;只是一个统计正方形数目&#xff0c;一个统计最大正方形的面积。 1277. 统计全为 1 的正方形子矩…

【优先级队列PriorityQueue】

目录 1&#xff0c;优先级队列 1.1 概念 2&#xff0c;优先级队列的模拟实现 2.1 堆的概念 2.2 堆的存储方式 2.3 堆的创建 2.3.1 堆的向下调整&#xff08;大根堆&#xff09; 2.3.2 建堆的时间复杂度​编辑 2.4 堆的插入与删除 2.4.1 堆的插入 2.4.2 堆的删除 3&a…

源码编译构建LAMP(企业网站架构部署与优化)

部署LAMP平台 LAMV架构是目前成熟的企业网站应用模式之一&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c;能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词&#xff0c;具体包 括 Linux操作系统&#xff0c;Apache网站服务器、MySQL数据库服务器、P…

ElementPlusError: [ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档 - 报警告之一

一、问题描述&#xff1a; 今天在使用elementui plus的时候遇到了一个奇葩的问题&#xff0c; 就是提示 使用了一些已被废弃的用法&#xff0c; 奇葩就在于我是 复制另一个页面的分页&#xff0c; 一摸一样的东西&#xff0c;就只这个页面报错&#xff0c; 分页也不出 为了这个…

App Cleaner Uninstaller 8.3.0激活版 最佳卸载程序和清理助手

App Cleaner & Uninstaller 完全安全地删除 Mac 上的程序&#xff0c;删除应用程序的残留物&#xff0c;管理扩展程序和启动程序。 App Cleaner & Uninstaller 8.3.0激活版下载 卸载应用程序和所有不需要的垃圾文件 当您将应用程序拖放到废纸篓时&#xff0c;请检查您…

鸿蒙开发学习笔记1

一、下载 deveco-studio 编译器 https://developer.huawei.com/consumer/cn/deveco-studio/#download 二、ArkTs 0、基本数据类型&#xff1a; 3种&#xff1a;string、number、boolean 1、存储数据&#xff08;变量、常量&#xff09; 注&#xff1a;类似于 ts 使用 con…

【work】AI八股-神经网络相关

Deep-Learning-Interview-Book/docs/深度学习.md at master amusi/Deep-Learning-Interview-Book GitHub 网上相关总结&#xff1a; 小菜鸡写一写基础深度学习的问题&#xff08;复制大佬的&#xff0c;自己复习用&#xff09; - 知乎 (zhihu.com) CV面试问题准备持续更新贴 …

springboot中@bean注解的创建和使用

bean的创建顺序 在Spring Boot中&#xff0c;当一个配置类&#xff08;使用Configuration注解的类&#xff09;中定义了多个bean时&#xff0c;这些bean的创建顺序并不完全由它们在类中的声明顺序决定。Spring框架在创建和管理bean时&#xff0c;遵循了复杂的依赖注入和生命周…

什么,有狗快跑!慢着,这次手把手教你怎么过安全狗!(sql注入篇)

前言 在记忆里上次绕安全狗还是在上次&#xff0c;开开心心把自己之前绕过狗的payload拿出来&#xff0c;发现全部被拦截了&#xff0c;事情一下子就严肃起来了&#xff0c;这就开整。 环境 本次环境如下sqli-lab的sql注入靶场 网站安全狗APACHE版V4.0版本的最高防护等级绕过…

北京大学长安汽车发布毫米波与相机融合模型RCBEVDet:最快能达到每秒28帧

Abstract 三维目标检测是自动驾驶中的关键任务之一。为了在实际应用中降低成本&#xff0c;提出了利用低成本的多视角相机进行3D目标检测&#xff0c;以取代昂贵的LiDAR传感器。然而&#xff0c;仅依靠相机很难实现高精度和鲁棒性的3D目标检测。解决这一问题的有效方法是将多视…

思维+数学,CF 1138B - Circus

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1138B - Circus 二、解题报告 1、思路分析 设第一组会小丑和杂技的人数分别为x1, y1 第二组会小丑和杂技的人数分别为x2, y2 显然根据要求有&#xff1a; x1 y2 > x1 x2 x2 y2 上式说明第二组每…

【QT中实现摄像头播放、以及视频录制】

学习分享 1、效果图2、camerathread.h3、camerathread.cpp4、mainwindow.h5、mainwindow.cpp6、main.cpp 1、效果图 2、camerathread.h #ifndef CAMERATHREAD_H #define CAMERATHREAD_H#include <QObject> #include <QThread> #include <QDebug> #include &…

OpenFWI代码

重点关注文章第4部分 一、代码模块概览 这一部分了解代码主要实现的功能有哪些。 二、运行 这一部分关注如何跑通。 三、数据集 12个数据集&#xff08;11个2D1个3D&#xff09; 对计算机而言&#xff0c;上述输入、输出维度大小是按次数定义的。 以“Vel&#xff0c;F…

Celery,一个实时处理的 Python 分布式系统

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 一个简单的库&#xff0c;也许能够开启我们的智慧之门&#xff0c; 一个普通的方法&#xff0c;也许能在危急时刻挽救我们于水深火热&#xff0c; 一个新颖的思维方式&#xff0c;也许能…

Spring-AOP(二)

作者&#xff1a;月下山川 公众号&#xff1a;月下山川 1、什么是AOP AOP&#xff08;Aspect Oriented Programming&#xff09;是一种设计思想&#xff0c;是软件设计领域中的面向切面编程&#xff0c;它是面向对象编程的一种补充和完善&#xff0c;它以通过预编译方式和运行期…

MySQL:TABLE_SCHEMA及其应用

MySQL TABLE_SCHEMA及其应用 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/ar…

持久化存储与设备环境查询的最佳实践

ArkUI框架中的PersistentStorage和Environment 在ArkUI框架中&#xff0c;持久化存储和设备环境查询是应用开发中不可或缺的两个重要功能。在本文中&#xff0c;我们将深入了解框架提供的PersistentStorage和Environment&#xff0c;它们的用途、限制条件以及在应用开发中的使…