Apple ネットワークに Linux:Avahi on SUSE Linux

Avahi (Woolly lemur) を Linux に

Apple ネットワークに Linux:Avahi on SUSE Linux_a0056607_21192825.jpeg

Avahi は Zeroconf ネットワークを Linux, BSD に実装するための機能です。マダガスカルのサルの名前に由来しているソウです。

Apple での Zerconf の実装は Bonjour,、Windows の場合、iTunes をインストールするか Bonjour Print Service をインストールすることで Zeroconf を利用できました。今は Bonjour なしでも使えます。Windows10 以降なら LLMNR が標準で Zeroconf ネットワークが実装されています。


Bonjour Print Services (Windows)



iTunes



Avahi で何ができる

Linux サーバに Avahi デーモンを動作させると、Apple 製デバイスから "hostname.local" でアクセスできるようになります。逆に Linux サーバからも、MyMacBook.local で通信することができます。持っていないのでわかりませんが、おそらく macOS 用の Bonjour 対応のプリンタも使える(?)かもしれません。Avahi Deamon は mDNS(マルチキャスト DNS) を実装しているという訳です。Zeroconf ネットワークは小規模なネットワークで面倒で専門的知識が必要な DNS なしで様々なデバイスに容易に接続する手段を提供します。

例えば Avahi デーモンが動作している Linux サーバにmac から ssh 接続するには

$ ssh mylinux.local

で mac から接続できるわけです。iPhone が同じ Wifi にあれば、 hostname.local で Ping もできます。

Apple ネットワークに Linux:Avahi on SUSE Linux_a0056607_21274853.png

Avahi のインストール

openSUSE Leap 15.4 ではデフォルトで Avahi がインストールされていました。
SUSE Linux Enterprise 15 (SLE15)にはパッケージはふくまれますがインストールはされていません。エンタープライズ・サーバ向け SLES の違いです。


インストールされていなければ YaST > Software Management より、Avahi D-BUS Service を Search してインストールします。ついでに Avahi-utils も併せてインストールするのが良いでしょう。

Apple ネットワークに Linux:Avahi on SUSE Linux_a0056607_21281105.png


環境によっては、インストールされていない場合があるので、パッケージが導入済みかどうかを YaST > Softwaremanagement で確認してください。

Avahi がレポジトリにない場合は、openSUSE の1クリックインストールのページに openSUSE Leap/SLE の各バージョンに併せて用意されたパッケージがあります。1Click インストール用のパッケージをインストールします。


Abahi D-BUS Service がインストールされたら、YaST2- > System > Service Manager から、Avahi を Startup:/On Bootに変更し保存します。右下のボタンでログの確認ができます。あるいは systemctl でアクティブにします。

Apple ネットワークに Linux:Avahi on SUSE Linux_a0056607_21283242.png

ホスト名.local で接続できるか

- - ssh で linux <--> mac に接続

user@macbook~ % ssh root@opensuse154.local
(root@opensuse154.local) Password:
Last login: Sun Nov 6 10:49:40 2022 from fe80::14b5:7c9a:c9b0:7d7c%br0
Have a lot of fun...

opensuse154:~ # ssh user@macbook.local
Password:
Last login: Sun Nov 6 03:27:18 2022 from 192.168.1.201
user@macbook~ %



-- ping してみる

user@macbook~ % ping opensuse154.local
PING opensuse154.local (192.168.1.201): 56 data bytes
64 bytes from 192.168.1.201: icmp_seq=0 ttl=64 time=5.022 ms
64 bytes from 192.168.1.201: icmp_seq=1 ttl=64 time=25.227 ms
^C
--- opensuse154.local ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 5.022/15.125/25.227/10.102 ms
user@macbook~ % exit
Connection to macbook.local closed.

opensuse154:~ # ping macbook.local
PING macbook.local (192.168.1.50) 56(84) bytes of data.
64 bytes from 192.168.1.50 (192.168.1.50): icmp_seq=1 ttl=64 time=5.75 ms
64 bytes from 192.168.1.50 (192.168.1.50): icmp_seq=2 ttl=64 time=4.76 ms
^C
--- macbook.local ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 4.756/5.252/5.749/0.496 ms
opensuse154:~ # exit
Connection to opensuse154.local closed.
user@macbook~ %


-- ちなみに Windows からもやってみた

C:\>ping opensuse154.local

opensuse154.local [192.168.1.201]に ping を送信しています 32 バイトのデータ:
192.168.1.201 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.1.201 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.1.201 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.1.201 からの応答: バイト数 =32 時間 =3ms TTL=64

192.168.1.201 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 3ms、平均 = 1ms

C:\>

どうやら Windows10 のあるバージョン以降では Zeroconf ネットワークに対応しているため、hostname.local でも通信できるようです。LLMNR(Link-Local Multicast Name Resolution)という方法です。,local を外しても ping が通りました。

Avahi を samba サーバに入れておけば ¥¥hostname.local で繋がるのはいいものです。ただし NetBios の様にネットワークのデバイスが一覧にリストされる機能は LLMNR には無いようです。トラブルが多い事で有名なマスタブラウザの様なアナウンス機能はありません。


.local ドメインは mDNS で使われている

とても重要なことですが、Avahi も Bonjour サービスも mDNS の実装の手段として標準化されたルールに従って、",local" をトップレベルドメインとして利用していることです。もしも貴方の構内ネットワークの TLD が ”mycompany.local” の様に定義されていたら、まず間違えなく Avahi も Bonjour サービスも動作しないでしょう。Microsoft の Active Directory 環境、MaD では ".local " ドメインは使ってはいけません。もし使っているなら、莫大な手間をかけてでも ADドメイン は再構築すべきでしょう。


重複したホスト名付けたら確実にトラブる

一般的には、Unix 系オペレーティング・システムのホスト名は、ネットワーク上ではあまり意味がありません。tux とか hostname とか何となく付けている人って多いでしょう。ホスト名が意味を持つのは、DNS に登録されてからです。ところが mDNS って簡易的にインストールした HOSTNAME にそのまま ".local" のドメイン名を付けるので、Avahi でダブったホスト名は多分トラブルの元になります。/var/log/messages に hostname conflict ... と言ったエラーが記録されます。


ルータ超えはできない

こういう PnP 的なプロトコルのアリアリですが、マルチキャストではルータ超えはできません。そもそもそういった環境を想定していません。こうした zeroconf なシステムは、小規模な SOHO 向けの機能なのです。

まとめ

・Windows でも mac でもZeroconf ネットワークに対応しているため、Linux にも Avahi を入れておいて損はない。
・小規模な SOHO ネットワークや企業のワークグループ内では DNS などの大げさな準備がなくても Avahi を入れておけばホスト名でアクセスできるので、IP アドレスを知らなくてもユーザはシステム部に隠れてこっそり名前解決の手段ができる。
・逆に言えば管理者にとっては厄介な面倒を見なければならない。セキュリティリスクは未知。何しろ IP アドレスを知らなくても、隣の PC にチョッカイを出せる。


20世紀に開発された NetBIOS のレガシーに代わる 21 世紀の有用な機能と言えばそのとおりです。

いい意味でも悪い意味でも枯れていない若い技術なので、今後も発展しそうですが、バグやセキュリティリスクも考えて利用するべきでしょう。


M1/M2 mac で linux, UTM で仮想化、 openSUSE Tumbleweed










by islandcenter | 2022-11-07 21:46 | SUSE | Comments(0)