Welcome to

Welcome to tokoo.net

Home

日々の更新
2003年  2月26日
 2月19日
 2月3日
2002年  12月5日
 4月17日
 2月20日
2001年  12月26日
 11月18日
 10月3日
 10月2日
 9月14日
 9月2日
 7月29日
 7月16日
 7月3日
 6月19日
 6月11日
    6月7日
    6月2日
    5月29日
    5月22日
    5月19日
    5月17日
    5月16日
System
Private

何かお気づきの点が
ございましたら
mitsuまで

 

 

NetMeetingのNAT越え

2003年2月26日

 

GapNATとGnu Gatekeeperでとうとう実現した。

 

Eyeball Chatご卒業

  Eyeball Chatの嫌なところは、Eyeballのサーバーを直接または間接的に介してストリーミングデータがやりとりされていることだ(というか、そうとしか思えない。詳しくは)。クライアントPCの能力を上げようが、ブロードバンドのスピードを改善しようが、品質はちっとも良くならない。おまけに時々サーバー落ちてるし。

それでNetMeetingの出番である。これは完全なPeer to Peerアプリであるから、クライアントのPC性能やブロードバンド環境を向上させればそれだけ品質も上げられる。

 

つまるところのGapNAT

LAN内でNetMeeting機が一個だけの場合、住友電工製モデムのGapNAT機能を使うのが一番簡単。松本実家の環境はまさにそれに該当する(下図)。今回購入したMN7320(住友電工OEM)はこのためにあるようなもの。


この設定、実はいろいろ問題がある。まずはGapNATの宿命として、グローバルIPを与えられたPCと他のLAN環境のPCとの間のネットワークが遅い。この点についてはeAsyあたりでもずいぶん取り上げられている。が、個人的にはLANカード2枚差しがいちばん手っ取り早い解決だと思う(安いし)。まぁとりあえず実家ではファイル共有とか細かいことやっていないので、とりあえずこれでよし。

もう1つの問題はGapNATで通すポートである。とりあえず「GapNAT通過制限設定」をリンクのように実施。しかしこりゃほとんど素通り。もっとポート閉じること考えるべきだろう。

あと、ある程度セキュアにしておかないとまずいだろう、実家にしょっちゅういるわけじゃないし。ということで「IPフィルタ設定」をリンクのように実施した。しかしMN7320、TE4121CのI/Fを継承しているとはいえ、使い勝手は激しく向上している。

GapNAT通過制限設定」については1024-65535 TCP/UDPというのはあまりに荒っぽい。1434/UDPも開いていることになるからSQL Slammerさんいらっしゃいですな(勿論無意味だが)。NetMeetingはポートがランダムに変わるので、仕方がない。あと外部のILSサーバーを使う場合は389/TCPと522/TCPの通過が必要なようだが、これは今使わないので閉じている。

 

H.323 Proxy探し

東京自宅のネットワーク環境はそうはいかず、Webカメラが2台ある。また常時起動のサーバーがあるので、これにグローバルアドレスを与え、サーバー上にH.323のProxy Serverを走らせるのが最適解である。


この場合も、グローバルアドレスをLinuxサーバーに与えるためにGapNATを使っている。別にブリッジでもいいのだが、LinuxでPPPoverXXやるの面倒なので・・・

さて、どういうH.323 Proxyを使うべきか、まずはWeb。

 

NAT越えNetMeetingに関するWeb情報
NETMEETINGを10倍楽しむ方法

よくわからんがほとんどアダルトサイトではないか。
でもWindows MEやWindows 2000をルータに使えばO.K.だよという記事には驚いた。マイクロソフトは昔からH.323に強いから、組み込みも十分考えられる。記事が本当だとしたらLinuxでやるのが馬鹿馬鹿しくなってくる。

 

IP電話(とというよりNetmeeting?)

正直、一番参考になった。結局ローカルIPのLANとインターネットの間のゲートウェイに何らかのサーバーもしくはアプリを立ち上げることになるが、記載の主たる解決策は

・Linux 2.2系では、H.323 NATがある(らしい)
   既にLinuxが2.4系の場合は救いなし

Open H.323 Projectの Web SiteにあるOpenMCUを使う
多人数の場合は有効だと思うが、2人の場合は面白くなさそう(やってもいないのに)

OpenH.323Proxyを使う
コンパイルエラーで挫折したとのこと。実際やってみたが、RedHat 8でもエラーを確認した。開発者のページには "Attention! Job Wanted!"なんてあるし、関連スレは同じくコンパイルエラーの報告だらけ、終焉前のオープンソフトって感じだ。

 

GNU Gatekeeperみっけ

ということで、解決策ナシの気配に唖然としつつも、さらにWebを調べていくと、

OpenH323 Gatekeeper (GNU Gatekeeper)

が、非常に精力的にコードをリリースしていることが分かった。さらにドキュメントを見ると

Support H.323 proxy by routing all logical channels, including RTP/RTCP media channels and T.120 data channels.

という力強いメッセージ。早速GOである。・・・といっても、バイナリをダウンロードし、/usr/sbin/gnugk を置くだけでO.K.だった。インストールに面倒なOpen H.323 Projectを用意する必要もなし。今までソフトのインストールは ./configure が当たり前だと思っていたが、バイナリって楽なんですねぇ。

面倒なのは設定ファイル。/etc/gnugk.iniで、proxyの設定の仕方などがいまいちわからなかったけど、サンプルの設定ファイルがいっぱいダウンロードされてくるので、それを適宜使えば何とかなる。また使用ポートの設定だが、H.323はデフォルトで1024~65535ランダムなのだけど、GnuGatekeeperではgnugk.iniファイルで設定を変えればポート制限を行えるみたいである。一応やってみたが動作確認が面倒なので、とりあえずポートは今、目一杯開けてしまっている。そのうちに随時閉じていきたいところだが・・・とにかくこの辺のノウハウは、ここで随時公開していくつもりだ。

GNU Gatekeeperの実行は rc レベルで行えばいい。スタートは
  /usr/sbin/gnugk -c /etc/gnugk.ini -o /var/log/gnugk.log -tt
ストップは
  kill `cat /var/run/gnugk.pid`

あと肝腎なNetMeetingの設定だが、「ゲートキーパーを使用する」にして、そこに公開したサーバーを書いておくだけ。うまくいかなかったらエラーのダイアログがすぐ出るので分かると思う。あと、NetMeeting側を起動したまま、GnuGatekeeperの方を止めると、NetMeetingにエラーメッセージが出る。GnuGatekeeperを再開してもNetMeetingは再ログインしようとしないので注意。いったんNetMeetingを終了して、もう1回起動かけたほうが確実のようだ。

 

おお、美しい
   

まぁここまでずいぶんすっきりと進んでいるようにみえるけど、実際は大変だった。出張ついでにジジババの家に行って、GapNATの設定をいろいろ変えた(GnuGatekeeperの方でポート制限できる仕様なので、実際閉じてみて通信してみたりをくりかえしたというわけ)。あとログイン認証も本来ならちゃんとやれるのだが、とりあえず簡単にすましている。

NetMeetingからの呼び出しは、ゲートキーパーに登録したログイン名を使って呼び出す。プライベートIPだろうがグローバルIPだろうが関係なしである。あとはEyeball ChatやNetMeetingのILSサーバーのサービスのように、現在通話可能な交信相手のリストが出せるようにならないかな・・・GnuGatekeeperのWebにはそれに該当しそうなJavaのツールも公開されている。これは後で試すことにして。

結果はなかなかすばらしい。画像・音声がEyeball Chatとは比べ物にならないほど良くなった。マイク音量の自動調整には最初泣かされた。結局切ってしまうのが一番良かった。

さらに悪のりで、会社で使っているPolycom ViaVideoを借りてきて繋がるかどうか試してみた。これも一発でO.K. しかもNetMeetingよりさらに高品質。音声のエコーキャンセラもうまく働いている。これは日本で買うと相当するものだが米国のWebショップなら4~500ドルプラス送料100ドル位で買える。今ViaVideoを3個買ってしまおうか、真剣に悩んでいる。

左はEyeball Chatの画面(50%縦横縮小、クリックすると実寸が出ます)。


対するNetMeeting。画面サイズ大だと、こんなくらい(50%縦横縮小、クリックすると同上)。

映像の大きさだけでなく、品質(1秒あたりの映像コマ数)もNetMeeting内で設定可能なので、PCやブロードバンドの改善努力が実る。

ちなみにこのNetMeetingの映像がくっきり美しい理由は、相手がViaVideo(下記)だったからで、NetMeetingがいいわけじゃない。

 



で、そのPolycom ViaVideoの画面(50%縦横縮小、クリックすると同上)。実は会社の借り物(400~500ドル)。サイズは1024×768で立幅が一杯になるような感じだ。右側のリモコンのようなものはマウスを近づけると拡大される。Polycomのテレビ会議システム(ViewStation)を使ったことのある人ならなじみのものだ。

ViaVideoは送信画を専用ハードにより高速圧縮しているため、PCの処理は受信画の再生に専念できるとのことである。が、PC自体の処理速度はやはりあったほうがいいと感じた。