• 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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    如何删除windows服务zz 重新安装PostgreSQL时删除上次遗留service的方法
    如何配置OGRE 1.7.0+CEGUI 0.7.1
    [原]一个由memset引发的知识点
    ArcGis测距问题
    自己动手,制作.net35离线安装包
    TTS语音合成
    Acess字段名用到与系统冲突的特殊名时的处理
    程序运行长期等待时显示等待动画
    修改Windows 2003 SOCKET端口数量默认5000限制
    服务器上发布的网站应用80端口时内网可以访问,外网不能访问
  • 原文地址:https://www.cnblogs.com/xiami2046/p/12729130.html
Copyright © 2020-2023  润新知