为Linux安装配置rinetd端口转发
端口转发指的是:将发送到一台主机上特定端口的请求转发给另一台主机的特定端口,然后再原路响应。 本文基于Linux系统和rinetd来实现该功能。
需求背景
阿里云最近有99元/年的ECS活动,2核2GB,3M公网带宽,新老用户同享。买不了吃亏,买不了上当,所以我买了。ECS位于北京,3M的公网带宽对我来说足够使用,但是2GB的内存是无法满足Oracle Database 23ai Free基本安装需求的,所以我还需要另外一台至少2核4GB的ECS,不过只是临时使用,而非长期。99元的优惠ECS不容错过,肯定要买。另一台高配一点的ECS没有个人优惠,如果买的话,就想尽量省点钱——那就把它的公网带宽费用省了吧。
所以我的需求是,主机A(2C/2GB/3M)作为公网访问,同一个可用区内的另一台主机B(2C/4GB/0M)用来安装Oracle、SQL Server、MySQL、PostgreSQL等各种数据库,但没有公网带宽。当访问主机A的1521、1433、3306和5432端口时,将它们的请求转发到主机B上对应的端口,这样便可以实现将公网上的主机A当做数据库来访问,但实际的数据库部署位于主机B上,主机A只是负责转发而已。如下图所示:
版本说明
操作系统用的是CentOS Stream 9。
端口转发功能用的是较为简单的rinetd,它有一个“官网”链接:https://boutell.com/rinetd/http/rinetd.tar.gz 。但是好像下载后无法使用tar -xvf
正常解压缩。所以我用的是GitHub上的资源:https://github.com/samhocevar/rinetd/releases/download/v0.73/rinetd-0.73.tar.gz 。
安装步骤
- 首先下载rinetd的资源包:
- 然后解压缩它,并进入到其路径中:
- 配置一下,然后编译、安装它:
配置步骤
- 默认的配置文件是
/etc/rinetd.conf
,用vim
来编辑一下它,添加以下内容: 第1列0.0.0.0
和第2列如3306
,指的是本机IP和端口,是请求的源位置。第3列172.17.72.63
和第4列如3306
指的是另一台目标主机IP和端口,是请求转发的目标位置。 - 启动rinetd服务,可以使用命令:
- 关闭rinetd服务,可以使用命令:
- 查看rinetd服务的端口转发状态,可以使用命令: 其输出结果如:
设置开机启动
可以设置让rinetd随开机自动启动,但要注意有没有执行权限。
- 用
echo
或者vim
将rinetd -c /etc/rinetd.conf
添加到/etc/rc.local
文件中。 - 用
ls -l /etc/rc.local
检查有没有执行权限(有)。 - 用
ls -l /etc/rc.d/rc.local
查看有没有执行权限(没有)。 - 用
chmod +x /etc/rc.d/rc.local
添加后者的执行权限。
至此,基本的安装和配置便完成了。