前言

iptables 的功能当然强大,但理解与设置却有点抽象,便通过google认识了rinetd。

简介

Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具。Rinetd是单一过程的服务器,它处理任何数量的连接到在配置文件etc/rinetd中指定的地址/端口对。尽管rinetd使用非闭锁I/O运行作为一个单一过程,它可能重定向很多连接而不对这台机器增加额外的负担。

安装

这篇文章以CentOS 7为例,复制下面的命令输入,一行一个:

#安装依赖
yum -y install gcc gcc-c++ make
#下载rinetd
wget https://github.com/samhocevar/rinetd/releases/download/v0.70/rinetd-0.70.tar.gz
#解压
tar -zxvf rinetd-0.70.tar.gz
#进入目录
cd rinetd-0.70
#编译安装
./bootstrap
./configure
make && make install

安装后,可以输入rinetd -v查看当前版本。

[root@centos rinetd-0.70]# rinetd -v
rinetd 0.70

配置

配置端口转发的配置文件在/etc/rinetd.conf

配置文件格式

[Source Address] [Source Port] [Destination Address] [Destination Port]
#源地址 源端口 目的地址 目的端口

在每一单独的行中指定每个要转发的端口。源地址和目的地址都可以是主机名或IP地址,IP 地址0.0.0.0rinetd绑定到任何可用的本地IP地址上。例如:0.0.0.0 3306 idcfq.com 3306

cat >>/etc/rinetd.conf <<end
# allow 192.168.2.*
# deny 192.168.1.*
# bindadress bindport connectaddress connectport
0.0.0.0 3306 idcfq.com 3306
#logfile /var/log/rinetd.log
end

上面配置的意思是将本地3306端口转发到idcfq.com3306端口,启动后可以输入netstat -apn|grep 'rinetd'查看是否运行正常,注意还需要在自己服务器防火墙放行对应的源端口,否则无法正常使用用。

0.70版本开始rinetd已经支持UDP转发,写法如下:

127.0.0.1   8000/udp  192.168.1.2     8000/udp

添加开机自启动

echo rinetd >>/etc/rc.local

启动服务

rinetd

rinetd启动后,就已经可以通过云服务器的3306端口连接到处于内网模式的xxx rds数据库了
除了这个场景,其它的内网端口转发也都可以(由于FTP协议相对特殊,无法实现转发)
配置文件中可以对某个IP或者IP段进行允许/拒绝,藉此提高内网端口的安全性;
如果二者冲突,测试的结果来看是拒绝优先。

多端口配置

上面配置只是配置一个RDS,如果有多个,需要添加端口号

vi /etc/rinetd.conf

内容如下:

# allow 192.168.2.*
# deny 192.168.1.*
# bindadress bindport connectaddress connectport
0.0.0.0 3306 a.idcfq.com 3306
0.0.0.0 3307 b.idcfq.com 3306
0.0.0.0 3308 c.idcfq.com 3306
#logfile /var/log/rinetd.log

重启服务

pkill rinetd
rinetd

测试连接

使用mysql客户端进行测试。注意连接第2台和第3台的时候,更改下端口号。
这样任何IP地址都可以连接了,这样不安全,最好做下防火墙,针对外网卡,只允许公司的网络访问。
然后家里连接的时候,先拨×××,用内网连接。

Last modification:October 15, 2020
如果觉得我的文章对你有用,请随意赞赏