很早以前在我还不怎么会linux的时候一个朋友给我介绍了Rinetd这个小工具。这小工具我看了一下也是历史悠久的一个转发工具,而且设置简单。设置简单的代价就是只能支持端口对端口的转发,也能实现一些简单的反代玩法,但我觉得如果真需要使用反代,还是去使用Nginx这些专业点的东西比较好。

既然他是一个软件那我们就得先安装它,值得庆幸的是在Debian和Ubuntu上apt-get包管理器中已经自带了rinetd,所以在Debian和Ubuntu下我们只需使用一句话就能搞定安装:

apt-get install rinetd -y

然而在CentOS中的yum包管理器中并没有这个东西,所以我们需要手动编译。但结合一下也还是一句命令就能搞定安装。

wget  http://www.boutell.com/rinetd/http/rinetd.tar.gz && tar fxz rinetd.tar.gz && cd rinetd && sed -i 's/65536/65535/g' rinetd.c && mkdir -p /usr/man/ && make && make install

安装完了我们就能开始设置了。

设置其实也很简单,我们需要用以下命令打开配置文件:


vim /etc/rinetd.conf

我们可以看到这个配置文件下的格式大致是这样的:


0.0.0.0 22 127.0.0.1 22

这里我解释一下其中的意思。

0.0.0.0的位置代表着源地址,意思就是来路的地址。如果需要所有来路都进行转发,那我们就填写0.0.0.0就好。
0.0.0.0之后的22代表着源地址连接到我们这台服务器的端口,按需填写。
127.0.0.1是要转发给谁的地址,这里我们可以填写域名例如www.baidu.com。
127.00.0.1之后的22代表的是要转发的目标端口,这里不一定需要跟上一个端口对应,但是需要同一个协议。

这个条配置的意思就是所有请求本机22端口的请求全部转发到127.0.0.1的22端口。

当然我们也可以使用Rinetd来做内网的转发,比IPtables的命令简单不少。同时Rinetd支持多条配置,只需按照格式另起一行接上即可。

设置完毕我们可以通过如下命令重启一下Rinetd:

rinetd -c /etc/rinetd.conf

需要注意的是,在使用Rinetd的时候我们要注意两个问题:

  1. rinetd.conf中绑定的本机端口必须没有被其它程序占用。
  2. 运行rinetd的系统防火墙应该打开绑定的本机端口或者直接关闭防火墙。