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
軟件安裝:
#解壓安裝 tar zxvf rinetd.tar.gz cd rinetd make make install
執行過程中如果出現下面的錯誤
install: cannot create regular file `/usr/man/man8': No such file or directory
需要手動創建一下文件夾,重新編譯安裝即可
mkdir -p /usr/man/man8
然后開始配置文件.
#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端口
命令格式是:
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
因為我們的跳板機都是轉發的數據庫和redis的端口,運行了一段時間后每天早上來rinetd服務就掛了,沒辦法就執行寫個腳本檢查pid號,如果掛了就重啟。
#!/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
