专栏首页吴伟祥一分钟上手Rinetd——端口转发工具 原

一分钟上手Rinetd——端口转发工具 原

前言

iptables 的功能当然强大,但理解与设置却有点抽象,便通过google认识了rinetd。

简介

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

Rinetd官网  https://boutell.com/rinetd/

安装

cat >> rinetd-installer.sh <<'EOF'
#!/bin/bash
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar zxvf rinetd.tar.gz
cd rinetd
mkdir -p /usr/man/man8
# make编译提示:make cc Command not found 解决办法 -> yum安装gcc
yum install gcc
make && make install
EOF
chmod +x rinetd-installer.sh
./rinetd-installer.sh

配置

配置端口转发的配置文件在/etc/rinetd.conf

配置文件格式

[Source Address] [Source Port] [Destination Address] [Destination Port]
源地址 源端口 目的地址 目的端口

在每一单独的行中指定每个要转发的端口。源地址和目的地址都可以是主机名或IP地址,IP 地址0.0.0.0将rinetd绑定到任何可用的本地IP地址上。例如:0.0.0.0 8080 wuweixiang.cn 80

rm -f /etc/rinetd.conf
cat >> /etc/rinetd.conf <<EOF
# 设置允许访问的ip地址信息
# allow 192.168.2.*

# 设置拒绝访问的ip地址信息
# deny 192.168.1.*

# 设置日志文件路径
logfile /var/log/rinetd.log

# 例子: 将本机 8080 端口重定向至 188.131.152.100 的 8080 端口
# 0.0.0.0 8090 188.131.152.100 8080
EOF

创建启动脚本

cat >> /etc/init.d/rinetd <<'EOF'
#!/bin/bash

EXEC=/usr/sbin/rinetd
CONF=/etc/rinetd.conf
PID_FILE=/var/run/rinetd.pid
NAME=Rinetd
DESC="Rinetd Server"

case "$1" in
    start)
        if [ -x "$PID_FILE" ]; then
            echo "$NAME is running ..."
            exit 0
        fi

        $EXEC -c $CONF

        echo -e "\e[1;32m$NAME is running\e[0m"
    ;;
    stop)
        if [ -f "$PID_FILE" ]; then
            kill `cat $PID_FILE`

            while [ -x "$PID_FILE" ]
            do
                echo "Waiting for $NAME to shutdown..."  
                sleep 1
            done

            rm -f $PID_FILE
        fi

        echo -e "\e[1;31m$NAME stopped.\e[0m"
    ;;
    restart)
        $0 stop
        $0 start
    ;;
    status)
        if [ -f $PID_FILE ]; then
            echo "$NAME is running ..."
        else
            echo "$NAME stopped."
        fi
    ;;
    *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 2
    ;;
esac

exit 0
EOF

启动服务

/etc/init.d/rinetd start

开机启动

在/etc/rc.local 文件中,添加/usr/sbin/rinetd 或者 /usr/sbin/rinetd -c /etc/rinetd.conf 启动命令即可。

需要注意

rinetd.conf中绑定的本机端口必须没有被其它程序占用

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 系统服务管理工具 systemd 原

    在RHEL 7.x/CentOS 7.x版本中,一个重要的改变就是 使用systemd 管理机制,

    wuweixiang
  • Java对象的序列化和反序列化 转

    把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序...

    wuweixiang
  • 四种任务调度的 Java 实现 转

     java.util.Timer 了,它是最简单的一种实现任务调度的方法,下面给出一个具体的例子:

    wuweixiang
  • HDU 5215 Cycle(dfs判环)

    \(T\)组数据,给出\(n\)个点\(m\)条边的有向图,问是否存在一个奇环/偶环

    attack
  • 从小程序到小程序云开发

    集成于小程序控制台的原生serverless云服务 核心功能包括: 云存储,云数据库,云函数

    达达前端
  • 无锁CAS整理

    所有的锁都是悲观的,他们总是假设每一次的临界区操作会产生冲突,如果有多个线程同时需要访问临界区资源,就宁可牺牲性能让线程进行等待,所以说锁会阻塞线程执行.而无锁...

    算法之名
  • 网站实现markdown功能

    由于个人一直想弄一个博客网站,所以写博客的功能也就必须存在啦,而之前想过用富文本编辑器来实现的。但是接触了markdown后,发现真的是太好玩了,而且使用mar...

    Johnson木木
  • JavaScript基本类型与引用类型(二)

    前文已经对基本类型和引用类型作了简单的介绍,本文将进一步介绍基本类型和引用类型。 基本包装类型   为了方便操作基本类型的值,JavaScript提供了特殊的引...

    水击三千
  • 饿了么:日订单量超900万的架构设计及演进之路

    网站在刚开始的时候大概只是一个想法:一个产业的模型,快速地将它产生出来。“快”是第一位的,不需要花太多精力在架构设计上。在网站进入扩张期才需要对架构投入更多的精...

    Java高级架构
  • P2P网贷信用评分项目分享(一)

    此项目为kaggle竞赛平台的give me some credits。其目的是预测银行用户违约概率,以辅助银行判断是否要对用户进行放贷。关于风险控制建模的大致...

    用户2769421

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动