CentOS7.x上轻量级TCP转发工具rinetd的安装配置
一、实验背景
Linux下端口转发一般都使用iptables来实现,使用iptables可以很容易将TCP和UDP端口从防火墙转发到内部主机上。
如果需要将流量从专用地址转发到不在您当前网络上的机器上,可尝试另一个应用层端口转发程序rinetd,配置起来比iptables也简单很多。
Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具。Rinetd是单一过程的服务器,它处理任何数量的连接到在配置文件etc/rinetd中指定的地址/端口对,尽管rinetd使用非闭锁I/O运行作为一个单一过程,它可能重定向很多连接而不对这台机器增加额外的负担。
虽然这些代码有点古老,版本很多年没有更新了,但很短小、高效,对于解决这种问题来说是非常完美的。
二、实验环境
操作系统: CentOS7.5 Minimal
rinted服务器: 192.168.1.103
Backend服务器: 192.168.1.107
三、安装rinetd
安装rinted方式主要有两种:rpm包安装和源码编译安装
rpm安装方式
网上有人用源码包编译了rpm安装包,联网的情况下我们可以直接配置yum源安装,离线的情况下我们可以将下载的rpm包拷贝到无网的服务器,因为主包没有依赖,安装显得异常简单方便。
配置yum仓库安装
# vim /etc/yum.repos.d/nux-misc.repo
####################################################
[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el7/x86_64/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
#######################################################
# yum -y install rinetd --disablerepo="*" --enablerepo=nux-misc
# wget http://li.nux.ro/download/nux/misc/el7/x86_64//rinetd-0.62-9.el7.nux.x86_64.rpm
# rpm -ivh rinetd-0.62-9.el7.nux.x86_64.rpm
# rpm -ql rinetd
# cat /etc/rc.d/init.d/rinetd
# cat /etc/rinetd.conf
# /usr/sbin/rinetd --help
# /usr/sbin/rinetd -v
# systemctl status rinetd
源码编译安装
# yum -y install gcc make
# wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
# tar -zxf rinetd.tar.gz
# cd rinetd
# mkdir -p /usr/man/man8
# make && make install
# which rinetd
# /usr/sbin/rinetd --help
# /usr/sbin/rinetd -v
# man rinetd
# man rinetd > rinetd.txt
四、将源码编译安装注册成系统服务
# mkdir /usr/local/rinetd
# mkdir /usr/local/rinetd/sbin
# mkdir /usr/local/rinetd/etc/
# mkdir /usr/local/rinetd/log
# mv /usr/sbin/rinetd /usr/local/rinetd/sbin
# vim /usr/local/rinetd/etc/rinetd.conf
#############################################################
# example configuration file for rinetd
# to forward connections to port 80 on 10.10.10.2 to port 80 on 192.168.0.2
# 10.10.10.2 80 192.168.0.2 80
# to forward connections to port 80 on all addresses to port 80 on 192.168.0.2
# 0.0.0.0 80 192.168.0.2 80
# access controls can be set with allow and deny rules
# allow and deny before the first forwarding rule are global
# allow and deny after a specific rule apply to it only
# this rule allows hosts from 172.16.32.0/24 netblock
# allow 172.16.32.*
# this rule denies the host 192.168.32.12
# deny 192.168.32.12
# rinetd supports logging - to enable, uncomment the following
# logfile /var/log/rinetd.log
# by default, logs are in a tab-delimited format. Web common-log format
# is available by uncommenting the following
# logcommon
#############################################################
编写Unit文件
# vim /etc/systemd/system/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
# systemctl start rinetd.service
# systemctl enable rinetd.service
# systemctl status rinetd.service
rinetd 用于网络端口转发,运行用户只能是root
五、关于rinetd 的配置文件的配置
rpm安装的配置文件默认路径是/etc/rinetd.conf,本实验中我们将编译安装的配置文件 /usr/local/rinetd/etc/rinetd.conf
注意:源端口转发到目标端口时,源端口要是空闲端口,否则会报端口已被占用
关于配置文件的更多其他配置,见参考文档
六、端口转发测试
实验:将rinted服务器(192.168.1.103)的6033端口转到Backend服务器(192.168.1.107)的3306
在Backend服务器(192.168.1.107)
# systemctl status mysqld
# ss -tan | grep 3306
# firewall-cmd --zone=public--add-port=3306/tcp --permanent
# firewall-cmd --reload
在rinted服务器(192.168.1.103)
# firewall-cmd --zone=public--add-port=6033/tcp --permanent
# firewall-cmd --reload
# vim /usr/local/rinetd/etc/rinetd.conf
#############################################
192.168.1.103 6033 192.168.1.107 3306
allow 192.168.1.*
logfile /usr/local/rinetd/log/rinetd.log
#############################################
# systemctl restart rinetd.service
# systemctl status rinetd.service
# echo > /dev/tcp/192.168.1.103/6033
# echo > /dev/tcp/192.168.1.107/3306
# tail /usr/local/rinetd/log/rinetd.log
七、参考
Linux下使用 Rinetd 来实现端口转发
https://www.hi-linux.com/posts/29683.html
RINETD(8) Unix System Manager's Manual
https://www.boutell.com/rinetd
生产环境中谨慎使用rinetd
https://blog.csdn.net/woshiaotian/article/details/78133195
Linux安装rinetd实现TCP端口转发
https://www.xiaoz.me/archives/10175
rinetd-0.62-9.el7.nux.x86_64.rpm
https://centos.pkgs.org/7/nux-misc-x86_64/rinetd-0.62-9.el7.nux.x86_64.rpm.html
Port-Forwarding With rinetd
https://www.howtoforge.com/port-forwarding-with-rinetd-on-debian-etch
Comprehensive Guide to Port Redirection using Rinetd
https://www.hackingarticles.in/comprehensive-guide-to-port-redirection-using-rinetd
作者:赏金Micheal
链接:https://www.jianshu.com/p/2605d247b944
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
CentOS7.x上轻量级TCP转发工具rinetd的安装配置的更多相关文章
- [转帖]【rinetd】CentOS7.x上轻量级TCP转发工具rinetd的安装配置
[rinetd]CentOS7.x上轻量级TCP转发工具rinetd的安装配置 https://www.jianshu.com/p/2605d247b944 这一个写的更加全面了. 2019.07.0 ...
- QC邮件转发工具Mail Direct安装配置手册
QC邮件转发工具Mail Direct安装配置手册 2010-06-11 10:00:56| 分类: 软件测试 | 标签: |举报 |字号大中小 订阅 QC邮件转发工具安装配置手册 由于公司没有独立的 ...
- 端口转发工具rinetd的安装与配置
端口映射和转发在实际应用中非常常见,比如一个局域网只有一台服务器可以被互联网访问到,那么如果想通过互联网访问局域网中其他的服务,最常用的方式就是在这一台机器上开放端口,然后转发至局域网中其他主机的端口 ...
- Linux进程管理工具Supervisor的安装配置
目录 Linux进程管理工具Supervisor的安装配置 简介 安装Python包管理工具 安装Supervisor 配置 配置文件参数说明 配置进程管理 启动supervisor 控制进程 交互终 ...
- MySQL---6、可视化工具工具之SQLYog安装配置
一.安装文件包下载 https://pan.baidu.com/share/link?shareid=4149265923&uk=724365661&fid=2642450782 二. ...
- 开发工具IDEA环境安装配置
开发工具IDEA环境安装配置 该工具和eclipse类似,但是使用感受确实比eclipse好,越来越多人开始使用IDEA了. 下载地址如下 : https://www.jetbrains.com/id ...
- 全平台正向tcp端口转发工具rinetd的使用
Linux下做地址NAT有很多种方法.比如haproxy.nginx的4层代理,linux自带的iptables等都能实现.其实,Linux下有一个叫rinetd的工具,安装简单,配置也不复杂. 下载 ...
- linux下简单好用的端口映射转发工具rinetd 转
linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载 wget http://www.boutell.com ...
- linux下简单好用的端口映射转发工具rinetd
linux下简单好用的工具rinetd,实现端口映射/转发/重定向官网地址http://www.boutell.com/rinetd 软件下载wget http://www.boutell.com/r ...
随机推荐
- android的volley学习
更简单的一种方式是在build.gradle中引入依赖[推荐这种方式] compile 'com.android.volley:volley:1.1.1' StringRequest的用法接下来我们看 ...
- flask from_object和from_pyfile的区别
flask from_object和from_pyfile的区别 from_object接受的是一个模块对象,需求导入 from_pyfile接受的是一个文件名的字符串,文件可以不是py文件也可以是 ...
- (js描述的)数据结构[双向链表](5)
(js描述的)数据结构[双向链表](5) 一.单向链表的缺点 1.只能按顺序查找,即从上一个到下一个,不能反过来. 二.双向链表的优点 1.可以双向查找 三.双向链表的缺点 1.结构较单向链表复杂. ...
- Linux网络篇,ssh原理及应用
一.对称加密与非对称加密 对称加密: 加密和解密的秘钥使用的是同一个. 非对称加密: 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥:简称公钥和私钥 对称加密 对称加密的密 ...
- Hadoop(二) 单节点案例grep和wordcount|4
前提步骤安装Hadoop,安装步骤: https://www.jianshu.com/p/2ce9775aeb6e 单节点案例官方文档地址:http://hadoop.apache.org/docs/ ...
- CSS躬行记(6)——滤镜
滤镜(filter)可改造元素的视觉呈现,CSS内置的滤镜有10种,通过SVG文件还能自定义滤镜. 一.调色滤镜 调色滤镜可控制元素的模糊.颜色.亮度等变化,并且多个滤镜可组合在一起使用.这些滤镜大部 ...
- 一文回顾Reids五大对象(数据类型)
Redis 是一个高性能的分布式内存型数据库,在国内外各大互联网公司中都有着广泛的使用,即使是一些非互联网公司中也有着非常重要的适用场景,所以对 Redis 的掌握也成为后端工程师必备的基础技能,在面 ...
- 远程登录redis
没想到吧,我居然已经摸到了redis. 远程登录redis redis-cli -h 127.0.0.1 -p 6379 ip地址和端口记得换成自己的
- linux通过进程名查看其占用端口
1.先查看进程pid ps -ef | grep 进程名 2.通过pid查看占用端口 netstat -nap | grep 进程pid 参考: https://blog.csdn.net/sinat ...
- linux 文件的查找和压缩
1.使用 locate 命令 需要安装:yum install mlocate -y 创建或更新 slocate/locate 命令所必需的数据库文件:updatedb 作用:搜索不经常改变的文件如配 ...