Rinetd是為在一個Unix和Linux操作系統中為重定向傳輸控制協議(TCP)連接的一個工具。Rinetd是單一過程的服務器,它處理任何數量的連接到在配置文件etc/rinetd中指定的地址/端口對。盡管rinetd使用非閉鎖I/O運行作為一個單一過程,它可能重定向很多連接而不對這臺機器增加額外的負擔。
用途
使用Iptables 很容易將TCP 和UDP 端口從防火墻轉發到內部主機上。但是如果您需要將流量從專用地址轉發到甚至不在您當前網絡上的機器上,又該怎么辦呢?可嘗試另一個應用層端口轉發程序,如rinetd。
這些代碼有點古老,但很短小、高效,對于解決這種問題來說是非常完美的。
使用
解壓后,make && make install 就可以了
程序路徑 /usr/sbin/rinetd
需要配置文件 /etc/rinetd.conf
配置文件格式很簡單:
[Source Address] [Source Port] [Destination Address] [Destination Port]
在每一單獨的行中指定每個要轉發的端口。源地址和目的地址都可以是主機名或IP 地址,IP 地址0.0.0.0 將rinetd 綁定到任何可用的本地IP地址上:
0.0.0.0 8080
0.0.0.0 3306 192.168.1.77 3306
0.0.0.0 88 127.0.0.1 80
直接運行程序就可以了看到占用端口服務了。
上面是把訪問本機的8080端口的服務都遷移到機器上,把訪問本地的數據庫的轉移到192.168.1.77上,把訪問本地88端口的指向80端口服務。
可是阿權發現這個只是做了個代理的功能,比如最后一條得到的訪問者IP:
Remote_ADDR 192.168.1.77
也就是沒法獲取到用戶ip,這個比較可惜,但是對于IP訪問的服務做遷移還是不錯的,比如數據庫服務,可以在保留很多程序的連接方式不變的情況下,直接切換數據庫,也就是在主數據庫出問題了,可以立刻用這種方法轉換到備份數據庫。
所以,服務器主備模式的情況還是可以備一個的,這樣保證準時切換,可以做shell程序判斷端口服務是否正常,如果實在不正常或者無法服務,就自動切換到備份的,多方便呀~
當你的服務器要重新編號或物理位置變化而改變IP地址時你就能切實感受到這個工具的好處了,因為服務看上去就像保留在原始IP 地址(即便它們實際上完全是來自其他網絡)上。如果僅僅是綁定大于1024的端口,那么rinetd就不需要以root賬戶來運行。這種小工具很值得放在身邊,以便隨時調用TCP 端口間接尋址。
參考資料 >