不明な展開環境でコンピューター間の通信を確保するにはどうすればよいですか?

不明な展開環境でコンピューター間の通信を確保するにはどうすればよいですか?

私には 2 台のコンピュータがあります。1 台にはサーバーが稼働しており、もう 1 台にはそのサーバーと通信するアプリケーションがあります。これらのコンピュータはさまざまなサイトに展開されています。これらのコンピュータは直接有線接続できる場合もあれば、私が管理していないワイヤレス接続でのみ接続される場合もあります。追加要件として、接続が利用可能な場合は、サーバーが DHCP を使用してインターネットにアクセスできる必要があります。目標は、これらのコンピュータをオフィスにセットアップし、オンサイト構成をほとんど必要とせずにサイトに展開できるようにすることです。

アプリケーションを実行しているコンピューターが常に (または可能な限り多くの場合) サーバーを見つけて通信 (ポート 80 経由の HTTP) できるようにするには、どうすればよいですか。

私の考えでは、複数の IP を持つサーバーをセットアップします。1 つのサーバーでは DHCP を使用してインターネットにアクセスできます。もう 1 つは静的 IP に設定されます。アプリケーション コンピューターは、この静的 IP アドレスを事前に認識し、そのアドレスにリクエストを送信するように構成されます。ただし、これを実現する方法を示すチュートリアルでは、ゲートウェイとサブネット マスクを入力する必要があります。これらは、参加するネットワークに応じて変更されるのではないですか?

非常に明白なことを見逃していたり​​、他の要素を見落としていたり​​する場合はご容赦ください。私はネットワークについてほとんど何も知りません。

役立つハードウェアがあれば、それで問題ありません。

これは Vista と XP です。

答え1

衝突しない静的IPアドレスを推測しようとすると、トラブルを招くことになります。derobertが示唆したように、マルチキャストDNS + DNS-SDが適しています。Windows用の唯一のスタックはAppleのボンジュールこの実装により、さらにいくつかの構成を行うことで、ローカル ネットワーク上でサービスを登録および解決したり、ファイアウォールに穴を開けたり (ルータが NAT-PMP または uPnP をサポートしている場合)、適切な DNS-SD レコードを使用して DNS ゾーンを更新したりする機能が提供されます。

Bonjour をアプリケーションの構成に結び付けるには、スクリプトを作成する必要があると思われますが、アプリケーションが何であるかがわからないと、何が適しているかを判断するのは困難です。とはいえ、単純なバッチまたは WSH スクリプトで自動化された dns-sd.exe コマンドライン ユーティリティは、それほど単純ではない構成の場合、Python、Perl、または Ruby のさまざまなバインディングと同様に、この作業を実行できます。

答え2

これを解決するには、通常、すでに利用可能ないくつかのサービス検出プロトコルのいずれかを使用します。たとえば、WikipediaのZeroconfの記事マルチキャスト DNS + DNS-SD は現在人気があり、広くサポートされている方法のようですが、他にも方法があります (Wiki にはほとんどが記載されています)。

たとえば、Apache が Avahi を使用してマルチキャスト DNS 経由で自身をアナウンスできるようにする apache2 用の mod-dnssd が存在します。

答え3

それらはほぼ常に同じネットワーク上にあると思われるので、「サーバー」コンピューターで WINS を実行し、NetBIOS 名で接続するだけではだめでしょうか?

そうすれば、IP アドレスについてまったく心配する必要がなくなります。

実際、考えてみると、おそらく WINS は必要なく、NetBIOS で処理できるはずです。

関連情報