Squid: HTTP プロキシで Slack が使えない問題に対処する (WebSocket)

2020.04.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、VPN 芸人のトランです。みなさんいかがお過ごしでしょうか?

今日は、HTTP プロキシを使用する環境で Slack が正しく動作しない場合に有効なワークアラウンドをご紹介します。

事象

EC2 インスタンスにインストールした Squid で HTTP プロキシを運用し、業務端末からのブラウジングで使用している。この環境で Slack を使い始めたところ、以下のように変なメッセージが表示されるようになった。アプリをリロードしないと新しいメッセージが表示されないなど、挙動もなんだかおかしい。

原因

Squid が、現時点で WebSocket と呼ばれるプロトコルをサポートしないことが原因です。この場合、HTTP プロキシを使用する環境で以下のページを開いた際、Websockets のところにエラーが表示されます。

https://my.slack.com/help/test

対処

クライアントへプロキシサーバーを設定する際に PAC ファイルを使用している場合、PAC ファイルの中で以下のホスト名を除外し、プロキシサーバーを使用せず直接接続するようにします。

・*.slack-msgs.com
・wss-primary.slack.com
・wss-backup.slack.com
・wss-mobile.slack.com

クライアントへプロキシサーバーを設定する際に VPN クライアントを使用している場合、VPN クライアントの機能を使用して上記のドメインを HTTP プロキシの除外対象として指定します。

結果

クライアントへ設定を反映し、以下のページで WebSockets のところがすべて緑になれば完了です。

https://my.slack.com/help/test

参考

Manage Slack connection issues | Slack
https://slack.com/help/articles/360001603387-Manage-Slack-connection-issues

おわりに

いかがでしたか? 今回は、HTTP プロキシを経由して Slack を使用する場合に発生する問題に対するワークアラウンドをご紹介しました。今回のように各サービスの WebSocket エンドポイントを一つ一つ除外していくのはあまり現実的でないので、Squid 側の WebSocket 対応が期待されるところですね。

したっけまた?