Rinetd解决服务器IP端口的转发

发布于:2025-09-02 ⋅ 阅读:(16) ⋅ 点赞:(0)

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加密/解密。

单点故障 本身不具备高可用性,如果转发服务器宕机,链路就中断。
性能瓶颈 对于极高的并发连接,其单进程模型可能成为瓶颈(但对于大多数中小流量场景完全足够)。