zoukankan      html  css  js  c++  java
  • 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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    DPDK安装方法 17.12.13
    numa.h:No such file or directory 解决方法
    17秋 软件工程 第六次作业 Beta冲刺 Scrum3
    17秋 软件工程 第六次作业 Beta冲刺 总结博客
    17秋 软件工程 第六次作业 Beta冲刺 Scrum2
    Paper Reviews and Presentations
    17秋 软件工程 第六次作业 Beta冲刺 Scrum1
    17秋 软件工程 第六次作业 Beta冲刺
    error: could not create '/System/Library/Frameworks/Python.framework/Versions/2.7/share': Operation not permitted
    17秋 软件工程 个人作业 软件产品案例分析
  • 原文地址:https://www.cnblogs.com/xiami2046/p/12729130.html
Copyright © 2011-2022 走看看