某位阿里云上的用戶提了個需求:
阿里云上兩個數據庫服務器A和B,本來規(guī)劃是沒有公網IP,不能從公網訪問,只能線上業(yè)務系統(tǒng)從VPC訪問。
但是后續(xù)用戶的報表系統(tǒng)要從公網直連數據庫服務器A,用于輸出報表。
所以就給A服務器臨時配置了個EIP(彈性公網IP),可以從公網訪問服務器A的Oracle數據庫。
隨后又需要從公網連接服務器B,但不想再買EIP(彈性公網IP)。
rinetd是一個可以實現TCP端口轉發(fā)的小軟件(UDP不支持)。
可以編譯安裝,也可以rpm安裝。
rpm包下載地址如下:
http://li.nux.ro/download/nux/misc/el6/x86_64/rinetd-0.62-9.el6.nux.x86_64.rpm
圖1 添加語句
圖2 服務器A的監(jiān)聽端口
在A服務器上安裝這個軟件
r p m - i v h rinetd-0.62-9.el6.nux.x86_64.rpm
修改/etc/rinetd.conf文件
添加如下語句,如圖1。
語句1,在A服務器的所有IP上監(jiān)聽15282端口,將流量轉發(fā)給10.10.10.81(服務 器 B) 的1521端口。
語句2,同時限制只能申明的3個IP可以訪問該端口。
檢查配置文件語法是否正確
/sbin/rinetd -c /etc/rinetd.conf
啟動rinetd服務
service rinetd start
查看服務器A的監(jiān)聽端口,如圖2。
到此步,后面連接服務器A的TCP 15282端口就相當于連接服務器B的TCP 1521端口。
理論上來說iptables也是可以實現該需求的,只是公有云上一般都提供安全組或者虛擬防火墻,不需要開iptables,如果開起可能會影響到已經在線上運行的業(yè)務。
如果需要其他協(xié)議類型,如UDP的轉發(fā),就需要socat一類的軟件了。