Avahi の備忘録です.
の続きですね.
avahi-browse
まずは,自分のネットワークがどのようになっているのかを調べます.その為に使えるコマンドは,avahi-browse の様です.今回は Raspbian Jessie 環境で試してみます.
avahi-browse を使うには,Raspbian Jessie だと avahi-utils を追加インストールしなければなりません.
$ sudo apt-get install avahi-utils
avahi-browse -a が全てのサービスを問い合わせるコマンドみたい.私のネットワークだと(もちろんそのままじゃありません.色々改変しています)以下のような感じ.
$ avahi-browse -a -t + eth0 IPv6 jessie [00:00:00:00:00:00] Workstation local + eth0 IPv4 jessie [00:00:00:00:00:00] Workstation local + eth0 IPv4 volumio [00:00:00:00:00:00] Workstation local + eth0 IPv6 5555555555555555 iPod Touch Music Library local + eth0 IPv4 5555555555555555 iPod Touch Music Library local + eth0 IPv6 A44444444444@Apple TV AirTunes Remote Audio local + eth0 IPv4 A44444444444@Apple TV AirTunes Remote Audio local + eth0 IPv4 BBBBBBBBBBBB@volumio AirTunes Remote Audio local + eth0 IPv6 Apple TV _airplay._tcp local + eth0 IPv4 Apple TV _airplay._tcp local + eth0 IPv6 00-00-00-00.1 Apple TV _sleep-proxy._udp local + eth0 IPv4 00-00-00-00.1 Apple TV _sleep-proxy._udp local + eth0 IPv6 Brother MFC-9340CDW Web Site local + eth0 IPv4 Brother MFC-9340CDW Web Site local + eth0 IPv6 Brother MFC-9340CDW _scanner._tcp local + eth0 IPv4 Brother MFC-9340CDW _scanner._tcp local + eth0 IPv6 Brother MFC-9340CDW Internet Printer local + eth0 IPv4 Brother MFC-9340CDW Internet Printer local + eth0 IPv6 Brother MFC-9340CDW UNIX Printer local + eth0 IPv4 Brother MFC-9340CDW UNIX Printer local + eth0 IPv6 Brother MFC-9340CDW PDL Printer local + eth0 IPv4 Brother MFC-9340CDW PDL Printer local + eth0 IPv4 amzn.dmgr:D4444444444444444444444444444444444444:QQQQQqQqq4:278352 _amzn-wplay._tcp local + eth0 IPv4 pulse@volumio PulseAudio Sound Server local + eth0 IPv4 pulse@volumio: bcm2835 ALSA Analog Stereo PulseAudio Sound Sink local + eth0 IPv4 volumio _Volumio._tcp local
それぞれの意味は次の通りみたい.
- 最初の eth0 はどうも avahi-browse -a を実行した機器(今回だと Raspbian Jessie)のネットワークインターフェース名みたい.要するに,eth0 が所属しているネットワークの情報であることを意味している.
- 次の IPv4 と IPv6 はそのまま v4 のサービスなのか v6 のサービスなのかの区分け.
- 3番目が名前なのかな???
- 4番目がサービス名なのかな?
- 最後がドメイン名(この場合は local ですね)
私のネットワークだと,local ドメインしか無くて,
ホスト | サービス | |
jessie, volumio | Workstation | |
5555555555555555 | iPod Touch Music Library | ??? |
Apple TV, volumio | Airplay | |
Apple TV | Bonjour Sleep Proxy | |
Brother MFC-9340CDW | Web Site, _scanner._tcp, Internet Printer, UNIX Printer, PDL Printer | |
amzn.dmgr:D4444… | _amzn-wplay._tcp | |
volumio | PulseAudio Sound Server, PulseAudio Sound Sink | |
volumio | _Volumio._tcp |
ってなってるみたい.Apple TV は文字通り Apple TV で,amzn.dmgr は Amazon Stick TV で,Raspbian jessie, volumio もそのまんま,Brother MFC-9340CDW は,
でどれも身に覚えのある機器なのですが,唯一,5555555555555555 ってのが分からない.これが何かを調べる方法は,
$ avahi-browse -r _touch-able._tcp + eth0 IPv6 5555555555555555 iPod Touch Music Library local + eth0 IPv4 5555555555555555 iPod Touch Music Library local = eth0 IPv4 5555555555555555 iPod Touch Music Library local hostname = [Apple-TV.local] address = [192.168.0.***] port = [3689] txt = ["Ver=******" "atCV=******" "DvSv=****" "DvTy=AppleTV" "CtlN=Apple TV" "DbId=***************" "atSV=******" "txtvers=1"] = eth0 IPv6 5150E34A5C5B96C0 iPod Touch Music Library local hostname = [Apple-TV.local] address = [192.168.0.***] port = [3689] txt = ["Ver=******" "atCV=******" "DvSv=****" "DvTy=AppleTV" "CtlN=Apple TV" "DbId=***************" "atSV=******" "txtvers=1"]
のように,iPod Touch Music Library サービスで逆引きすることなので,今回は無事,Apple TV のサービスの一つであることが分かったのですが,これは,_touch-able._tcp が iPod Touch Music Library の正式なサービス名だと分かってないと引けない.
私の場合は,これを調べるために Avahi のソースコードを見たんですが,これ以外の方法で調べる方法があるのかどうかは不明です.なお,別名のリストは,
$ avahi-browse -b PostgreSQL Server Apple AirPort iChat Presence Gobby Collaborative Editor Session IMAP Mail Access PulseAudio Sound Source iTunes Remote Control RealPlayer Shared Favorites OLPC Presence SubEthaEdit Collaborative Text Editor Apple TimeMachine ...
のようにすれば分かるのですが,逆は出来ない.う~ん.何故なんだろうという感じです.
avahi-resolve
avahi でコンピュータのホスト名を解決するのに使うコマンドですね.逆引きもあります.使い方は
$ avahi-resolve -4 -n Apple-TV.local Apple-TV.local 192.168.0.*** $ avahi-resolve -6 -n Apple-TV.local Apple-TV.local fe80::****:****:****:**** $ avahi-resolve -a 192.168.0.*** 192.168.0.*** Apple-TV.local $ avahi-resolve -a fe80::****:****:****:**** fe80::****:****:****:**** Apple-TV.local
のような感じ.使うときには必ずドメイン名(.local) をつけないとダメなことに注意しないといけません.なお,
$ avahi-resolve-host-name Apple-TV.local Apple-TV.local fe80::****:****:****:**** $ avahi-resolve-address 192.168.0.*** 192.168.0.*** Apple-TV.local
でも良いみたいですね.
ここで良く分からないのが,avahi-browse で表示される名前(5555555555555555とか)です.これはホスト名じゃない.この名前でアドレス等を引こうとしても引けないので,なんのためのものなのかよく分からない.
ということで,よく使うコマンド2つについては,まぁ,内容は把握できたのですが,細かなところが色々未だに不明です.これらについてはボチボチ調べて,追記していきたいと思います.