一、背景
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给外部连接使用。
原文始发于微信公众号(运维贼船):简单端口映射、转发、重定向工具之Rinetd
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/176709.html