linux rinetd 端口轉發部署


軟件下載
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz

解壓安裝
tar zxvf rinetd.tar.gz
make
make install

編輯配置
vi /etc/rinetd.conf
0.0.0.0 8080 172.19.94.3 8080
0.0.0.0 2222 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端口
將所有發往本機2222端口的請求轉發到192.168.0.103的3389端口
將所有發往1.2.3.4的80端口請求轉發到192.168.0.10的80端口

命令格式是
bindaddress bindport connectaddress connectport
綁定的地址  綁定的端口  連接的地址  連接的端口

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

啟動程序
pkill rinetd  ##關閉進程
rinetd -c /etc/rinetd.conf  ##啟動轉發
把這條命令加到/etc/rc.local里面就可以開機自動運行

查看狀態
netstat -antup

需要注意
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

另外我加了一下監控服務

#!/bin/sh#------------------------------------------------------------------------------
# 函數: CheckProcess
# 功能: 檢查一個進程是否存在
# 參數: $1 --- 要檢查的進程名稱
# 返回: 如果存在返回0, 否則返回1.
#------------------------------------------------------------------------------

CheckProcess()
{
# 檢查輸入的參數是否有效
  if [ "$1" = "" ];
  then
    return 1
  fi
#$PROCESS_NUM獲取指定進程名的數目,為1返回0,表示正常,不為1返回1,表示有錯誤,需要重新啟動
  PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l`
  if [ $PROCESS_NUM -eq 1 ];
  then
    return 0
  else
    return 1
  fi
}
# 檢查rinetd實例是否已經存在
while [ 1 ] ; do
 CheckProcess "rinetd"
 CheckQQ_RET=$?
 if [ $CheckQQ_RET -eq 1 ];
 then
# 殺死所有rinetd進程,可換任意你需要執行的操作
 rinetd -c /etc/rinetd.conf &
 fi
 sleep 300
done


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com