目 录CONTENT

文章目录

简单端口映射、转发、重定向工具之Rinetd

ZOUNAN
2023-04-06 / 0 评论 / 0 点赞 / 271 阅读 / 799 字
温馨提示:
本文最后更新于 2023-04-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一、背景

Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具。将 TCP 连接从一个 IP 地址和端口重定向到另一个。它处理文件中/etc/rinetd.conf指定的地址/端口的任意数量的连接。由于 rinetd 使用非阻塞 I/O 作为单个进程运行,因此它能够重定向大量连接而不会对机器造成严重影响。这使得伪装在防火墙内的机器上运行 TCP 服务变得切实可行。rinetd不重定向 FTP,因为 FTP 需要多个套接字。

支持系统:Win/Linux

二、安装部署

2.1 安装过程

1、下载软件

目前的最新版本是0.73

https://github.com/samhocevar/rinetd/releases

2、编译安装

./bootstrap
./configure --prefix=/data/rinetd
make&& make install

3、编辑配置文件

vim /data/rinetd/etc/rinetd.conf
0.0.0.0 33060 192.168.209.128 3306

加入一行,把发往本机所有网卡监听的33060的端口转到192.168.209.128的3306端口,当然也可以根据实际情况修改为只监听某一个本机IP。

4、启动服务

rinetd -c /data/rinetd/etc/rinetd.conf

2.2 配置文件详解

转发规则

[root@192_168_209_128 etc]# cat rinetd.conf  |grep -A20  bindadress
# bindadress  bindport  connectaddress  connectport  options...
# 0.0.0.0     80        192.168.1.2     80
# ::1         80        192.168.1.2     80
# 0.0.0.0     80        fe80::1         80
# 127.0.0.1   4000      127.0.0.1       3000
# 127.0.0.1   4000/udp  127.0.0.1       22           [timeout=1200]
# 127.0.0.1   8000/udp  192.168.1.2     8000/udp     [src=192.168.1.2,timeout=1200]

0.0.0.0     33060        192.168.209.128     3306

转发规则的格式如下:

bindadress bindport connectaddress connectport options
例如:

0.0.0.0 23 10.1.1.2 23

对于分配给服务器的所有 IP 地址,会将所有连接重定向到端口 23。也可以指定服务名称而不是端口号。在大多数系统上,服务名称在文件 /etc/services 中有定义。

  • 允许和拒绝规则

配置文件还可以包含允许和拒绝规则。

rinetd支持通过规则进行访问的控制,同时支持通配符匹配。

  • 日志记录
    rinetd 能够生成两种格式之一的日志文件:制表符分隔格式和 Web 服务器样式的"通用日志格式"。

默认生成的是制表符分隔格式:

# logging information
logfile /var/log/rinetd.log

如果您想要 Web 服务器样式的日志文件格式,请取消注释以下行

# logcommon

2.3 创建systemd服务

1、创建systemd服务

vim /etc/systemd/system/rinetd.service
[Unit]
Description=Rinetd
After=network.target
 
[Service]
Type=forking
ExecStart=/data/rinetd/sbin/rinetd -c /data/rinetd/etc/rinetd.conf
 
[Install]
WantedBy=multi-user.target
systemctl daemon-reload && systemctl start rinetd

2、设置开机启动

systemctl enable rinetd

使用场景:

不想暴露某个端口,并且在不修改服务配置的情况下使用其他端口也可使用该服务,例如将MySQL的连接默认端口3306只允许本地连接, 转发一个33060给外部连接使用

0

评论区