linux使用rinetd做端口映射
其实 Linux 下使用 iptables 实现端口转发就足够了,例如:
iptables -t nat -I PREROUTING -p tcp --dport 555 -j DNAT --to-destination 2.2.2.2:3389
iptables -t nat -I POSTROUTING -j MASQUERADE
iptables配置较为复杂,作为小白的我还是选择了使用 rinetd。
虽然 rinetd 有点古老,但很短小、高效,对于解决这种问题来说是非常完美的。

Rinetd原理图
方法
安装 rinetd
可以使用apt-get或者yum安装
root权限执行:
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -xvf rinetd.tar.gz
cd rinetd
sed -i 's/65536/65535/g' rinetd.c //修改rinetd.c,将查询到的65536修改为65535
mkdir /usr/man/
make && make install
安装在 /usr/sbin 目录下
创建配置文件
nano /etc/rinetd.conf
填入配置信息,格式为:
SourceAddress SourcePort DestinationAddress DestinationPort
绑定的地址 绑定的端口 转发的地址 转发的端口
绑定地址的端口(数据)转发地址的端口
在每一单独的行中指定每个要转发的端口。
源地址和目的地址都可以是主机名或 IP 地址,IP 地址为0.0.0.0 则将rinetd 绑定到任何可用的本地IP地址上
示例:
跳板 VPS 的 IP 为1.1.1.1, rinetd已经安装在跳板 VPS 上。服务器的 IP 为2.2.2.2。
0.0.0.0 555 2.2.2.2 3389
可实现 访问跳板 VPS(1.1.1.1)的555端口就等于访问服务器(2.2.2.2)的3389端口。
程序启动,停止,查询,自启动
创建完配置文件后,别忘了启动程序才能生效。
启动命令:/usr/sbin/rinetd
停止命令:killall rinetd
查看是否启动:netstat -tanulp|grep rinetd
开机启动:
在 /etc/rc.local 文件中,添加 /usr/sbin/rinetd 启动命令即可。
还需要在iptables里面开启端口。
相关推荐
-
nginx检查提示“unknown directive "stream" in /etc/*/nginx.conf”
nginx检查提示“unknown directive "stream" in /etc/*/nginx.conf”2025-02-26 00:38:21 -
php之多级目录下查找文件中是否含有某个字符串功能实现2025-02-26 00:36:35
-
mysql 启动不了1067错误如何解决?2025-02-26 00:33:31
-
MySQL简单INSERT超慢原因排查2025-02-26 00:22:42
-
mysql分布式数据库的主要构架是什么?2025-02-26 00:06:23