Fedora 資料一覧

Avahi:Zero Configuration Networkingの設定

2008/8/27更新

対応バージョン: 9

FedoraでZeroconf(Zero Configuration Networking)を利用するにはAvahiを使用する。Appleでの実装はBonjourである。

まずZeroconfで必要な要素とAvahiにおける実装の対応を示す。

Addressing

AutoIP(*)によってIPアドレスの付与を行う仕組み。

(*) MicrosoftではAPIPA(Automatic Private IP Addressing)と呼ぶ。

Naming

mDNS(Multicast DNS)によってサービスの名前割当を行う仕組み。

名前は以下のような命名規約によって割り当てられる。

<ホスト名>.<サービス名>.<プロトコル名>.<ドメイン名>

(*) サービス名とプロトコル名は先頭が「_」で始まる。

(*) サービス名にはIANAが管理しているWELL KNOWN PORT NUMBERSが使われる(http、sshなど)。

(*) ドメイン名は特に指定しなければデフォルトで「local」が使われる。

例) ネットワークプリンタの場合

prt01._ipp._tcp.local

avahiではavahi-daemonがこの機能を提供する。

Browsing

DNS-SD(DNS Service Discovery)によってネットワーク上のサービスを検出する仕組み。

avahiではavahi-dnsconfdがこの機能を提供する。

サービス追加

avahiで新たにサービスを追加するには/etc/avahi/services配下に「<サービス名>.service」というファイルを作成して設定をXMLで記述する。

例えばWebサーバをサービスとして追加する場合、記述内容は以下のようになる。

% hostname
fedora

% sudo vi /etc/avahi/services/http.service

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_http._tcp</type>
    <port>80</port>
  </service>
</service-group>

以下、必要最低限のタグについて説明する。それ以外はavahi.serviceのmanを参照のこと。

service-group

サービスの定義

一つの要素と一つ以上の要素を持つ必要がある。

name replace-wildcards="yes|no"

ネットワーク上に通知されるサービス名

replace-wildcards属性が"yes"の場合、値に"%h"と記述しておくと自ホスト名に置換される。デフォルトは"no"。

service protocol="ipv4|ipv6|any"

サービスの詳細定義

protocol属性によってサポートするネットワークプロトコルを指定する。デフォルトは"any"(IPv4とIPv6双方をサポート)。

type

サービスタイプ

サービス名とサービスプロトコル名を一緒に定義する(例:_http._tcp)。

port

サービス提供ポート

このファイルを作成し終わると自動的にネットワーク上にサービスの通知が行われ(*)、例えばMac OS X上のSafariでブックマークバーのBonjourメニューにWebサーバが表示される。

尚、SafariのブックマークバーにBonjourメニューを表示するにはあらかじめ環境設定で以下のように指定しておく必要がある。

(*) サービスの自動通知が行われるためにはあらかじめavahi-daemonが起動している必要がある。Fedoraではデフォルトで起動する設定になっている。

% chkconfig --list avahi-daemon
avahi-daemon  0:off  1:off  2:off  3:on  4:on  5:on  6:off

% ps ax|grep avahi
 2282 ?  Ss  0:00 avahi-daemon: running [fedora.local]
 2283 ?  Ss  0:00 avahi-daemon: chroot helper

関連資料・記事