スクリプト内のLANのサーバーIPを見つける

スクリプト内のLANのサーバーIPを見つける

クライアントコンピュータのスクリプトが同じネットワーク上でサーバーIPを自動的に検索する方法を探しています。

Ubuntu 14.04.1を実行している複数のメディア拡張クライアントと、単一のLAN上で同じサーバーを実行しているサーバーがあります。クライアントが起動時にネットワーク上のサーバーを検索したい。静的IP設定は、サーバーやDHCPで利用可能なソリューションではありません。

ホスト名で検索するのは便利ですが、両方のデバイスのホスト名が同じか(可能性は低いが可能です)、ホスト名が変更された場合は、クライアントがそのようにブロードキャストして検索できるようにサーバーに何かをしたいと思います。そしてLANは常に同じイーサネットではないかもしれません。 (例えば192.168.1。、10.0.0。、等)

クライアントは最終的にサーバー上で実行されているmysqlサーバーを探しますが、実際にはスクリプトがサーバー上のデータベースを使用するようにソフトウェアを構成できるようにIPだけが必要です。

助けてくれてありがとう。

編集:サードパーティのプログラムは大丈夫です。クライアントはいつでもすべてのサブネット上の任意のサーバーに接続できます。サーバーを探すものがある場合は、サーバーとの接続が失われた後に検索を再開するためにKeepaliveを使用できます。 MAC または他のハードウェア識別子のリストを維持することはオプションではありません。

ベストアンサー1

あなたの要求によると、それはMulticast DNS (i.e. Bonjour)正義の目的だと思います。 Ubuntuシステムを使用している場合は、すでにあふれすでにインストールされているサーバーavahi-daemonとクライアントavahi-discover

デフォルトでは、次のように設定できます。

  • サーバーに(デフォルトのホスト名の代わりに)クールな名前を割り当てるには、Avahiデーモンでその名前を正しく設定するだけです。この構成は、/etc/avahi/avahi-daemon.confデスクトップを介して実行するか、構成ファイルを変更し、以下を定義することを確認することによって実行できます。

    [server]
    host-name=database
    domain-name=local
    


  • クライアントはその名前のIPアドレスを確認してdatabase.localIPアドレスを取得します。たとえば、ping database.localAvahi ツールを実行または使用します。avahi-resolve -4 -n database.local

これは、ローカルDNSドメインがマルチキャストドメインとして定義されているために可能です。クライアントは、接続されているすべてのシステムに到達するマルチキャストクエリをLANに送信します。サーバーのAvahiデーモンはクエリに応答し、IPアドレスを提供します。

の詳細情報をご覧ください。ここでZeroConfを設定する方法

修正したい場合は、mDNS同時にインストールすることもできます。顧客ハバヒツールそしてMDNSスキャン。最初のものはサービスを宣伝するために使用でき、もう1つはネットワーク上でそのサービスを見つけるために使用できます。たとえば、

MySQL データベースに関連付けられた新しい名前を登録するためにサーバー上でサービスを実行するには、次のようにします。

    $ mzclient -p "_sql._tcp 3306 database"
    *** Registering name = 'database', type = '_sql._tcp', domain = 'local.'
    *** Registered name = 'database'
    (...)

Avahiワンタイムルックアップサービスを試すには:

$ avahi-browse -t _sql._tcp 
+   eth0 IPv4 database    _sql._tcp            local

または、継続的にネットワークを検索して利用可能なmDNサービスを探します。

    $ mdns-scan 
    + server [xx:xx:xx:xx:xx:xx]._workstation._tcp.local
    + database._sql._tcp.local
    Browsing ... \           
[ interrupt with Ctrl+Z]


この構成では、不要な中央 DNS サーバーは使用されません。すべてのクエリは、マルチキャストトラフィックを使用してローカルLANで実行されます。

おすすめ記事