说起端口转发策略,我们的万金油iptables可以说是最好的。但是iptables对于小白而言存在一定的难度。今天介绍一款对小白非常友好的端口转发工具rinetd,最初它仅能转发tcp流量,可以用来加速网站访问,当然也可以用于加速一些特殊的服务流量。
安装
1、安装编译依赖
#CentOS系统 yum -y install gcc make #Debian/Ubuntu系统 apt update apt install gcc make -y
2、编译安装rinetd
#下载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
设置转发规则
修改配置文件vim /etc/rinetd.conf
#源IP一般填0.0.0.0 源IP 源端口 目标IP 目标端口
例如转发网站80
和443
端口实现加速
0.0.0.0 80 100.61.126.101 80 0.0.0.0 443 100.61.126.101 443
意思是将本地80/443
端口转发到100.61.126.101
的80/443
端口。
从0.70
版本开始rinetd已经支持UDP转发,写法如下:
127.0.0.1 8000/udp 192.168.1.2 8000/udp
启动转发rinetd转发服务
1、创建systemd服务
为了方便管理,我们可以为rinetd编写一个systemd服务。
#创建rinetd服务 vi /etc/systemd/system/rinetd.service
复制下面的内容进行保存:
[Unit] Description=rinetd After=network.target [Service] Type=forking ExecStart=/usr/local/sbin/rinetd -c /etc/rinetd.conf [Install] WantedBy=multi-user.target
输入命令:systemctl daemon-reload
重载daemon使其生效,然后就可以使用下面的命令来管理rinetd了。
#启动rinetd systemctl start rinetd #设置开机启动 systemctl enable rinetd #停止rinetd systemctl stop rinetd #重启 systemctl restart rinetd
rinetd的不足
1、rinetd支持转发到域名,rinetd会提前解析域名,并将解析出的IP缓存到内存中,如果您的域名解析IP发生了变化必须重启rinetd才会生效,所以rinetd并不适合转发到域名IP经常发生变化的情况;
2、rinetd只支持tcp流量的转发,不适合用于对udp有要求的流量,例如加速游戏。
0.70为二次开发版本:https://github.com/samhocevar/rinetd
总结
rinetd转发是几种转发方式中最为简单的,不支持反驳。rinetd仅只支持tcp流量转发这个弊端,已经在0.7之后的版本中得到修复,自然使用的是0.62版本,0.70性能未做测试。除了转发域名存在缺陷外,rinetd对小白非常友好,转发配置极为简单。