在Linux系統中大多數情況選擇用iptables來實作端口轉發,iptables雖然強大,但配置不便,而且新手容易出錯。在此分享另一個TCP/UDP端口轉發工具rinetd,rinetd體積小巧,配置也很簡單。

這篇文章以CentOS 7為例,複制下面的指令輸入,一行一個:
安裝後,可以輸入<code>rinetd -v</code>檢視目前版本。
rinetd配置檔案的格式如下:
<code>0.0.0.0</code>:源IP
<code>2018</code>:源端口
<code>103.74.192.160</code>:目标IP
<code>2019</code>:目标端口
上面配置的意思是将本地2018端口轉發到<code>103.74.192.160</code>的2019端口,啟動後可以輸入<code>netstat -apn|grep 'rinetd'</code>檢視是否運作正常,注意還需要在自己伺服器防火牆放行對應的源端口,否則無法正常使用用。
從<code>0.70</code>版本開始rinetd已經支援UDP轉發,寫法如下:
為了友善管理,我們可以為rinetd編寫一個systemd服務,有興趣的同學可參考《Linux系統編寫Systemd Service實踐》,xiaoz已經編寫好了,直接複制下面的内容即可:
複制下面的内容進行儲存:
輸入指令:<code>systemctl daemon-reload</code>重載daemon使其生效,然後就可以使用下面的指令來管理rinetd了。
美洽線上客服系統
rinetd支援轉發到域名,rinetd會提前解析域名,并将解析出的IP緩存到記憶體中,如果您的域名解析IP發生了變化必須重新開機rinetd才會生效,是以rinetd并不适合轉發到域名IP經常發生變化的情況,而socat則不存在此問題。