1. 程式人生 > >Linux 通過rinetd端口轉發來訪問內網服務

Linux 通過rinetd端口轉發來訪問內網服務

ESS ipa 下載 文件 它的 端口 相關 net add

可以通過端口映射的方式,來通過具有公網的雲服務器 ECS 訪問用戶名下其它未購買公網帶寬的內網 ECS 上的服務。端口映射的方案有很多,比如 Linux 下的 SSH Tunnel、rinetd,Windows 下的 portmap 等,本文簡要介紹 rinetd,和 ssh tunnel 的配置方法。

說明:本文相關配置和說明僅用於示例和操作指引,阿裏雲不對相關操作結果及由此產生的問題負責。

rinetd 配置方法


如果是 Ubuntu 系統,可以直接使用如下指令安裝:

  1. apt-get install rinetd -y

下面介紹源代碼安裝配置方法:

1. 下載解壓 rinetd 軟件包:

  1. wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd

2. 修改編譯配置:

  1. sed -i s/65536/65535/g rinetd.c# 修改端口範圍,否則會報錯

3. 編譯安裝:

  1. mkdir /usr/man&&make&&make install

4. 創建配置文件:

  1. 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 中這個功能叫做 端口轉發 ,進行類似的配置後也可以實現同樣的功能。

技術分享圖片

Linux 通過rinetd端口轉發來訪問內網服務