2022年 11月 07日
Apple ネットワークに Linux:Avahi on SUSE Linux
Avahi は Zeroconf ネットワークを Linux, BSD に実装するための機能です。マダガスカルのサルの名前に由来しているソウです。Apple での Zerconf の実装は Bonjour,、Windows の場合、iTunes をインストールするか Bonjour Print Service をインストールすることで Zeroconf を利用できました。今は Bonjour なしでも使えます。Windows10 以降なら LLMNR が標準で Zeroconf ネットワークが実装されています。
Bonjour Print Services (Windows)iTunes
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 もできます。
openSUSE Leap 15.4 ではデフォルトで Avahi がインストールされていました。SUSE Linux Enterprise 15 (SLE15)にはパッケージはふくまれますがインストールはされていません。エンタープライズ・サーバ向け SLES の違いです。インストールされていなければ YaST > Software Management より、Avahi D-BUS Service を Search してインストールします。ついでに Avahi-utils も併せてインストールするのが良いでしょう。
環境によっては、インストールされていない場合があるので、パッケージが導入済みかどうかを YaST > Softwaremanagement で確認してください。
Avahi がレポジトリにない場合は、openSUSE の1クリックインストールのページに openSUSE Leap/SLE の各バージョンに併せて用意されたパッケージがあります。1Click インストール用のパッケージをインストールします。
Abahi D-BUS Service がインストールされたら、YaST2- > System > Service Manager から、Avahi を Startup:/On Bootに変更し保存します。右下のボタンでログの確認ができます。あるいは systemctl でアクティブにします。
- - 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%br0Have a lot of fun...opensuse154:~ # ssh user@macbook.localPassword:Last login: Sun Nov 6 03:27:18 2022 from 192.168.1.201user@macbook~ %
-- ping してみる
user@macbook~ % ping opensuse154.localPING opensuse154.local (192.168.1.201): 56 data bytes64 bytes from 192.168.1.201: icmp_seq=0 ttl=64 time=5.022 ms64 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 lossround-trip min/avg/max/stddev = 5.022/15.125/25.227/10.102 msuser@macbook~ % exitConnection to macbook.local closed.opensuse154:~ # ping macbook.localPING 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 ms64 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 1002msrtt min/avg/max/mdev = 4.756/5.252/5.749/0.496 msopensuse154:~ # exitConnection to opensuse154.local closed.user@macbook~ %
-- ちなみに Windows からもやってみた
C:\>ping opensuse154.localopensuse154.local [192.168.1.201]に ping を送信しています 32 バイトのデータ:192.168.1.201 からの応答: バイト数 =32 時間 <1ms TTL=64192.168.1.201 からの応答: バイト数 =32 時間 =1ms TTL=64192.168.1.201 からの応答: バイト数 =32 時間 <1ms TTL=64192.168.1.201 からの応答: バイト数 =32 時間 =3ms TTL=64192.168.1.201 の ping 統計:パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、ラウンド トリップの概算時間 (ミリ秒):最小 = 0ms、最大 = 3ms、平均 = 1msC:\>
どうやら Windows10 のあるバージョン以降では Zeroconf ネットワークに対応しているため、hostname.local でも通信できるようです。LLMNR(Link-Local Multicast Name Resolution)という方法です。,local を外しても ping が通りました。
Avahi を samba サーバに入れておけば ¥¥hostname.local で繋がるのはいいものです。ただし NetBios の様にネットワークのデバイスが一覧にリストされる機能は LLMNR には無いようです。トラブルが多い事で有名なマスタブラウザの様なアナウンス機能はありません。
とても重要なことですが、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 にチョッカイを出せる。
M1/M2 mac で linux, UTM で仮想化、 openSUSE Tumbleweed