一、背景
在Linux系統(tǒng)中大多數(shù)情況選擇用iptables來實(shí)現(xiàn)端口轉(zhuǎn)發(fā),iptables雖然強(qiáng)大,但配置不便,而且新手容易出錯(cuò)。
在此分享另一個(gè)TCP/UDP端口轉(zhuǎn)發(fā)工具rinetd,rinetd體積小巧,配置也很簡(jiǎn)單。
二、安裝rinetd
#安裝依賴
yum -y install gcc gcc-c++ make automake
#下載rinetd
wget https://github.com/samhocevar/rinetd/releases/download/v0.70/rinetd-0.70.tar.gz
#解壓
tar -zxvf rinetd-0.70.tar.gz
#進(jìn)入目錄
cd rinetd-0.70
#編譯安裝
./bootstrap
./configure
安裝后,可以輸入rinetd -v查看當(dāng)前版本。
# rinetd -v
rinetd 0.70
隨著時(shí)間推移,上面下載地址不一定是最新的,大家可前往Github:https://github.com/samhocevar/rinetd/releases下載最新版本。
特別注意: 2019年12月26日,某組織注冊(cè)的http://www.rinetd.com/域名上線,以rinetd工具的'官方'站點(diǎn)的身份,對(duì)外提供附帶后門的rinetd源碼壓縮包下載。
三、 設(shè)置TCP端口轉(zhuǎn)發(fā)
#新建rinetd配置文件
vi /etc/rinetd.conf
#填寫如下內(nèi)容
0.0.0.0 2018 103.74.192.160 2019
#啟動(dòng)rinetd
rinetd -c /etc/rinetd.conf
rinetd配置文件的格式如下:
0.0.0.0:源IP
2018:源端口
103.74.192.160:目標(biāo)IP
2019:目標(biāo)端口
上面配置的意思是將本地2018端口轉(zhuǎn)發(fā)到103.74.192.160的2019端口,啟動(dòng)后可以輸入netstat -apn|grep 'rinetd'查看是否運(yùn)行正常,注意還需要在自己服務(wù)器防火墻放行對(duì)應(yīng)的源端口,否則無法正常使用用。
從0.70版本開始rinetd已經(jīng)支持UDP轉(zhuǎn)發(fā),寫法如下:
127.0.0.1 8000/udp 192.168.1.2 8000/udp
為了方便管理,我們可以為rinetd編寫一個(gè)systemd服務(wù),有興趣的同學(xué)可參考《Linux系統(tǒng)編寫Systemd Service實(shí)踐》。
#創(chuàng)建rinetd服務(wù)
vi /etc/systemd/system/rinetd.service
[Unit]
Description=rinetd
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/sbin/rinetd -c /etc/rinetd.conf
[Install]
WantedBy=multi-user.target
# 重載daemon
systemctl daemon-reload
#啟動(dòng)rinetd
systemctl start rinetd
#設(shè)置開機(jī)啟動(dòng)
systemctl enable rinetd
#停止rinetd
systemctl stop rinetd
#重啟
systemctl restart rinetd
四、 rinetd的一些問題
rinetd支持轉(zhuǎn)發(fā)到域名,rinetd會(huì)提前解析域名,并將解析出的IP緩存到內(nèi)存中,如果您的域名解析IP發(fā)生了變化必須重啟rinetd才會(huì)生效,所以rinetd并不適合轉(zhuǎn)發(fā)到域名IP經(jīng)常發(fā)生變化的情況,而socat則不存在此問題。
rinetd安裝和配置都非常簡(jiǎn)單,并且從0.70版本開始已經(jīng)支持UDP轉(zhuǎn)發(fā),但rinetd具體性能如何并未進(jìn)一步測(cè)試,不知道高并發(fā)的情況下能否扛得住。
五、參考
rinetd實(shí)現(xiàn)TCP/UDP端口轉(zhuǎn)發(fā)
https://mp.weixin.qq.com/s/lkk1gZ-6AgOVK_AEehh59Q
知名端口轉(zhuǎn)發(fā)工具rinetd遭高仿投毒
https://mp.weixin.qq.com/s/9N1nO1KwR-IEz2RYedhNEQ