2

私が本当に最新かどうかはわかりませんが、既存のプロジェクトをHTML5WebSocketを使用するように変換する方法を探しています。

これが私の状況です:

- Client runs a modified java vnc applet with extra parameter (CONNECT).

- Modified stunnel listenin on webserver (with both public, private IP) port 443

- Client connects to 443 and sends (prior to RFB) a HTTP packet like :
  'CONNECT 10.0.0.1:4001'

- Stunnel opens a new stream to 10.0.0.1:4001 using SSL wrapper

- VNC Server (@10.0.0.1:4001) responds, connection is established.

ここで、Javaアプレットを取り除き、NoVNCを使用してWebsocketに切り替えたいと思います。

私はできるようになりたい:

- Open a single port on the webserver (HTTPS preferably)
- Have client connect using HTML5 only (no more java applet)

私は変えられない :

- VNCServer will still be listening on private LAN only.
- VNCServer will still listen to a bunch of ports, each corresponding to
  a virtual server

質問は:

- How to give NoVNC the notion of target HOST:PORT ?
- Is stunnel still be usable ? Or should I change to websocket proxy ?

誰かが出発点を持っているなら、私は本当に感謝します!

4

1 に答える 1

5

免責事項:私はnoVNCを作成したので、私の答えは大きく偏っている可能性があります;-)

最初に2番目の質問に答えます:

stunnelをnoVNCで直接使用することはできません。問題は、WebSocketプロトコルにHTTPのような初期ハンドシェイクがあり、メッセージがフレーム化されていることです。さらに、バイナリペイロードのサポートがWebSocketに追加されるまで、ペイロードはwebsocketsプロキシ(websockify)によってbase64でエンコードされます。stunnelに必要なサポートを追加することは簡単ではありませんが、確かに実行可能です。実際、 noVNCの問題#37は、このサポートをstunnelに追加するための意欲的な機能です。

最初の質問

noVNCには、RFB.connect(host, port, password)メソッドを介したHOST:PORTの概念がすでにあります。トップレベルのファイルvnc_auto.htmlは、URLクエリ文字列パラメータとして指定されたホスト、ポート、およびパスワードに基づいて、ページの読み込み時にnoVNCを自動的に接続する方法を示しています。

ただし、実際に求めているのは、noVNCをバックエンドの代替VNCサーバーポートに接続する方法です。この問題は、noVNCおよびwebsockifyでは直接対処されません。これを解決するにはいくつかの方法があり、通常は帯域外のセットアップ/承認メカニズムが関係しているため、プロキシを使用して任意のホストによる攻撃を開始することはできません。たとえば、私の会社にはnoVNCを統合するWebベースの管理フレームワークがあり、ユーザーがコンソールに接続する場合、認証されたAJAX呼び出しを使用して、その特定のユーザーと接続するシステムのプロキシを構成します。私たちのウェブ管理インターフェースは内部のみです。

Ganeti Web Managerは同様のモデルを使用しており、ソースが利用可能です。WebSocketをサポートするVNCAuthProxyのフォークがあります。WebインターフェイスからVNCAuthProxyへの制御チャネルを使用して、特定のVNCサーバーhost:portに関連付けられた一時パスワードを設定します。

また、OpenStack(Nova)はnoVNCを統合し、同様の帯域外トークンベースのモデルを使用して、nova-vncproxyによるアクセスを許可します。

いくつかのリンク:

于 2011-04-18T15:49:06.840 に答える