Linux安装rinetd实现TCP/UDP端口转发

本文详细介绍了如何在CentOS7上安装rinetd,包括安装依赖、下载与编译、配置文件创建以及端口转发的设置。rinetd用于TCP端口转发,支持UDP从0.70版开始,但不适用于IP频繁变动的场景。此外,还提供了创建systemd服务的方法,便于管理rinetd服务。
摘要由CSDN通过智能技术生成

安装rinetd

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

  1. #安装依赖

  2. yum -y install gcc gcc-c++ make

  3. #下载rinetd

  4. wget https://github.com/samhocevar/rinetd/releases/download/v0.70/rinetd-0.70.tar.gz

  5. #解压

  6. tar -zxvf rinetd-0.70.tar.gz

  7. #进入目录

  8. cd rinetd-0.70

  9. #编译安装

  10. ./bootstrap

  11. ./configure

  12. make && make install

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

  1. [root@kryptcn2 rinetd-0.70]# rinetd -v

  2. rinetd 0.70

随着时间推移,上面下载地址不一定是最新的,大家可前往Github:https://github.com/samhocevar/rinetd/releases下载最新版本。

执行./bootstrap 命令可能会遇到报错 /bin/sh^M: bad interpreter: No such file or directory,

经过查阅资料才知道,这是由于文件格式的问题:使用vi/vim进入该shell文件,按下:进入末行模式,输入set ff查询文件格式,结果如下:

fileformat=dos

原因是bootstrap的文档格式是dos格式,需要修改为UNIX格式:

解决方案:

通过vi/vim进入想要修改的文件,按下:进入末行模式,输入set fileformat=unix,接着按下ZZ或者按下shift + z + z或者输入:x或者:wq保存修改即可。

 

设置TCP端口转发

  1. #新建rinetd配置文件

  2. vi /etc/rinetd.conf

  3. #填写如下内容

  4. 0.0.0.0 2018 103.74.192.160 2019

  5. #启动rinetd

  6. rinetd -c /etc/rinetd.conf

rinetd配置文件的格式如下:

  • 0.0.0.0:源IP
  • 2018:源端口
  • 103.74.192.160:目标IP
  • 2019:目标端口

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

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

127.0.0.1   8000/udp  192.168.1.2     8000/udp

创建systemd服务

为了方便管理,我们可以为rinetd编写一个systemd服务,有兴趣的同学可参考《Linux系统编写Systemd Service实践》,xiaoz已经编写好了,直接复制下面的内容即可:

  1. #创建rinetd服务

  2. vi /etc/systemd/system/rinetd.service

复制下面的内容进行保存:

  1. [Unit]

  2. Description=rinetd

  3. After=network.target

  4.  
  5. [Service]

  6. Type=forking

  7. ExecStart=/usr/local/sbin/rinetd -c /etc/rinetd.conf

  8.  
  9. [Install]

  10. WantedBy=multi-user.target

输入命令:systemctl daemon-reload重载daemon使其生效,然后就可以使用下面的命令来管理rinetd了。

  1. #启动rinetd

  2. systemctl start rinetd

  3. #设置开机启动

  4. systemctl enable rinetd

  5. #停止rinetd

  6. systemctl stop rinetd

  7. #重启

  8. systemctl restart rinetd

rinetd的一些问题

rinetd支持转发到域名,rinetd会提前解析域名,并将解析出的IP缓存到内存中,如果您的域名解析IP发生了变化必须重启rinetd才会生效,所以rinetd并不适合转发到域名IP经常发生变化的情况,而socat则不存在此问题。

其它转发工具

总结

rinetd安装和配置都非常简单,并且从0.70版本开始已经支持UDP转发,但rinetd具体性能如何xiaoz并未进一步测试,不知道高并发的情况下能否扛得住。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值