profileName: WOO
postId: "248"
postType: post
categories:

  • 12

socat 是一个强大的网络工具,可以用来重定向流量、创建连接或进行端口转发等操作。它在 Linux/Unix 系统中非常流行,功能类似于 netcat,但更灵活。要使用 socat 重定向流量,你需要指定两个地址(ADDRESS1 和 ADDRESS2),让数据在这两者之间传递。

以下是一些常见的使用场景和命令示例,帮助你理解如何用 socat 重定向流量:


基本语法

bash

CollapseWrapCopy

socat [选项] ADDRESS1 ADDRESS2

  • ADDRESS1:数据来源(输入端)。
  • ADDRESS2:数据目的地(输出端)。
  • [选项]:可以控制行为,比如设置超时、日志等。

常见的地址类型包括:

  • TCP:<主机>:<端口>:TCP 连接。
  • UDP:<主机>:<端口>:UDP 连接。
  • STDIO:标准输入输出。
  • FILE:<文件名>:文件。
  • EXEC:<命令>:执行某个命令。

示例 1:将本地的 12345 端口流量重定向到远程主机的 54321 端口

bash

CollapseWrapCopy

socat TCP-LISTEN:12345,fork TCP:remote_host:54321

  • TCP-LISTEN:12345,fork:监听本地 12345 端口,fork 表示支持多个连接。
  • TCP:remote_host:54321:将流量转发到远程主机的 54321 端口。
  • 使用场景:本地服务无法直接暴露给外部网络时,可以通过这种方式中转。

示例 2:将 UDP 流量从一个端口重定向到另一个端口

bash

CollapseWrapCopy

socat UDP-LISTEN:12345 UDP:localhost:54321

  • UDP-LISTEN:12345:监听本地的 12345 UDP 端口。
  • UDP:localhost:54321:将收到的 UDP 数据包转发到本地的 54321 端口。

示例 3:将标准输入输出重定向到远程服务器

bash

CollapseWrapCopy

socat - TCP:remote_host:22

    • 表示使用标准输入输出(STDIO)。
  • TCP:remote_host:22:连接到远程主机的 22 端口(例如 SSH)。
  • 使用场景:可以用作简单的 telnet 客户端。

示例 4:将流量保存到文件并同时转发

bash

CollapseWrapCopy

socat TCP-LISTEN:12345 FILE:/tmp/log.txt TCP:localhost:54321

  • 数据从 12345 端口接收后,既写入 /tmp/log.txt,又转发到 localhost:54321。
  • 注意:这种方式可能会因为文件操作而影响性能。

示例 5:通过代理重定向流量

bash

CollapseWrapCopy

socat TCP-LISTEN:12345 PROXY:proxy_host:remote_host:54321,proxyport=8080

  • PROXY:proxy_host:remote_host:54321,proxyport=8080:通过代理服务器 proxy_host:8080 将流量转发到目标。

注意事项

  1. 安装:确保系统中已安装 socat,可以用 apt install socat(Debian/Ubuntu)或 yum install socat(CentOS)安装。

  2. 权限:监听低端口(<1024)需要 root 权限。

  3. 调试:加 -d -d 参数可以启用详细日志,便于排查问题。

    bash

    CollapseWrapCopy

    socat -d -d TCP-LISTEN:12345 TCP:localhost:54321

登录

注册

重设密码

请输入您的用户名或电子邮箱地址。您会收到一封包含创建新密码链接的电子邮件。