Avahi
- "Avahi は、Zeroconf (ゼロ・コンフィギュレーション・ネットワーキング) のフリーソフトウェア実装であり、マルチキャスト DNS/DNS-SD サービスディレクトリのためのシステムを含む。Avahi は、特定の構成情報のないローカルネットワーク上のサービスホストの発行と発見を可能とする。例えば、ネットワークに接続したとき、即座にプリンタを検出し、ファイルを探し出し、他者と会話できるようにする。GNU Lesser General Public License (LGPL) の条件でライセンス提供される。"
目次
インストール
公式リポジトリにある avahi をインストールしてください。
Avahi のデーモンは systemd で avahi-daemon.service
を使うことで管理できます。
IPv6 を有効にする
いくつかの理由で、Avahi はデフォルトで IPv6 が無効になっています。有効にするには、/etc/avahi/avahi-daemon.conf
の use-ipv6
を yes
に設定してください。
Avahi を使う
IPv4LL IP アドレスの取得
デフォルトでは、DHCP を使って IP を取得するとき、dhcpcd パッケージを使用します。DHCP で IP アドレスが取得できなかったときに IPv4LL アドレスを取得するようにすることができます。デフォルトではこのオプションは無効になっています。有効にするには noipv4ll をコメントアウトしてください:
/etc/dhcpcd.conf
... #noipv4ll ...
もしくは avahi-autoipd
を実行してください:
# avahi-autoipd -D
ホスト名の解決
Avahi によってホスト名を使ってコンピューターにアクセスすることが可能です。
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
) はあなたのネットワーク上の様々なサービスを表示します。また、bssh
や bvnc
を使うことで SSH や VNC サーバーをそれぞれ閲覧することが可能です。
Avahi のウェブサイトには Avahi がサポートしているソフトウェアの一覧があります: http://avahi.org/wiki/Avah4users
ファイル共有
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
何も設定しなくても動くはずです。
Arch User Repository から gshareAUR をインストールして LAN 間でファイルを共有できます。設定は必要ありません、ちゃんと動くはずです。
Vsftpd
- ソース: ubuntuforums.org
標準の ftp サービスを使いたい場合は、vsftpd と avahi をインストールしてください。vsftpd の設定を ubuntuforums ページに従うか、個人設定によって変更してください (man vsftpd.conf
を参照)。
/etc/avahi/services
に ftp.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.service
と vsftpd.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 clients やアプリケーション一覧#インスタントメッセージで 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
ファイアウォールとしてシンプルなステートフルファイアウォールを使っている場合は:
# iptables -A UDP -p udp -m udp --dport 5353 -j ACCEPT
参照
- Avahi - 公式プロジェクトウェブサイト
- Bonjour for Windows - Windows で Zeroconf を有効にする
- http://www.zeroconf.org/