プロキシ経由で Ksocket を使用する

Ksbridge の利用方法については、Ksbridge 利用マニュアルをご参照ください。
今後、こちらのページは更新されませんのでご注意ください。

Ksocket を使用するためには、 KsocketとKompira ckoudの間でwebsocket通信を確立する必要があります。
ここでは、インターネットに接続するためにプロキシサーバを経由するような環境下で Ksocket を実行するための方法を解説します。

Ksbridge について

Ksbridge は、プロキシサーバを経由する環境下で KsocketとKompira cloud間の通信を行えるようにするミドルウェアです。
以下の図のように、KsocketとKompira cloudの間のブリッジとして動作します。
この図では KsocketとKsbridge間の通信に8080ポート、Ksbridgeとプロキシサーバ間の通信に3128ポートを例として記載していますが、設定により変更可能です。

+---------------------------------------------+
| intranet                                    |
|                                             |
| +--------------------------------+          |
| | localhost                      |          |
| | +---------+      +----------+  |      +-------+     +---------------+
| | | ksocket | 8080 | ksbridge |  | 3128 | proxy | 443 | Kompira cloud |
| | |         |<---->|          |<-=------=-------=---->|               |
| | |         |  IN  |          |  | OUT  |       |     |               |
| | |         |      |          |  |      |       |     |               |
| | |         |      |          |  |      |       |     |               |
| | +---------+      +----------+  |      +-------+     +---------------+
| +--------------------------------+          |
|                                             |
+---------------------------------------------+

Ksbridge を使用する場合、こちらのページ からダウンロードしてください。

使用方法

Ksbridge の起動

Ksocket をインストールしたサーバに ダウンロードしたKsbridgeのファイルを配置し、展開してください。

$ tar zxf ksbridge_0.2.0_linux_x86_64.tar.gz
$ cd ksbridge_0.2.0_linux_x86_64
$ ls
ksbridge  README.md

ファイルが展開できたら、Ksbridgeを起動してみましょう。
起動の前に、使用しているプロキシサーバのアカウント情報とポート番号を確認してください。

ここでは、以下のような環境であると仮定して、対応したKsbridgeの起動コマンドを記載します。

項目
Kompira cloudのスペースURLyourspace.cloud.kompira.jp
プロキシサーバURLyour.proxyserver.co.jp
プロキシサーバのポート番号3128
プロキシサーバのアカウント名username
プロキシサーバのアカウントパスワードpassword
ksocketとksbridge間の接続に使用するポート8080
$ ./ksbridge -bind 127.0.0.1:8080 -host yourspace.cloud.kompira.jp -proxy http://username:password@your.proxyserver.co.jp:3128
********************************************************************************
ksbridge - Tiny websocket connection bridge server

  listen: ws://127.0.0.1:8080/api/ksocket/connect
  server: wss://yourspace.cloud.kompira.jp/api/ksocket/connect
  proxy:  http://username:password@your.proxyserver.co.jp:3128

********************************************************************************

プロキシサーバへのアクセスにアカウントが必要ない場合は、以下のように指定します。

$ ./ksbridge -bind 127.0.0.1:8080 -host yourspace.cloud.kompira.jp -proxy http://your.proxyserver.co.jp:3128

実行すると、KsbridgeはKsocketからの通信を待つ状態となります。

Ksocket の設定

次に、Ksocketの設定を行います。 まずは、 Ksocketドキュメント を参照し、Ksocketのインストールを行いましょう。
通常 Ksocket の設定ファイルには Kompira cloudのスペースURLを指定するのですが、 Ksbridgeを使用する場合、スペースURLは前述のとおり Ksbridge 側に設定することになります。
Ksocket の設定ファイルには、代わりに Ksbridge に対して接続する情報を設定します。

Ksocket の設定ファイルである、ksocket.toml を以下のように編集してください。

[connect]
host = "127.0.0.1"   
port = 8080             # ksbridge の bindポートに変更する
protocol = "ws"         # "wss" から "ws" に変更する。設定行が存在しない場合は追加する
token = "FrKc+82kZGG9sdRS5AXnemPN8u6sDdY3PXxbqdB4"    # Kompira cloud上で発行したksocketトークンを設定する

(以下省略)

Ksocket の起動

ksocket.toml の設定を反映するために、 Ksocket サービスの再起動を行います。

$ systemctl restart ksocket

再起動をすると、Ksocketは設定に従って自分の8080ポートにアクセスをしにいきます。 正常に接続ができた場合、Ksbridgeでは以下のような表示となります。

$ ./ksbridge -bind 127.0.0.1:8080 -host yourspace.cloud.kompira.jp -proxy http://username:password@your.proxyserver.co.jp:3128
********************************************************************************
ksbridge - Tiny websocket connection bridge server

  listen: ws://127.0.0.1:8080/api/ksocket/connect
  server: wss://yourspace.cloud.kompira.jp/api/ksocket/connect
  proxy:  http://username:password@your.proxyserver.co.jp:3128

********************************************************************************
INFO[0011] connecting to client...
INFO[0011] client has connected
INFO[0011] connecting to server...
INFO[0011] server has connected

また、Kompira cloud にアクセスし「設定 > Ksocket」を表示してください。 ステータスが「接続済み」となっていれば Ksocket は正常に Kompira cloud に接続できています。

これで Ksbridge を介した Ksocket と Kompira cloudの接続は完了です。

トラブルシューティング

Ksbridge に何も出力されない

Ksocketの設定を行い再起動を行っても Ksbridge にログが表示されない場合、KsocketがKsbridgeに接続しにいけていない可能性があります。
このような場合は、 Ksocket のログファイル (デフォルトであれば /opt/fixpoint/ksocket/var/log/ksocket/ksocket.log ) を確認してみましょう。

2018-12-12T19:40:13+0900  DEBUG  ksocket.channel.session:_connector:241  Resumer is waiting disconnection...
2018-12-12T19:40:13+0900  DEBUG  ksocket.channel.session:_connector:243  Disconnected from the peer. Resume connection...
2018-12-12T19:40:13+0900  DEBUG  ksocket.channel.session:_resume:213  Connecting to the peer. Wait 60.000000 seconds...
2018-12-12T19:40:13+0900  WARNING  ksocket.channel.session:_resume:225  Failed to start/resume session: [Errno 111] Connect call failed ('127.0.0.1', 8080). Wait 0 sec... [1/120]
2018-12-12T19:40:13+0900  DEBUG  ksocket.channel.session:_resume:213  Connecting to the peer. Wait 60.000000 seconds...
2018-12-12T19:40:13+0900  WARNING  ksocket.channel.session:_resume:225  Failed to start/resume session: [Errno 111] Connect call failed ('127.0.0.1', 8080). Wait 0 sec... [2/120]
2018-12-12T19:40:13+0900  DEBUG  ksocket.channel.session:_resume:213  Connecting to the peer. Wait 60.000000 seconds...
2018-12-12T19:40:13+0900  WARNING  ksocket.channel.session:_resume:225  Failed to start/resume session: [Errno 111] Connect call failed ('127.0.0.1', 8080). Wait 0 sec... [3/120]

例えば上記のようなログがKsocket.logに出力され続けている場合、Ksbridge に接続できていない状態です。ksocket.toml での設定を再度確認してみてください。

また、別のパターンとして以下のようなログが出力される場合があります。

2018-12-12T19:45:54+0900  DEBUG  ksocket.channel.session:_resume:213  Connecting to the peer. Wait 60.000000 seconds...
2018-12-12T19:45:54+0900  WARNING  ksocket.channel.session:_resume:225  Failed to start/resume session: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:833). Wait 0 sec... [1/120]
2018-12-12T19:45:54+0900  DEBUG  ksocket.channel.session:_resume:213  Connecting to the peer. Wait 60.000000 seconds...
2018-12-12T19:45:55+0900  WARNING  ksocket.channel.session:_resume:225  Failed to start/resume session: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:833). Wait 0 sec... [2/120]
2018-12-12T19:45:55+0900  DEBUG  ksocket.channel.session:_resume:213  Connecting to the peer. Wait 60.000000 seconds...
2018-12-12T19:45:55+0900  WARNING  ksocket.channel.session:_resume:225  Failed to start/resume session: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:833). Wait 0 sec... [3/120]
2018-12-12T19:45:55+0900  DEBUG  ksocket.channel.session:_resume:213  Connecting to the peer. Wait 60.000000 seconds...

このときは、ksocket.toml に protocol: ws という接続方式を変更する設定が正しく読み込まれていません。上述の「Ksocketの設定」の項を確認し、protocol行の設定を行いましょう。

「failed to connect server」と表示される

Ksbridgeのログで、 failed to connect server と表示される場合、KsocketとKsbridgeは疎通できていますが、Ksbridgeとプロキシサーバ間の通信が確立できていない場合が考えられます。

$ ./ksbridge -bind 127.0.0.1:8080 -host yourspace.cloud.kompira.jp -proxy http://username:password@no.proxyserver.co.jp:3128
********************************************************************************
ksbridge - Tiny websocket connection bridge server

  listen: ws://127.0.0.1:8080/api/ksocket/connect
  server: wss://yourspace.cloud.kompira.jp/api/ksocket/connect
  proxy:  http://username:password@no.proxyserver.co.jp:3128

********************************************************************************
INFO[0012] connecting to client...
INFO[0012] client has connected
INFO[0012] connecting to server...
ERRO[0012] failed to connect server                      err="dial tcp: lookup no.proxyserver.co.jp on 10.10.10.0:53: no such host" uri="{wss   yourspace.cloud.kompira.jp /api/ksocket/connect  false  }"
INFO[0069] connecting to client...
INFO[0069] client has connected
INFO[0069] connecting to server...
ERRO[0069] failed to connect server                      err="dial tcp: lookup no.proxyserver.co.jp on 10.10.10.0:53: no such host" uri="{wss   yourspace.cloud.kompira.jp /api/ksocket/connect  false  }"

このような場合は、Ksbridgeの実行時に指定しているプロキシサーバのサーバ名、アカウント、パスワードが正しいかどうかを確認してください。

TOP