Avahi

提供: ArchWiki
2014年8月1日 (金) 02:04時点におけるKusakata (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

Wikipedia:ja:Avahi より:

"Avahi は、Zeroconf (ゼロ・コンフィギュレーション・ネットワーキング) のフリーソフトウェア実装であり、マルチキャスト DNS/DNS-SD サービスディレクトリのためのシステムを含む。Avahi は、特定の構成情報のないローカルネットワーク上のサービスホストの発行と発見を可能とする。例えば、ネットワークに接続したとき、即座にプリンタを検出し、ファイルを探し出し、他者と会話できるようにする。GNU Lesser General Public License (LGPL) の条件でライセンス提供される。"

インストール

公式リポジトリにある avahiインストールしてください。

Avahi のデーモンは systemdavahi-daemon.service を使うことで管理できます。

IPv6 を有効にする

いくつかの理由で、Avahi はデフォルトで IPv6 が無効になっています。有効にするには、/etc/avahi/avahi-daemon.confuse-ipv6yes に設定してください。

Avahi を使う

IPv4LL IP アドレスの取得

デフォルトでは、DHCP を使って IP を取得するとき、dhcpcd パッケージを使用します。DHCP で IP アドレスが取得できなかったときに IPv4LL アドレスを取得するようにすることができます。デフォルトではこのオプションは無効になっています。有効にするには noipv4ll をコメントアウトしてください:

/etc/dhcpcd.conf
...
#noipv4ll
...

もしくは avahi-autoipd を実行してください:

# avahi-autoipd -D

ホスト名の解決

Avahi によってホスト名を使ってコンピューターにアクセスすることが可能です。

ノート: これを使うには nss-mdns をインストールして、avahi-daemon.service を有効にし動作させる必要があります。

Avahi を動作させている maple, fig, oak という名前のマシンがあると考えます。Avahi を設定することでそれぞれのコンピュータの /etc/hosts ファイルを管理する必要がなくなります。代わりに maple.local を使うことで maple が持っている全てのサービスにアクセスすることが可能です。ただし、デフォルトでは .local の問い合わせは Arch Linux では無効になっています。有効にするにはファイル /etc/nsswitch.conf を編集して次の行を:

hosts: files dns myhostname

以下のように変更してください:

hosts: files mdns_minimal [NOTFOUND=return] dns myhostname

mdns_minimal モジュールは .local TLD のクエリーだけを処理します。他の TLD を使うように Avahi を設定している場合は、最後に完全な mdns モジュールも追加してください。IPv4 だけや IPv6 だけのモジュール mdns[46](_minimal) も存在します。

Avahi にはネットワーク上で動作しているサービスを見つけるのに役立つユーティリティが複数含まれています。例えば、ネットワーク中のサービスを探すには、次を実行してください:

avahi-browse -alr

Avahi Zeroconf ブラウザ (avahi-discover) はあなたのネットワーク上の様々なサービスを表示します。また、bsshbvnc を使うことで SSH や VNC サーバーをそれぞれ閲覧することが可能です。

Avahi のウェブサイトには Avahi がサポートしているソフトウェアの一覧があります: http://avahi.org/wiki/Avah4users

ノート: avahi-discover を使うには pygtkpython2-dbus をインストールする必要があります。

ファイル共有

NFS

NFS 共有を設定している場合は、Avahi を使って Zeroconf が有効になっているブラウザ (KDE の Konqueror や OS X の Finder など) で共有を自動マウントすることができます。/etc/avahi/services に以下の内容で .service ファイルを作成してください:

/etc/avahi/services/nfs_Zephyrus_Music.service
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">NFS Music Share on %h</name>
  <service>
    <type>_nfs._tcp</type>
    <port>2049</port>
    <txt-record>path=/data/shared/Music</txt-record>
  </service>
</service-group>

/etc/exports にオプションとして insecure を使っている場合ポートはこのままでいいですが、そうでない場合は変更する必要があります (OS X クライアントには insecure が必要です)。パスは export しているパスか、そのサブディレクトリになります。なんらかの理由で Leopard から自動マウント機能は削除されていますが、スクリプトを使うことができます。このスクリプトはこの投稿 に基づいています。

Samba

何も設定しなくても動くはずです。

GShare

Arch User Repository から gshareAUR をインストールして LAN 間でファイルを共有できます。設定は必要ありません、ちゃんと動くはずです。

Vsftpd

ソース: ubuntuforums.org

標準の ftp サービスを使いたい場合は、vsftpd と avahi をインストールしてください。vsftpd の設定を ubuntuforums ページに従うか、個人設定によって変更してください (man vsftpd.conf を参照)。

/etc/avahi/servicesftp.service ファイルを作成して、そのファイルの中に以下を貼り付けて下さい:

<?xml version="1.0" standalone='no'?>
   <!DOCTYPE service-group SYSTEM "avahi-service.dtd">
   <service-group>
   <name>FTP file sharing</name>
   <service>
   <type>_ftp._tcp</type>
   <port>21</port>
   </service>
   </service-group>

設定が完了したら、avahi-daemon.servicevsftpd.service のサービスを再起動してください。

これでネットワークの他のコンピュータから ftp サーバーを通して閲覧できるようになっているはずです。このセクションに書かれた手順が作られて ftp サーバーは avahi によってローカルの Zeroconf ネットワークになります。

GNOME や KDE を使っていない場合、ファイルマネージャを使って直接 ftp サーバーにログインすることができないかもしれません。そのときは ftp クライアントを使ってマシンのサーバーの IP アドレスか (このセクションで説明しているように) ホスト名を指定してください。

Giver

Giver は Giver を動作させている2つのデスクトップ間で簡単にファイルを共有できる mono のプログラムです。必要な操作はファイルをクリックしてファイルを送信したい相手の名前か写真にドラッグするだけです。

パッケージは giverAUR です。

Giver は gnome-sharp に依存しており、gnome-sharp は GNOME のパッケージに依存しているので注意してください。

リンクローカル (Bonjour/Zeroconf) 通信

Avahi を linux の bonjour プロトコルのサポートのために使うことができます。Wikipedia:Comparison of instant messaging clientsList of Applications#インスタントメッセージ で bonjour プロトコルをサポートしているクライアントのリストを確認してください。

携帯デバイスからの Airprint

Avahi は CUPS と協同して airprint 対応の携帯デバイスからほとんど全てのプリンターに印刷する機能も提供します。デバイスからの印刷機能を有効にするには、プリンターの avahi サービスファイルを /etc/avahi/services に作成して avahi を再起動してください。HP-Laserjet プリンターの一般的なサービスファイルは以下の例のようになります。name, rp, ty, adminurl, note は変えて下さい。ファイルは /etc/avahi/services/youFileName.service として保存します:

 <?xml version="1.0" standalone='no'?>
 <!DOCTYPE service-group SYSTEM "avahi-service.dtd">
 <service-group>
   <name>yourPrnterName</name>
   <service>
     <type>_ipp._tcp</type>
     <subtype>_universal._sub._ipp._tcp</subtype>
     <port>631</port>
     <txt-record>txtver=1</txt-record>
     <txt-record>qtotal=1</txt-record>
     <txt-record>rp=printers/yourPrnterName</txt-record>
     <txt-record>ty=yourPrnterName</txt-record>
     <txt-record>adminurl=http://198.168.7.15:631/printers/yourPrnterName</txt-record>
     <txt-record>note=Office Laserjet 4100n</txt-record>
     <txt-record>priority=0</txt-record>
     <txt-record>product=virtual Printer</txt-record>
     <txt-record>printer-state=3</txt-record>
     <txt-record>printer-type=0x801046</txt-record>
     <txt-record>Transparent=T</txt-record>
     <txt-record>Binary=T</txt-record>
     <txt-record>Fax=F</txt-record>
     <txt-record>Color=T</txt-record>
     <txt-record>Duplex=T</txt-record>
     <txt-record>Staple=F</txt-record>
     <txt-record>Copies=T</txt-record>
     <txt-record>Collate=F</txt-record>
     <txt-record>Punch=F</txt-record>
     <txt-record>Bind=F</txt-record>
     <txt-record>Sort=F</txt-record>
     <txt-record>Scan=F</txt-record>
     <txt-record>pdl=application/octet-stream,application/pdf,application/postscript,image/jpeg,image/png,image/urf</txt-record>
     <txt-record>URF=W8,SRGB24,CP1,RS600</txt-record>
   </service>
 </service-group>

もしくは、https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py を使って Avahi のサービスファイルを生成することができます。このスクリプトは python2 と pycups に依存しています。スクリプトを実行するには:

# python2 airprint-generate.py -d /etc/avahi/services

ファイアウォール

iptables を使っている場合 UDP ポート 5353 を開いて下さい:

 # iptables -A INPUT -p udp -m udp --dport 5353 -j ACCEPT

ファイアウォールとして Simple stateful firewall フォーマットを使っている場合は:

 # iptables -A UDP -p udp -m udp --dport 5353 -j ACCEPT

参照