Rinetd自用小脚本

天和上次一样,在网上闲逛的时候又发现了一个名为rinetd的流量转发工具,同样想来折腾试试

,所以就又写了一个自用的简单小脚本。

用法

贴一下github地址,网上的地址似乎都不怎么对。。。

boutell/rinetd

不过似乎是建议我们用一个还在维护的版本

samhocevar/rinetd

具体的文档大家可以自己去看。

脚本

脚本如下,自己用的是Debian10,其它系统没试过,不过似乎问题应该不大(???)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/bash
RINETD_VERSION="0.73"

# 注意先装好gcc和make等依赖
install_rinetd() {
    apt update && apt upgrade -y # 我用的Debian10,根据自己系统改一下
    apt install -y gcc make
    cd ~
    wget "https://github.com/samhocevar/rinetd/releases/download/v${RINETD_VERSION}/rinetd-${RINETD_VERSION}.tar.gz"
    tar -xzf rinetd-${RINETD_VERSION}.tar.gz
    cd rinetd-${RINETD_VERSION}
    mkdir build && cd build
    ../configure && make && make install
    echo "" >/usr/local/etc/rinetd.conf

    # 设置启动项
    cat <<EOF >/lib/systemd/system/rinetd.service
[Unit]
Description=rinetd
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/sbin/rinetd -c /usr/local/etc/rinetd.conf

[Install]
WantedBy=multi-user.target
EOF
    systemctl daemon-reload && systemctl enable rinetd
    systemctl start rinetd

    # 删除安装文件
    cd ~ && rm -rf rinetd-*
    echo "安装完成!"
}

restart_rinetd() {
    systemctl restart rinetd
}

uninstall_rinetd() {
    systemctl stop rinetd && systemctl disable rinetd
    rm -f /lib/systemd/system/rinetd.service
    systemctl daemon-reload
    rm -f /usr/local/sbin/rinetd
    rm -f /usr/local/etc/rinetd.conf
    echo "卸载完成!"
}

add_port() {
    echo "请输入以下信息: "
    read -p "源地址: " src_addr
    read -p "源端口: " src_port
    read -p "目标地址: " dest_addr
    read -p "目标端口: " dest_port
    echo "${src_addr}  ${src_port}  ${dest_addr}  ${dest_port}" >>/usr/local/etc/rinetd.conf
    restart_rinetd
    echo "端口添加完成!"
}

delete_port() {
    read -p "请输入要删除的源端口: " del_port
    echo "正在删除......"
    cat /usr/local/etc/rinetd.conf | sed "/ ${del_port} /d" >/usr/local/etc/rinetd.conf
    restart_rinetd
    echo "已删除!"
}

clean_config() {
    echo "" >/usr/local/etc/rinetd.conf
    restart_rinetd
    echo "配置已清空!"
}

list_ports() {
    echo "配置信息如下:"
    echo "---------------------------------------"
    echo "|源地址  | 源端口 | 目标地址 | 目标端口|"
    echo "---------------------------------------"
    cat /usr/local/etc/rinetd.conf
}

work() {
    cat >.tmp_rinetd <<EOF
    ---------- 请选择要进行的操作 ----------
    
    1.安装rinetd
    2.卸载rinetd
    3.添加端口
    4.删除端口
    5.清空配置
    6.查看端口
    7.重新启动
    8.停止程序
    9.退出脚本
  
EOF
    cat .tmp_rinetd
    read -p "请输入选择: " choice

    case ${choice} in
    1)
        install_rinetd
        ;;
    2)
        uninstall_rinetd
        ;;
    3)
        add_port
        ;;
    4)
        delete_port
        ;;
    5)
        clean_config
        ;;
    6)
        list_ports
        ;;
    7)
        restart_rinetd
        ;;
    8)
        systemctl stop rinetd
        ;;
    *)
        rm -f .tmp_rinetd && exit
        ;;
    esac
    rm -f .tmp_rinetd
}

# run script
work

其他

设置了开机自启动,重启不需要自己手动启动。

当然也可以自己改一下脚本加进去😄。

同样,版本号之后也可以改成最新的,卸载之后再安装,完成升级。

OVER

updatedupdated2023-04-072023-04-07