使用socat做端口转发

最近买的云上mongo数据库但是数据库不支持外网访问,准备做iptables转发但是一直不成功,腾讯云官方给予的解释是受服务器内启动的docker影响 做iptables转发会冲突,所以只能另想办法,我发现使用socat做转发也很好用,所以记录一下开源给大家。

socat介绍:

socat 是一个功能强大的多功能网络工具,它可以在两个数据流之间建立连接,同时可以转换它们的特性。它的名字源自于 "SOcket CAT",意味着它可以像 cat 命令一样,但用于网络连接。

以下是 socat 的一些主要特点和功能:

  1. 多协议支持 : socat 支持多种不同的协议,包括 TCP、UDP、IPv4、IPv6、UNIX 套接字等。

  2. 连接两个数据流 : socat 可以连接两个数据流,这两个数据流可以是文件、套接字、管道等。

  3. 端口转发 : 你可以使用 socat 在不同的主机之间进行端口转发,使得网络服务可以在不同主机之间进行通信。

  4. 代理和中继 : 你可以使用 socat 作为代理或中继,将数据流从一个位置转发到另一个位置,这在网络调试和故障排除时非常有用。

  5. 加密和认证 : socat 支持 SSL 和 TLS 加密,以及基本的认证功能,可以确保数据在传输过程中的安全性。

  6. 虚拟串口 : 在某些情况下,socat 还可以创建虚拟串口,模拟物理串口的功能,用于串口通信和调试。

总的来说,socat 是一个非常灵活和强大的工具,可以在网络和系统管理、开发和调试等方面发挥重要作用。

tcp端口转发:

注:我在192.168.1.10这台服务器执行下面的命令让端口转发到内网IP:10.106.0.20的6379端口上,执行完下面的命令就可以在访问192.168.1.10:20001端口就可以转发到内网IP的6379端口上,也就可以使用外网访问我们的内网数据库。

socat TCP4-LISTEN:20001,fork TCP4:10.106.0.20:6379 &

执行完命令我们可以使用netstat -lntp 查看本地是否启动一个为20001的端口

然后我们使用命令:telnet 10.106.0.20:6379 27017 测试能否连通服务器如下图表示成功

注:如果是云上服务器记得开启服务器安全组20001端口,和后端服务器允许服务器192.168.1.10访问6379端口。

#TCP4-LISTEN表示监听一个TCP4端口(IPv4),fork表示每个连接都创建一个新进程处理数据流,TCP4:10.106.0.20:6379表示将数据转发到目标主机B的6379端口。这样,所有发送到主机A的20001端口的数据流都会被转发到主机B上的6379端口。会在A主机监听20001端口,所有访问A:20001端口的,会返回B:6379的资源。

UDP端口转发:

除了TCP端口转发,socat还支持UDP端口转发。假设有一台主机A,它的IP地址为192.168.100.10,上面运行着一个DNS服务器,监听在53端口。现在需要将53端口的UDP数据流转发到另一台主机B上的5353端口,可以使用以下命令:

socat UDP4-LISTEN:53,fork UDP4:192.168.100.20:5353 &

其中,UDP4-LISTEN表示监听一个UDP4端口(IPv4),UDP4:192.168.100.20:5353表示将数据转发到目标主机B的5353端口。

相关推荐
裴东青1 小时前
10-实战:RuoYi-Cloud的自动化发布
运维·ci/cd·自动化
江公望1 小时前
Ubuntu htop命令,10分钟讲清楚
linux·服务器
哎呦,帅小伙哦1 小时前
Linux 时间:从原子钟到 clock_gettime 的每一面
linux·运维·服务器
sxgzzn2 小时前
新能源场站数智化转型:基于数字孪生与AI的智慧运维管理平台解析
大数据·运维·人工智能
张小姐的猫2 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
CodeMartain2 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
xxx1x1x2 小时前
极客向:DLL/运行库故障的底层逻辑与自动化修复方案
运维·自动化·dll文件·dll·dll修复·dll缺失·dll一键修复
YuanDaima20482 小时前
Linux 进阶运维与 AI 环境实战:进程管理、网络排错与 GPU 监控
linux·运维·服务器·网络·人工智能
lolo大魔王4 小时前
Linux 数据文件处理实战:排序、搜索、压缩、归档一站式详解
linux·运维·服务器
llrraa20104 小时前
配置docker国内镜像源
运维·docker·容器