5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OCI WAFでwebsocket通信が可能になったので試してみた

Posted at

はじめに

先日OCI WAFでwebsocket通信が可能になったみたいなので試してみました。

Clinet -- WAF -- Listener

上記の構成でwebsocket通信を許可するためのセットアップ方法をまとめていこうと思います。
ちなみに、OCI WAFに関しては以下をどうぞ。
Oracle Cloud Infrastructure Web Application Firewallのご紹介

必要ツール

websocket通信を簡単にセットアップできるツール
ws: a Node.js WebSocket library

OCI CLI(出来るだけ最新のものをおすすめします、本稿は2.10.0を利用しています)
oracle/oci-cli

手順

今回行った手順は以下。

  • oci cliのセットアップ
  • リスナーにWAFを適用
  • WAFのポリシーをアップデートする
  • リスナーでwsを使ってlistenする
  • クライアントからリスナーに対してHandshakeを実行

試してみた

###oci cliのセットアップ
こちらは既に導入しているリーダーの方もいるかと思うので、スキップします。
※2.10.0以降のバージョンで試してください
未導入の方は以下を参照。
Oracle Cloud : コマンド・ライン・インタフェース(CLI) をインストールしてみた

###リスナーにWAFを適用
OCIコンソールからWAFポリシーを作成する。
image.png

作成後、DNSの設定をします。
OCI WAFは、AレコードでWAFのIPアドレスをユーザーが管理する必要ないみたいです。
WAFの設定時に生成されるCNAMEターゲットを利用します。
プライマリドメインに対して設定する際に、CNAMEは利用できないので、ALIASで解決する必要があります。

###WAFのポリシーをアップデートする
cliを用いて、WAFのpolicy-configを変更します。

oci waas policy-config update [OPTIONS]

OCI-cli/websocket-path-prefixes

以下で、websocket/配下のみにwebsocket通信を許可するようにします。
websocket-path-prefixesrootを適用させたい場合は["/"]と書く必要があります。
また渡す値は配列になっているので、複数のパスに適応する事ができるみたいです。

$ oci waas policy-config update --waas-policy-id ***** --websocket-path-prefixes '["/websocket/"]'

※cliのバージョンは2.10.0以降を使ってください

###リスナーでwsを使ってlistenする
Nodeが入っていれば、npmでinstall可能。
(もちろんリスナー側で用いるポートのfirewallは空けておく。)

$ npm install -g wscat

-lで通信を受け付ける(Listen)設定をします。

$ wscat -l 80

ws すごい簡単ですね:raised_hand:

###クライアントからリスナーに対してHandshakeを実行
クライアント側も同様にwsをインストールする必要があります。

$npm install -g wscat

あとは、リスナーがlisten出来ている事を確認し、以下を実行。うまくいくはず。

$ wscat -c ws://web.topskills.jp:80

また、curlを用いてハンドシェイクする事も可能。
レスポンスが HTTP/1.1 101 Switching Protocols で返ってくる事で成功を確認できます。

$ curl -v -H 'Sec-WebSocket-Version: 13' -H "Sec-WebSocket-Key: $(head -c 16 /dev/urandom | base64)" -H "Connection: Upgrade" -H "Upgrade: websocket" "http://********/websocket/"

以上の通り、本稿では、OCI WAFでwebsocket通信を試してみました。
次回はもう少し掘り下げた内容を書ければ、と思っています。:relaxed:

#参考記事
WebSocket についてまとめてみる
Oracle Cloud Infrastructure Web Application Firewallのご紹介
Oracle Cloud : コマンド・ライン・インタフェース(CLI) をインストールしてみた
WebSocket の検証では wscat が便利だった

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?