原 socat工具做端口转发介绍
简介
socat 是一个多功能的命令行工具,用于在不同类型的输入和输出之间创建双向数据流。它经常被用来实现端口转发,支持 TCP、UDP、UNIX 套接字等多种协议。
Socat 的官方网站:http://www.dest-unreach.org/socat/
https://github.com/StudioEtrange/socat-windows
优势
- 简单灵活,支持多种协议。
- 可用于开发、调试和生产环境。
示例应用
- 暴露内网服务给外部访问。
- 测试网络服务的连通性。
- 创建安全隧道以加密数据流量(结合
openssl)。
端口转发的概念
端口转发是将一个端口的网络流量转发到另一个端口或服务器的过程。它通常用于以下场景:
- 将本地端口流量转发到远程服务器。
- 将远程端口流量转发到本地端口。
- 为无法直接访问的服务提供访问途径。
1. 基本语法
socat 的基本使用语法如下:
1 | socat [选项] <来源> <目标> |
其中:
<来源>:数据流的输入端,比如本地端口、文件、UNIX 套接字等。<目标>:数据流的输出端,比如远程端口、管道、文件等。
2. 常见端口转发场景
(1) 本地端口转发到远程服务器
将本地 8080 端口的流量转发到远程服务器 192.168.1.100 的 80 端口:
1 | socat TCP-LISTEN:8080,reuseaddr,fork TCP:192.168.1.100:80 |
说明:
TCP-LISTEN:8080:监听本地8080端口。reuseaddr:允许重用本地地址和端口。fork:为每个连接创建一个子进程。TCP:192.168.1.100:80:将流量转发到远程地址192.168.1.100的80端口。
(2) 远程端口转发到本地
将远程服务器 192.168.1.100 的 80 端口流量转发到本地的 8080 端口:
1 | socat TCP-LISTEN:8080,reuseaddr,fork TCP:192.168.1.100:80 |
(3) 双向端口转发
在两个服务器之间建立双向端口转发,比如将 Server A 的 8080 端口和 Server B 的 9090 端口连接起来: 在 Server A 上执行:


