« 新国立劇場:スペインのきらめき | トップページ | 英会話とP2Pメモ »

2004.02.24

P2Pとファイアウォール(メモ)

P2P todayの掲示板でProxyとP2Pについての質問があった。それに対してはあるHPを教える事で解決をしたのだが、もうちょっと深く考察しようと思い、いろいろと調べてみた。いずれは自分のHPに解説するので、これはそのメモという位置づけである。

まずはファイアウォールの内側から外側への通信を考えてみる。

さて、ファイアウォールというと一番簡単なのはパケットフィルタリングである。これはポートの開け閉めにより通信できるサービスを制限することである。ルータ管理者であればP2P用のポートを空ける事は可能であるが、そうでないユーザであれば80番(http)や443番(https)を通すようにアプリの設定を変えれば良い。(ただし、アプリによってはそれがうまくいかない場合もある。その時にはSSHのポートフォワーディングや後述のSoftEtherを使う手もある。)

問題なのはProxyである。Proxyは一般に専用Proxyと汎用Proxyがある。
まず、汎用Proxyである。この代表例がSocksである。Socksはサーキットゲートウェイというもので、簡単に言うとプロキシなのだが、L7まではチェックせずL4までの情報でサービスの許可・不許可を判断している。そこで、アプリをSocks用に作り変え、普段使っているようなポートでProxyを通れば通信は可能である。

では専用Proxyはどうか?これは一般にアプリケーションゲートウェイと言われる極めてセキュリティが高いシステムである。これは通過する通信をL7まで見て、不正なコマンドであるかどうかまでチェックする。そのため、通常通過するhttpやhttpsをアプリでエミュレートしないとこのProxyは通過することはできない。一番簡単なのはアプリがSSLの通信を行い、暗号化が完了すればアプリ独自のコマンドを通信するということである。

ということで、ファイアウォールの内側から外側への通信でもしんどい場合がある。しかし今話題のSoftEtherを使えばこの問題はある程度解決するだろう。実際SoftEtherは上記のファイアウォールを通過させることが可能である。
「SoftEtherによるファイアウォール、NAT、Proxyの通過」
http://www.softether.com/jp/overview/firewall.aspx

今度はファイアウォールの外側から内側への通信である。一般にこのような通信はファイアウォールが通過させない設定が多い。どうすれば良いのだろうか?

方法は2つある。ファイアウォールの内側にあるユーザが外部のあるサーバに繋げる方法である。これはGrooveが実装している方法で有名である。まずファイアウォールの内側のユーザはサーバにTCPセッションを張りっぱなしにする。その中で、サーバを介した他のユーザが通信を行うと言うものである。
「Grooveとは何か?」
http://www.atmarkit.co.jp/fnetwork/tanpatsu/05groove/groove02.html

もう一つはファイアウォールの外部にあるユーザを介して通信を行うというものである。これは上記のサーバをユーザに置き換えただけである。

このような方法であれば、例え2人のユーザが互いに違うファイアウォールの内側であってもサーバまたはファイアウォールの外側のユーザを介して通信ができることになる。

ところでSoftEtherにおいてP2P通信を行うことを既にレビューしている方がいる。
「P2P FILE-SHARING」
http://www.p2p-media.com/file-sharing/play.html
ここではIP Messengerを試しているようだが、他のアプリケーションでも同様に動作できると思う。
仮想LANと現実のLANをまたがったP2Pが流行るのも時間の問題かもしれない。

|

« 新国立劇場:スペインのきらめき | トップページ | 英会話とP2Pメモ »

P2P」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/18781/230561

この記事へのトラックバック一覧です: P2Pとファイアウォール(メモ):

« 新国立劇場:スペインのきらめき | トップページ | 英会話とP2Pメモ »