一分鐘上手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中綁定的本機端口必須沒有被其它程序佔用

rinetd 在生產環境要謹慎使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章