1. 程式人生 > 其它 >linux rinetd 埠轉發部署

linux rinetd 埠轉發部署

linux下簡單好用的工具rinetd,實現埠對映/轉發/重定向

Rinetd是為在一個Unix和Linux作業系統中為重定向傳輸控制協議(TCP)連線的一個工具。Rinetd是單一過程的伺服器,它處理任何數量的連線到在配置檔案etc/rinetd中指定的地址/埠對。儘管rinetd使用非閉鎖I/O執行作為一個單一過程,它可能重定向很多連線而不對這臺機器增加額外的負擔。

官網地址:http://www.boutell.com/rinetd

軟體下載:wgethttp://www.boutell.com/rinetd/http/rinetd.tar.gz

軟體安裝:

1 2 3 4 5 #解壓安裝
tar zxvf rinetd.tar.gz cd rinetd make make install

執行過程中如果出現下面的錯誤

1 install: cannot create regular file `/usr/man/man8': No such file or directory

需要手動建立一下資料夾,重新編譯安裝即可

1 mkdir -p /usr/man/man8

然後開始配置檔案.

1 2 3 4 #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埠  

命令格式是:

1 2 3 4 5 bindaddress bindport connectaddress connectport 繫結的地址 繫結的埠 連線的地址 連線的埠 [Source Address] [Source Port] [Destination Address] [Destination Port]
源地址 源埠 目的地址 目的埠

啟動程式:

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

檢視狀態:

1 netstat -antup

需要注意:

1 2 3 4 5 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號,如果掛了就重啟。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/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 pidisrunning... echo dateis:`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