在各種雲計算平台中,都會提供一個連接配接虛拟機控制台的URL位址,有些遠端控制台位址是以noVNC來提供通路的。noVNC可以讓使用者直接使用浏覽器很友善地操作虛機,無需再安裝另外的程式。但有的URL位址直接就暴露了虛機所在的節點IP,這樣就可能直接影響雲平台的安全性。
為了不直接暴露虛機節點資訊,就需要我們對URL位址、noVNC傳回的頁面資訊進行攔截轉換。
- 擷取noVNC位址
1.首先用戶端通過請求API的方式擷取noVNC可通路的URL。
2.中間服務從noVNC伺服器清單中擷取對應的noVNC位址。
3.中間服務将擷取到noVNC位址進行截取改造,保證新的URL裡沒有noVNC伺服器的IP和端口号。
4.根據本次請求生成一個新的Token,并将生成的Token內建到新的URL中。
5.将Token和原來URL對應關系儲存在中間層服務的轉發路由資訊中,包括HTML的URL和WebSockets的URL對應關系,并傳回新生成的URL。
6.客戶擷取到了新URL,這個新的URL是經過基于中間層微服務進行過轉義過的URL。
- 轉發noVNC位址
1.用戶端根據新的URL,在浏覽器中輸入新的URL位址。
2.浏覽器會根據新URL請求中間服務,中間服務修改URL請求的HTTP中header參數為Host和Origin資訊。
3.修改Header資訊之後,根據路由中的資訊轉發HTTPS或者WebSocket請求到noVNC伺服器上。
4.中間層微服務接受到noVNC伺服器傳回HTML資訊之後,替換掉HTML裡包含伺服器節點位址和端口号。
5.中間層微服務處理好資訊之後,把資訊傳回給用戶端浏覽器。
- 效果
轉發前noVNC位址:
轉發後noVNC位址: