Centos7安装轻量级TCP转发工具rinetd注册为服务的正确姿势 并设置开机自启 实践笔记 自用
程序员文章站
2024-03-21 19:07:40
...
Centos7安装轻量级TCP转发工具rinetd注册为服务的正确姿势 并设置开机自启 实践笔记 自用
CentOS-7-x86_64-Minimal-1708
rinetd 0.62
注意rinetd只支持TCP不支持UDP转发,需要udp的可以不用往下看了
1.下载官方rinetd源码编译安装(boutell.com 已不再是rinetd的官网,作者已把代码开源到Github上)
我这边以当前0.62版本为例
若下载很慢,使用下面我提供的官方原版软件
源地址失效的话用百度云盘链接下载
链接: rinetd.tar.gz官方原版 提取码:31k7
2.源码编译安装
#安装依赖
yum install gcc gcc-c++ make git -y
#克隆源码
git clone https://github.com/boutell/rinetd.git
#进入rinetd源码目录
cd rinetd
#创建手册目录
mkdir -p /usr/man/man8
#编译安装
make && make install
[root@localhost rinetd]# mkdir -p /usr/man/man8
[root@localhost rinetd]# make && make install
cc -DLINUX -g -c -o rinetd.o rinetd.c
rinetd.c:176:6: 警告:与内建函数‘log’类型冲突 [默认启用]
void log(int i, int coSe, int result);
^
cc -DLINUX -g -c -o match.o match.c
cc rinetd.o match.o -o rinetd
install -m 700 rinetd /usr/sbin
install -m 644 rinetd.8 /usr/man/man8
[root@localhost rinetd]#
[root@localhost rinetd]# /usr/sbin/rinetd -v
rinetd 0.62
#导出手册
man rinetd > rinetd.txt
3.注册成系统服务
#创建rinetd相关文件夹
mkdir /usr/local/rinetd /usr/local/rinetd/sbin /usr/local/rinetd/etc/ /usr/local/rinetd/log
#移动可执行文件
mv /usr/sbin/rinetd /usr/local/rinetd/sbin
#编辑配置文件
vim /usr/local/rinetd/etc/rinetd.conf
#配置文件内容
#vim /usr/local/rinetd/etc/rinetd.conf
#
0.0.0.0 3306 192.168.0.110 3306
#0.0.0.0 3306 3a9f2f27648e4c85a9c5d2e7fba12ae0in01.internal.cn-north-4.mysql.rds.myhuaweicloud.com 3306
0.0.0.0 6379 redis-47c5c0d-dcs-ps4e.dcs.huaweicloud.com 6379
logfile /usr/local/rinetd/log/rinetd.log
简单解释(可以是ip也可以是域名,也可以是外网ip[一般不转发到外网])
0.0.0.0 3306 192.168.0.110 3306
0.0.0.0 --- 源IP
3306 --- 源端口
192.168.0.110 --- 目标IP
3306 --- 目标端口
上面配置的意思是将本机3306端口转发到192.168.0.110的3306端口
注意还需要在自己服务器防火墙放行对应的源端口,否则无法正常使用。
4.编写服务文件
vim /lib/systemd/system/rinetd.service
服务文件rinetd.service
[Unit]
Description=Rinetd Daemon
After=network.service
Wants=network.service
[Service]
Type=forking
PIDFile=/var/run/rinetd.pid
ExecStart=/usr/local/rinetd/sbin/rinetd -c /usr/local/rinetd/etc/rinetd.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
#重新加载
systemctl daemon-reload
#开机自启rinetd
systemctl enable rinetd.service
5.rinetd常见命令
systemctl enable rinetd.service //开机自启rinetd
systemctl disable rinetd.service //禁用开机自启rinetd
systemctl start rinetd.service //启动rinetd
systemctl stop rinetd.service //关闭rinetd
systemctl restart rinetd.service //重启rinetd
systemctl status rinetd.service //查看状态rinetd
上一篇: 父类对象引用子类对象规则
下一篇: Java读写文件和Scala读写文件