Ubuntu Weekly Recipe

第216回 Avahiとローカルエリアネットワーク

この記事を読むのに必要な時間:およそ 2.5 分

見つかったサービスを使う

Bonjourの仕組みによってサービスを見つけることができました。しかしそのサービスを利用できるかどうかは,使うソフトウェアの実装によって異なります。

iTunesの共有ライブラリの場合

DAAPサービスに対応したメディアプレイヤーが必要です。Ubuntu 12.04からデフォルトの音楽プレイヤーに復帰するRhythmboxやそれまでのデフォルトであったBansheeが対応しています。

図6 Bansheeであればメニュー「メディア」から,Rhythmboxであればメニュー「再生」からDAAPへの接続ウィンドウを開くことができる。URIとポートの入力が必要だが,これに関してはこのレシピの「ホスト名.localによる通信」を参照して欲しい

図6 Bansheeであればメニュー「メディア」から,Rhythmboxであればメニュー「再生」からDAAPへの接続ウィンドウを開くことができる。URIとポートの入力が必要だが,これに関してはこのレシピの「ホスト名.localによる通信」を参照して欲しい

しかし,iTunesはそのバージョンによって実装しているDAAPに違いがあるため,RhythmboxやBansheeが常に対応できるわけではないことに注意してください。

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

Ubuntuデフォルトの印刷システムであるCUPSは,Avahiを利用してBonjour対応のネットワークプリンターを検索して使うことができます。使用可能なプリンターとして登録するにはまず,デスクトップ右上の歯車マーク,項目「システム⁠⁠,⁠印刷」アイコンとたどっていって「印刷」ウィンドウを開きます。⁠追加」ボタンをクリックして「新しいプリンター」ウィンドウを開くと,ネットワークプリンターとして表示されます。

図7 先ほどのHP Photosmart B110が「新しいプリンター」ウィンドウに表示されている

図7 先ほどのHP Photosmart B110が「新しいプリンター」ウィンドウに表示されている

あとはUSB接続のプリンターと同じようにして登録するステップを踏んでいき,使用可能となります。

PulseAudioサウンドサーバーの場合

PulseAudioもまた,そのネットワーク機能にAvahiを利用します注1⁠。設定をすることで別のマシンに音声データを送信したり,別のマシンから音声データを受け取って鳴らしたりといったことができるようになります。詳しい設定の仕方は本連載の第106回を参照してください。

図8 ⁠サウンドの設定」ウィンドウ。この例では他のUbuntu上のPulseAudioに向けて音声データを送っている

図8 「サウンドの設定」ウィンドウ。この例では他のUbuntu上のPulseAudioに向けて音声データを送っている

注1)
Avahiの開発者もPulseAudioの開発者も同じ人であるというトリビアがあります。

libvirtの場合

仮想化ソフトウェアであるlibvirtですが,他のコンピューター上で動いているlibvirtを見つける際にAvahiを利用します。

libvirtを画面上から操作するためのソフトウェアに,パッケージでインストールできるvirt-managerがあります。Avahiが使われている現場を目撃するにはこのパッケージをインストールして仮想マシンマネジャーを起動し,メニュー「ファイル」から項目「接続を追加」を選択。開いたウィンドウで「リモートホストに接続」オプションにチェックを入れ,⁠ホスト名」というプルダウンリストをクリックします。そうすると,⁠.local」が末尾についた名前を接続先として選択できます。

図9 ここではworkstation.localでアクセスできるマシンを接続先として選択している

図9 ここではworkstation.localでアクセスできるマシンを接続先として選択している

最後に,この「.local」がくっついた名前について紹介して,今回のレシピはおしまいです。

ホスト名.localによる通信

avahi-discoverに戻って再びキャッシュ情報を見てみましょう。⁠アドレス」という項目にはIPアドレスやポート番号と共に,⁠laptop.local」という文字列が登場しています。⁠laptop」というのはこのノードのホスト名で,Ubuntuであればインストール時に「コンピューターの名前」として登録している文字列のことです。

図10 Ubuntuをインストールしたことがあればきっとこの画面に見覚えがあるだろう

図10 Ubuntuをインストールしたことがあればきっとこの画面に見覚えがあるだろう

「.local」のピリオドを除いた部分はノード側が設定するドメイン名で,サービスが使用するものと同じです。たいていの場合は「local」を用いているようですので,以降は簡便のために「local」が使われているものとして話を進めます。

起動しているAvahiが持つキャッシュには,この「ホスト名.local」とIPアドレスの組み合わせ表が含まれています注2⁠。Ubuntuのネットワーク機能はこの組み合わせ表をデフォルトで利用するようになっており注3⁠,Ubuntu上で動くどのソフトウェアでも「ホスト名.local」を使って通信することを可能としています。

図11 Firefoxでの例。ロケーションバーは「server.local」となっており,⁠server」をホスト名に持つウェブサーバーと通信できていることがわかる

図11 Firefoxでの例。ロケーションバーは「server.local」となっており,「server」をホスト名に持つウェブサーバーと通信できていることがわかる

もしAvahiを使わずにホスト名による通信を行いたければ,ローカルエリアネットワーク内の通信相手のIPアドレスとホスト名の組をシステムに登録するか,あるいはローカルエリアネットワーク向けのDNSサーバーを設ける必要があり,なかなか面倒です。

注2)
IPv4のアドレスとIPv6のアドレスは区別され,同じホスト名であっても別の組み合わせとして扱われる。
注3)
デフォルトでインストールされるパッケージ「libnss-mdns」がName Service Switchにプラグインし,Avahiのキャッシュを参照することで成立している。

まとめ

直接触れる機会のない地味な存在であるAvahiですが,ローカルエリアネットワーク内のノード同士のアクセスをとても簡単にしてくれる,縁の下の力持ちです。Ubuntuにおいて重要な役割を果たしていると言えるでしょう。

著者プロフィール

坂本貴史(さかもとたかし)

Ubuntuのマルチメディア編集環境であるUbuntu Studioのユーザ。主にUbuntu日本コミュニティとUbuntu Studioコミュニティで活動。いつかユーザ同士で合作するのが夢。