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

centos安裝

32位元系統

$ vim /etc/yum.repos.d/nux-misc.repo

[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el6/i386/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

64位元系統

$ vim  /etc/yum.repos.d/nux-misc.repo:

[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el6/x86_64/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

ubuntu

$ apt-get install rinetd

編譯安裝

$ wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
$ mkdir  -p /usr/man/man8  
$ make && make install

設定檔配置

[bindaddress] [bindport] [connectaddress] [connectport]
綁定的位址    綁定的埠  連接的位址      連接的埠

[Source Address] [Source Port] [Destination Address] [Destination Port]
源位址            源埠         目的地址               目的埠

範例

# rinetd supports logging - to enable, uncomment the following
# logfile /var/log/rinetd.log

# by default, logs are in a tab-delimited format. Web common-log format
# is available by uncommenting the following
# logcommon

0.0.0.0 3309 mysql.test 3306

啟動Rinetd

$ /etc/init.d/rinetd start

編譯手動指定設定檔起動

$ /usr/sbin/rinetd -c /etc/rinetd.conf

停止

$ /etc/init.d/rinetd stop
$ pkill rinetd

商用環境不建議使用rinetd 原因是這套無法支持長連線轉發 rinetd 沒有使用epoll,而是用了select
眾所周知, select是基於類似的輪訓的機制,反復去查詢fd的情況,並且會在內核空間和使用者空間拷貝fd集合
在IO比較高的情況下,select相比epoll有更高的CPU消耗,並且select默認最大支持1024個fd
所以rinetd才把CPU打的比較高,導致轉發服務異常

參考資料
https://www.hi-linux.com/posts/29683.html
https://blog.csdn.net/woshiaotian/article/details/78133195
https://www.moerats.com/archives/576/

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料