へっどしょっと先行者のサーバ構築方法



へっどしょっと先行者ネットワーク概要
へっどしょっと先行者はTCP/IPを使い、サーバ・クライアントモデルでネットワーク対戦を実現しています。
説明しよう!!TCP/IPとはインターネットで使われる標準的なプロトコルである!!


ネットワーク接続
クライアントとしてサーバ接続するには普通にブラウザを使用するのとそれほど変わらないので、
Proxy無しにブラウザが使える殆どの環境で問題なく接続することが出来るでしょう。

しかしサーバになるには様々な障害が待ち受けています
何故ならばサーバになってサービスを提供するという事は、外部からの接続を待ち受けするという事で、
潜在的に不正にアクセスされるという微妙な危険をともないます。そのため、OSやルータは
出来るだけ開けないような設定や環境になっていることが多いからです。

接続シーケンス
へっどしょっと先行者はWinsockのTCP/IPを使って接続を行います。
クライアントがサーバに接続するのに必要な情報は
サーバのIPアドレス
サーバの開いているポート
の2つです。
CGI経由でサーバを探す場合、クライアントは自動的に上記の情報を取得します。

サーバを開設するのに基本的に必要な環境は
グローバルIPアドレス
開いたポートに外部からデータが届く環境
CGI経由でサーバを公開する場合、サーバのIPアドレスはFORWARDED_FOR又はREMOTE_ADDR環境変数を引っこ抜いて使用しています
確認君などでFORWARDED_FOR又はREMOTE_ADDR環境変数に自分のIPが入っているか確認してみてください。


具体的なサーバ開設の障害と解決法
サーバを開設してもクライアントから接続できない場合がよくあります。
そのような問題を解決するには、問題が何処でどのようにして起きているかを発見し、それを解消する必要があります。
とりあえず問題と解決方法を私の知りうる限りで列挙しますので上手くサーバになれない人は参考にして下さい。

近い順に・・・
1.サーバマシンでファイアウオールやパケットフィルタリングをしている

これは簡単。サーバマシンになぜかファイアウオールソフトが入っていて、ポートのオープンを邪魔してる訳です
ファイアウオールソフトとしては
ウィルスバスターのファイアウォール機能とか
WindowsXPは何故か標準でFWを持っているらしいです。切り方は
「ネットワーク接続」のLANまたはインターネットのところで使用している回線のプロパティを開いて
「詳細設定」タブの「インターネット接続ファイアウォール」設定のチェックボックスをオフにすると切れます。
だそうです。

2.NAT(IPマスカレード)配下のマシンで、IPアドレスがローカルIP

こんな環境の人はCGIにはルーターの外側のグローバルIPが登録されますが、サーバがポートを開いても
外部からのパケットはルーターで見事に落とされます(南無)。何故かって?それはルータ君にしてみれば
そんなポートにサービスは開いてないし、接続を要求されても誰にふっていいのか分からないからです。
ではどうすればいいのでしょうか?解決方法はいくつか有ります。

2.1○ルーターで指定ポートをサーバマシンにポートフォワーディングする。
ルーターにポートフォワーディングという機能が有れば、ルーターの設定したポートに届いたパケットを
指定したマシンに転送する事が出来ます。これにより使用するポートと転送先のマシンを予めルータに登録
しておけば問題なくサーバになれるハズです。

2.2○サーバマシンをルーターに静的NAT登録する。
静的NATという機能はポートフォワーディングとほぼ同等の機能を提供してくれるらしいです。
2.3○DMZやバーチャルサーバ機能を設定する。
DMZ(非武装地帯)とはルータの外においてあるのと同じ状況を再現する機能で、実際には
外から届いた全てのパケットを指定されたサーバに転送する機能らしい。
これでもいけそうですな。

2.4○ルーターをすっこ抜いて直にケーブルをパソコンに突き刺す。
安直ですがルーターまでLANが来ているのであればそれを直にパソコンに突き刺して
サーバマシンにグローバルアドレスを設定します。(爆)(YBBとかはやっちゃダメ)

2.5×ルーターをいじくる権限が無い場合(CATVなど)
ええ無理です。特殊なサービスがあって内部にポートフォワーディングでもしてくれない限り。

3.普通にグローバルIPが割り振られているが、
ファイアウオールでパケットフィルタリングされる


こんな環境の人はCGIにはマシーンの外側のグローバルIPが登録されますが、開いたポートへのパケットが
ファイアウオールで遮断されるため、接続できないわけです。ではどうすればいいのでしょうか?

3.1○ファイアウオールをいじくる権限がある場合
ファイアウオールをいじくる権限がある場合そのIP、ポートへのパケットをパケットフィルタリングしないように設定すればOKです
3.2△ファイアウオールをいじくる権限が無い場合
ええ無理です。しかし!!上手い事いって管理者に開けさせましょう。
例えばWEBサーバ(ポート80)やFTPサーバ(ポート21)、Telnetサーバ(ポート23)を立ち上げるから
フィルタを外してほしいと言って無理矢理開けさせましょう。(爆)