其實 Linux 下使用 iptables 實現端口轉發就足夠了,例如:
iptables -t nat -I PREROUTING -p tcp --dport 555 -j DNAT --to-destination 2.2.2.2:3389
iptables -t nat -I POSTROUTING -j MASQUERADE
iptables配置較為複雜,作為小白的我還是選擇了使用 rinetd。
雖然 rinetd 有點古老,但很短小、高效,對於解決這種問題來說是非常完美的。
官網:http://www.boutell.com/rinetd/
方法
安裝 rinetd
可以使用apt-get或者yum安裝
root權限執行:
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -xvf rinetd.tar.gz
cd rinetd
sed -i 's/65536/65535/g' rinetd.c //修改rinetd.c,將查詢到的65536修改為65535
mkdir /usr/man/
make && make install
安裝在 /usr/sbin 目錄下
創建配置文件
nano /etc/rinetd.conf
填入配置信息,格式為:
SourceAddress SourcePort DestinationAddress DestinationPort
綁定的地址 綁定的端口 轉發的地址 轉發的端口
綁定地址的端口(數據)轉發地址的端口
在每一單獨的行中指定每個要轉發的端口。
源地址和目的地址都可以是主機名或 IP 地址,IP 地址為0.0.0.0 則將rinetd 綁定到任何可用的本地IP地址上
示例:
跳板 VPS 的 IP 為1.1.1.1, rinetd已經安裝在跳板 VPS 上。服務器的 IP 為2.2.2.2。
0.0.0.0 555 2.2.2.2 3389
可實現 訪問跳板 VPS(1.1.1.1)的555端口就等於訪問服務器(2.2.2.2)的3389端口。
程序啟動,停止,查詢,自啟動
創建完配置文件後,別忘了啟動程序才能生效。
啟動命令:/usr/sbin/rinetd
停止命令:killall rinetd
查看是否啟動:netstat -tanulp|grep rinetd
開機啟動:
在 /etc/rc.local 文件中,添加 /usr/sbin/rinetd 啟動命令即可。
還需要在iptables裡面開啟端口。
閱讀更多 一個路過的醬油瓶 的文章