前回は、VPN-Warp をポートフォワーダとして使う場合の、 基本的な設定方法について説明しました。 ローカルホストの 8080番ポートを、 リモートの intra:10080 へフォワードする場合に、 ローカルホストで stone を走らせる方法について説明したわけですが、 stone はもともと VPN-Warp 専用のソフトウェアというわけでは決してなく、 stone は汎用リピータです。
つまり stone を使わなくても、 https リクエストをリレーサーバに送信することができるソフトウェアなら なんでも使うことができます。
試しに OpenSSL 付属の s_client コマンドを使ってみましょう:
% s_client -cert relay,10020-cert.pem -key relay,10020-priv.pem -connect relay.klab.org:443 CONNECTED(00000003) ... subject=/C=JP/postalCode=106-6122/ST=Tokyo/L=Minato-ku/streetAddress=6-10-1 Roppongi/streetAddress=Roppongi-Hills Mori-Tower 22F/O=K Laboratory Co.,Ltd/OU=HTTP/OU=InstantSSL/CN=relay.klab.org ... --- GET / HTTP/1.1 HTTP/1.1 200 OK :irc.klab.org NOTICE AUTH :*** Looking up your hostname... :irc.klab.org NOTICE AUTH :*** Found your hostname
最初の行の s_client コマンドの実行と、 後ろの方の「GET / HTTP/1.1」および続く改行二回が手で入力した部分で、 あとは s_client コマンドの実行結果です。 クライアント認証を行なうため、s_client の引数に証明書の
- 公開鍵 (-cert オプション)
- relay,10020-cert.pem
- 秘密鍵 (-key オプション)
- relay,10020-priv.pem
を指定しています。s_client は SSL 接続した後、サーバ証明書の内容などが、 どばっと出力されますが、その後「---」を表示してセッションが確立します。
そして、リクエストヘッダ (のようなもの)
GET / HTTP/1.1 (空行)
を送ると、レスポンスヘッダ (のようなもの)
HTTP/1.1 200 OK (空行)
が送られてきて、ポートフォワード先とのセッションが確立します。 この例の場合では、確立した直後にデータが送られてきていますね:
:irc.klab.org NOTICE AUTH :*** Looking up your hostname... :irc.klab.org NOTICE AUTH :*** Found your hostname
これは、KLab 社内の IRC サーバから送られてきたデータです。 KLab では技術的な打ち合わせは IRC で済ませてしまうことも多く、 隣の席にいる人との打ち合わせでさえ、IRC で行なうケースがあります。 IRC で話しておけば文字で残りますし、 リモートにいる人も議論に参加できるので、とても便利です。
KLab 社内 IRC はあまりに常用されているので、 いつでもどこでも IRC に参加しておきたいわけで、 そういうとき VPN-Warp はとても便利です。 つまり、stone をノートPC 上で NT サービスとして走らせておくだけで、 ノートPC がインターネットにつながってさえいれば、 ダイアルアップでつながっていようと無線LAN でつながっていようと関係なく、 6667番ポートを常に社内IRC サーバへポートフォワードすることができて、 ノートPC 上の IRC クライアントで localhost:6667 へ接続して 常にチャット状態にしておける、というわけです。