可以通過端口映射的方式,來通過具有公網的云服務器 ecs 訪問用戶名下其它未購買公網帶寬的內網 ecs 上的服務。端口映射的方案有很多,比如 其它 下的 ssh tunnel、rinetd,windows 下的 portmap 等,本文簡要介紹 rinetd,和 ssh tunnel 的配置方法。
說明:本文相關配置和說明僅用于示例和操作指引,阿里云不對相關操作結果及由此產生的問題負責。
rinetd?配置方法
apt-get?install?rinetd?-y
下面介紹源代碼安裝配置方法:
1. 下載解壓 rinetd 軟件包:
wget?http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar?-xvf?rinetd.tar.gz&&cd?rinetd
2. 修改編譯配置:?
sed?-i?‘s/65536/65535/g’?rinetd.c#?修改端口范圍,否則會報錯
3. 編譯安裝:
mkdir?/usr/man&&make&&make?install
4. 創建其它:?
cat?>>/etc/rinetd.conf?/etc/rc.local?????????? #?allow?192.168.2. #?deny?192.168.1. #?bindadress?bindport?connectaddress?connectport0.0.0.0?3306?example.rds.aliyuncs.com?3306logfile?/var/log/rinetd.logendecho?rinetd?>>/etc/rc.local
? |
5. 使用:
rinetd?啟動后,就已經可以通過云服務器的 3306 端口連接到處于內網模式的 example rds 數據庫了。除了這個場景,其它的內網端口轉發配置也類似。不過,由于FTP 協議端口是隨機的,所以無法通過此方法實現轉發。
另外,配置文件中可以對某個 IP 或者 IP 段進行允許/拒絕,藉此提高內網端口的其它性。
SSH Tunnel 配置方法
通過putty 和 有公網 IP 的 ECS 之間建立 SSH 隧道,然后通過本地端口轉發,實現在客戶 PC 終端上對內網 ECS 和 RDS 的直接訪問,為客戶的遠程管理提供了巨大的方便。
其數據流向如下示意圖:?
前置條件
-
客戶 PC 終端可以 ssh 登錄有公網的 ECS 服務器。
-
有公網的 ECS 服務器可以通過內網訪問其他內網 ECS 服務器。
-
有公網的 ECS 服務器可以通過內網訪問 RDS(ECS 的內網 IP 在 RDS 的白名單中)。
客戶端配置
1. 其它 putty,填寫有公網 ECS 的 IP 及 ssh 端口
2. 設置?SSH Tunnel:Source Port 是 PC 本地監聽的端口,Destination?填寫內網 ECS 服務器的內網地址及端口。然后點擊?Add,就會生成一個端口轉發記錄,然后點擊?Open?會打開 SSH 連接:
3. 在彈出的窗口中輸入正常 SSH 登錄有公網 IP 的 ECS 服務器:
4. 這時在客戶 PC 終端上使用 netstat –na 命令應該可以看到一個 127.0.0.1 的 22 端口的本地監聽:
5. 通過連接這個本地端口就可以連接到內網的 ECS 服務器上了:
6. 這個方法同樣適用于 Windows系統(為了不與客戶 PC 終端的端口沖突,這里使用了 33389 端口作為本地監聽端口)
7. 內網的 RDS 也可以實現:
8. 可以在客戶 PC 終端直接使用數據庫客戶端程序來連接 RDS 中的數據庫,非常方便。
另外,在 SecureCRT 中這個功能叫做?端口轉發?,進行類似的配置后也可以實現同樣的功能。