zoukankan      html  css  js  c++  java
  • linux rinetd 端口转发部署

    linux下简单好用的工具rinetd,实现端口映射/转发/重定向

          Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具。Rinetd是单一过程的服务器,它处理任何数量的连接到在配置文件etc/rinetd中指定的地址/端口对。尽管rinetd使用非闭锁I/O运行作为一个单一过程,它可能重定向很多连接而不对这台机器增加额外的负担。

    官网地址:http://www.boutell.com/rinetd

    软件下载:wget http://www.boutell.com/rinetd/http/rinetd.tar.gz

    软件安装:

    1
    2
    3
    4
    5
    #解压安装
    tar zxvf rinetd.tar.gz
    cd rinetd
    make
    make install

    执行过程中如果出现下面的错误

    1
    install: cannot create regular file `/usr/man/man8': No such file or directory

    需要手动创建一下文件夹,重新编译安装即可

    1
    mkdir -p /usr/man/man8

    然后开始配置文件.

    1
    2
    3
    4
    #vim /etc/rinetd.conf
    0.0.0.0 8080 172.19.94.3 8080
    0.0.0.0 9090 192.168.0.103 3389
    1.2.3.4 80     192.168.0.10 80

    说明一下(0.0.0.0表示本机绑定所有可用地址)
    将所有发往本机8080端口的请求转发到172.19.94.3的8080端口
    将所有发往本机9090端口的请求转发到192.168.0.103的3389端口
    将所有发往1.2.3.4的80端口请求转发到192.168.0.10的80端口  

    命令格式是:

    1
    2
    3
    4
    5
    bindaddress   bindport      connectaddress   connectport
    绑定的地址      绑定的端口    连接的地址           连接的端口
    [Source Address] [Source Port] [Destination Address] [Destination Port]
    源地址                  源端口            目的地址                     目的端口    

    启动程序:

    1
    2
    3
    pkill rinetd                        #关闭进程
    rinetd -c /etc/rinetd.conf   ##启动转发
    #把这条命令加到/etc/rc.local里面就可以开机自动运行           

    查看状态:

    1
    netstat -antup

    需要注意:

    1
    2
    3
    4
    5
    1.rinetd.conf中绑定的本机端口必须没有被其它程序占用
    2.运行rinetd的系统防火墙应该打开绑定的本机端口
    例如:
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1111 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT

     因为我们的跳板机都是转发的数据库和redis的端口,运行了一段时间后每天早上来rinetd服务就挂了,没办法就执行写个脚本检查pid号,如果挂了就重启。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #!/bin/bash
     
    #rinetd pid check
     
    pid=`ps -ef |grep rinetd |grep -v grep`
     
    if [ $? -ne 0 ]
    then
      rinetd -c /etc/rinetd.conf
      echo "Start executive time:"`date`
    else
     
      echo rinetd pid is running...
      echo date is :`date`
    fi
     
    crontab -l
    1 */2 * * * /usr/local/src/pid-check.sh >> /tmp/rinetd.log 2>&1
     
    #每两个小时监测一次.

    参考文档:http://www.cnblogs.com/clds/p/5732370.html

                   http://www.trojansun.com/using-rinetd-for-port-forwarding.html  

  • 相关阅读:
    大爽Python入门教程 0-2 什么是IDE?python选什么IDE好?
    大爽Python入门教程 0-3 安装Atom与配置Python环境
    大爽Python入门教程 0-1 安装python
    HBase 过滤器 及shell 操作过滤器
    分布式ID生成方式(雪花算法)
    tidb 踩坑经验(转载)
    MYSQL ACID
    kafka什么时候会丢消息
    java 单例模式模式实现
    使用 GitHub 的十个最佳实践
  • 原文地址:https://www.cnblogs.com/xzlive/p/15460293.html
Copyright © 2011-2022 走看看