Rinetd解决服务器IP端口的转发
Rinetd(Redirection Internet Daemon)是一个轻量级、简单易用的 TCP 端口转发/重定向工具。它的核心功能是解决一个非常具体但常见的问题:在不修改服务本身配置的情况下,将到达一台服务器某个端口的TCP连接,透明地转发到另一台服务器的指定端口。
使用场景
你有一台位于公网的服务器(假设IP是 1.2.3.4
),但需要访问一个在内网私有网络(比如 192.168.1.100
)中运行的服务的端口(例如MySQL的 3306
)那么就需要在公网服务器 (1.2.3.4
) 上安装并配置 Rinetd,将所有发到本机 3306
端口的流量,转发到内网服务器 192.168.1.100:3306,
这样,外部客户端只需要连接 1.2.3.4:3306
,Rinetd 就会自动帮你把连接桥接到内部的 192.168.1.100:3306
。对于客户端和MySQL服务器来说,它们都感知不到Rinetd的存在,仿佛是在直接通信。
你需要一个快速、临时的端口转发解决方案。
你的需求非常简单,仅仅是TCP端口到端口的映射。
服务器资源非常紧张,无法运行更重的代理软件。
你不想配置复杂的iptables规则(虽然
iptables
本身也能做端口转发)。
安装过程
1、从https://github.com/samhocevar/rinetd/releases下载最新安装包;新建文件夹,并将包上传至新的目录
mkdir -p /usr/local/rinetd
cd /usr/local/rinetd
tar -zxvf rinetd-0.73.tar.gz
2、编译,编译前先安装好GCC(本次服务器已安装)进入解压目录,进入src目录,以此执行
#修改端口范围,否则会报错
sed -i 's/65536/65535/g' rinetd.c
./configure
make && make install
3、配置rinetd.conf
vim /usr/local/etc/rinetd.conf
## 命令格式
## bindaddress bindport connectaddress connectport
## 绑定的地址 绑定的端口 连接的地址 连接的端口
0.0.0.0 80 192.168.1.123 80
allow *.*.*.*
logfile /var/log/rinetd.log
4、开始使用
# 启动
rinetd -c /usr/local/etc/rinetd.conf
#查看转发
netstat -tanulp|grep rinetd
#停止
pkill rinetd
优缺点
Rinetd 主要解决的是“TCP流量从哪里来,转发到哪里去”的最基本网络连通性问题,只做纯粹的TCP流量转发,它是一个简单到极致的TCP端口转发器,适用于轻量级、临时性或资源受限的网络中转场景
极其简单 | 配置直观,只需编辑一个文本文件,无需学习复杂概念。 |
非常轻量 | 体积小,占用内存和CPU资源极少(内存只需几百KB),适合资源受限的环境, 配置超级简单(一个配置文件几行命令) |
纯TCP转发 | 不关心应用层协议,可转发任何基于TCP的服务(SSH, HTTP, MySQL, Redis等)。 |
跨平台 | 在Linux、BSD等类Unix系统上均可运行。 |
❌ 缺点 | |
功能单一 | 仅支持四层转发,不支持基于域名、URL路径的转发(那是HTTP反向代理做的事) 不支持七层协议解析、负载均衡、健康检查、SSL加密/解密。 |
单点故障 | 本身不具备高可用性,如果转发服务器宕机,链路就中断。 |
性能瓶颈 | 对于极高的并发连接,其单进程模型可能成为瓶颈(但对于大多数中小流量场景完全足够)。 |