Centos7 安装socat与使用
前言(socat介绍)
socat官网:http://www.dest-unreach.org/socat/
git仓库地址:https://repo.or.cz/socat.git
socat 是一个多功能的网络工具,用于在 Linux 和 Unix 系统中进行双向数据传输。它的名字来源于 “Socket CAT”,表示它可以像 cat 命令那样处理数据流,但主要针对网络套接字和其他数据源和目的地。
它可以被看作是 netcat(nc)的超级集,因为它不仅支持 TCP/UDP 流,还支持多种其他类型的连接。
Socat是在两个独立的数据通道之间进行双向数据传输的中继。这些数据通道中的每一个都可以是文件、管道、设备(串行线等或伪终端)、套接字(UNIX、IP4、IP6 - raw、UDP、TCP)、SSL套接字、代理CONNECT连接、文件描述符(stdin等)、GNU行编辑器(readline)、程序或这两者的组合。这些模式包括生成“监听”套接字、命名管道和伪终端。socat可以使用,例如,作为TCP端口转发器(一次性或守护程序),作为外部套接字器,用于攻击弱防火墙,作为UNIX套接字的外壳接口,IP6中继,用于将面向TCP的程序重定向到串行线,逻辑地连接不同计算机上的串行线,或建立一个相对安全的环境(su和chroot),用于运行具有网络连接的客户端或服务器shell脚本。
一、 socat安装
-
使用yum软件包管理工具安装
[root@192 yum.repos.d]# yum -y install socat
-
下载源码包编译安装
[root@192 ~]# yum -y install wget gcc gcc-c++ [root@192 ~]# wget http://www.dest-unreach.org/socat/download/socat-1.8.0.0.tar.gz [root@192 ~]# tar -zxvf socat-1.8.0.0.tar.gz [root@192 ~]# cd socat-1.8.0.0 [root@192 socat-1.8.0.0]# ./configure [root@192 socat-1.8.0.0]# make && make install [root@192 socat-1.8.0.0]# socat -V socat by Gerhard Rieger and contributors - see www.dest-unreach.org socat version 1.8.0.0 on Sep 8 2024 01:12:06 running on Linux version #1 SMP Mon Oct 19 16:18:59 UTC 2020, release 3.10.0-1160.el7.x86_64, machine x86_64
二、socat使用
基本用法:
socat [options] <address> <address>
- options:指定 socat 的各种参数和选项。
- <address1>:可以是本地或远程的 IP 地址、域名、端口、UNIX 套接字等。
- <address2>:同上,通常是另一个地址或命令。
1. 参数介绍
-V
: 打印版本和可用的特性信息
-h
:打印帮助信息
-hh
:像-h一样,加上所有可用地址选项的简短名称列表。
-hhh
: 像-hh一样,加上所有可用地址选项名称的列表。
-d
: 打印致命、错误、警告和通知消息。
-D
: 在开始传输阶段之前记录有关文件描述符的信息。
-ly
:将消息写入syslog而不是stderr;用-d选项定义的严重性。
2. socat使用实践
2.1. 端口转发
将本地端口的流量转发到远程服务器的端口。
2.1.1. 转发TCP端口
socat TCP-LISTEN:8080,fork TCP:remotehost:80
2.1.2. 转发UDP端口
socat UDP-LISTEN:5000,fork UDP:remotehost:5000
或者
socat UDP-RECV:5000,fork UDP-SENDTO:remotehost:5000
- TCP-LISTEN:8080 : 监听本地8080
- fork: 这个选项告诉 socat 为每个接受的连接创建一个子进程。这样,每个连接都在一个独立的进程中处理,允许同时处理多个连接。
- TCP:remotehost:80 : 远程服务器地址端口协议
2.2. 监听多个端口
socat TCP-LISTEN:80,fork TCP-LISTEN:443,fork
暂时用到的功能只有端口转发后,后面在使用到时在补充