Zeroconfとは何ですか?

私は、古いLinuxoidのように、Ubuntuを最初にインストールして、なじみのない単語avahiを見たとき、もちろんすぐにgoogleを見ました。 いくつかのリンクにつまずき、 zeroconfmulticast dnsbonjourなどの他のあいまいな単語を見ました。 私はすぐに、これがAppleの泥だらけのテクノロジーの一種であり、必要ないことを知りました。

しかし、私のアパート内のローカルネットワークの成長に伴い、 zeroconfが私の生活を楽にするためにどのように適応できるのか不思議に思うだろう。

用語を扱いましょう:
  1. Zeroconfは、Appleが開発したプロトコルであり、次の問題を解決するように設計されています。
    • デバイスのネットワークアドレスを選択します
    • 名前でコンピューターを見つける;
    • プリンターなどのサービスの発見。
  2. Avahiは、zeroconfプロトコルのオープンで無料の実装です。
  3. Bonjourは、Appleのzeroconfプロトコルのオープンソース実装です。


IPアドレスをデバイスに割り当てるために、zeroconfはRFC 3927を使用します 。 標準では、範囲169.254.0.0/16からのいわゆるリンクローカルアドレスの割り当てについて説明しています。 このテクノロジーは、 IPv4 Link-LocalまたはIPv4LLと呼ばれます

名前の解決(名前解決)には、 マルチキャストDNSプロトコルまたは短縮mDNSが使用されます。 これにより、デバイスは.localゾーンの名前を選択できます。 通常のDNSとほとんど同じように機能しますが、微妙な違いがあります。 各コンピューターは、そのゾーン( AMXSRV )のレコードを保存し、それ自体が要求を処理します。 コンピュータがゾーンレコードを知りたい場合、たとえば、名前でIPアドレスを決定する(特定のゾーンのAレコードを取得する)と、マルチキャストアドレス224.0.0.251アドレス指定します。 したがって、要求はローカルネットワーク上のすべてのコンピューターで受信され、関心のある名前のゾーンを格納しているコンピューターが応答します。

サービスを検索および検出するために、プロトコルはDNSベースのサービス検出またはDNS-SDに 基づいています 。 デバイス上で利用可能なサービスをアドバタイズするために、 SRVTXTPTRなどのDNSレコードPTRます。

これをすべてLinuxで動作させるにはどうすればよいですか? 思ったよりずっと簡単です。 手順を見てみましょう。
  1. パッケージavahi-daemonavahi-autoipdlibnss-mdns avahi-daemonます。 Ubuntuを使用している場合、これらのパッケージはすでにインストールされている可能性があります。
  2. IPv4LLを有効にします。 この手順は完全にオプションです。 ローカルネットワークで通常ルーティングされるIPアドレスがある場合、IPv4LLを使用する必要はなく、有害でさえあります。標準では、ルーターはリンクローカルアドレス( 169.254.* )でパケットを転送すべきではないためです。 つまり、ほとんどの場合、NATを介してインターネットを転送することはできません(成功しませんでした)。 ただし、既に決心している場合は、ローカルネットワークのネットワークインターフェースが/etc/network/interfaces ipv4llタイプを入力するだけで十分ipv4ll 。 このようなもの:
      iface eth0 inet ipv4ll 

    次に、 sudo invoke-rc.d networking restartまたはさらにリブートを行うことができます( avahi-autoipdはアドレス169.254.*設定しません169.254.*どこにも消えません)。
  3. ファイアウォールで、ローカルネットワークを見ているインターフェイス上のアドレス224.0.0.251ポート5353 (mDNSが適切に機能するために必要です)を介したUDPパケットの通過を許可します。

この設定では、完了と見なすことができます。 その後、どんなボーナスがもらえますか? リスト:すべてのコンピューターは、* .localドメインで名前を受け取りますが、ユーザーの不必要なジェスチャーはありません。 GajimまたはEmpathyの jabberクライアントは、ローカルネットワーク内のすべての対話者を表示します。 Rhythmboxはすべての音楽を共有します。 Ekigaを使用すると、LANで実行している全員を検索して呼び出すことができます。 PulseAudioは、ネットワーク上で公開されているすべてのオーディオデバイスを見つけることができます。 まあ、はるかに、はるかに。 avahiをサポートするプログラムのリストを見つけることができます。

いくつかのコメント。
  1. avahi-browse --allコマンドを使用して、ネットワーク上の発表されたサービスを表示できます。 また、これらのサービスの接続と切断もリアルタイムで表示されます。
  2. ファイアウォールがある場合、サービスは相互に認識できますが、それらに必要なポートが閉じている場合は通信できません。
  3. avahi-dnsconfdを使用して、ローカルネットワーク上のすべてのコンピューターに/etc/resolv.confクローンを作成できます。
  4. GnomeでNFS + Zeroconfバンドル実装するというアイデアに必ず投票してください。

Source: https://habr.com/ru/post/J66020/


All Articles