【mDNS / Avahi 完全攻略】第3回: macOS と Ubuntu ( Multipass ) を繋ぐ!シームレスなホスト名解決を体験

はじめに

ソフトウェアエンジニアやシステム管理者であるあなたは、macOSとUbuntu (Multipass) を利用した開発環境で、ホスト名解決に手間取った経験はありませんか? 複数のOS環境を行き来する中で、IPアドレスを直接指定したり、hostsファイルを編集したりするのは、非常に非効率的です。

本記事では、mDNS (multicast DNS) を活用し、macOSホストとMultipass上のUbuntu仮想マシン間で、まるで同じローカルネットワークにいるかのようにシームレスなホスト名解決を実現する方法を解説します。これにより、あなたの開発ワークフローは劇的に改善され、よりスムーズな環境構築とテストが可能になります。

この記事を読めば、あなたは以下のことができるようになります。

  • macOSからUbuntu VMへのホスト名解決をpingやSSHで確認できる。
  • Ubuntu VMからmacOSホストへのホスト名解決をpingで確認できる。
  • 双方向のホスト名解決ができない場合のトラブルシューティングのヒントを得られる。

さあ、mDNSの力を借りて、あなたの開発環境を次のレベルへと引き上げましょう!


対象読者

  • macOSとLinux (Ubuntu) を併用する開発者: 特にMultipassでVMを運用しており、ホストOSとVM間の連携を強化したい方。
  • ネットワーク設定の効率化を目指す方: IPアドレスを直接指定する手間を省き、ホスト名でデバイスにアクセスしたい方。
  • mDNS/Avahiの応用に関心がある方: mDNS/Avahiが提供する双方向のホスト名解決の具体的な設定と活用方法を学びたい方。
  • 開発環境のトラブルシューティングに役立てたい方: ホスト名解決に関する問題の切り分けや解決策を探している方。

動作検証環境

この記事で紹介するcurlコマンドの動作は、以下の環境で検証しています。

  • OS : macOS Tahoe Version 26.0
  • ハードウェア : MacBook Air 2024 M3 24GB
  • Multipass : Multipass version 1.16.1

目次


macOSからUbuntu VMへのホスト名解決

前回の記事でUbuntu (Multipass) にAvahiを導入し、ホスト名が.localドメインで解決されるように設定しました。

今回は、macOSホストからそのUbuntu VMにホスト名でアクセスできるかを確認します。

macOSホストからそのUbuntu VMにホスト名でアクセス

図の解説:

  1. macOS Hostubuntu-vm.local というホスト名でSSH接続を試みます。
  2. macOS Host はローカルネットワークに mDNSクエリ を送信し、ubuntu-vm.local のIPアドレスを問い合わせます。
  3. Multipass VM (Ubuntu) 内で動作している Avahi Daemon がこのクエリに応答し、自身のIPアドレスを mDNSレスポンス としてローカルネットワークに返します。
  4. macOS Host はAvahi Daemonから受け取った IPアドレス を取得します。
  5. macOS Host は取得したIPアドレスを使用して、Multipass VM 内の SSH Server にSSH接続を確立します。

これにより、macOSホストはIPアドレスを直接知らなくても、ホスト名だけでUbuntu VMにSSH接続できるようになります。


ping <VM名>.local での確認

最も基本的な確認方法は、macOSのターミナルからpingコマンドを使用することです。Ubuntu VMのホスト名がubuntu-vmであると仮定した場合、以下のように実行します。

ping ubuntu-vm.local

もし設定が正しく行われていれば、以下のような出力が得られるはずです。

出力例:

PING ubuntu-vm.local (192.168.64.2) 56(84) bytes of data.
64 bytes from 192.168.64.2 (192.168.64.2): icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 192.168.64.2 (192.168.64.2): icmp_seq=2 ttl=64 time=0.048 ms
...

ここで表示されるIPアドレスは、Multipassによって割り当てられたUbuntu VMのIPアドレスです。pingが成功すれば、macOSがmDNSを通じてUbuntu VMのホスト名を解決できていることを意味します。


SSH接続でのホスト名利用

pingだけでなく、SSH接続でもホスト名を利用できるようになります。これにより、IPアドレスを覚える必要がなくなり、より直感的にVMにアクセスできます。

ssh ubuntu@ubuntu-vm.local

初回接続時には、SSHキーのフィンガープリントの確認が求められる場合があります。

出力例:

The authenticity of host 'ubuntu-vm.local (192.168.64.2)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

yesと入力して続行すれば、パスワードなしでSSH接続が確立されるはずです(Multipassのデフォルト設定ではSSHキーが自動的に設定されます)。


Ubuntu VMからmacOSホストへのホスト名解決

次に、Ubuntu VMからmacOSホストのホスト名を解決できるかを確認します。これにより、双方向でのシームレスな連携が実現します。

Ubuntu VMからmacOSホストのホスト名を解決

図の解説:

  1. Ubuntu VMMy-MacBook-Pro.local というホスト名でpingを試みます。
  2. Ubuntu VM はローカルネットワークに mDNSクエリ を送信し、My-MacBook-Pro.local のIPアドレスを問い合わせます。
  3. macOS Host 内で動作している Bonjour がこのクエリに応答し、自身のIPアドレスを mDNSレスポンス としてローカルネットワークに返します。
  4. Ubuntu VM はBonjourから受け取った IPアドレス を取得します。
  5. Ubuntu VM は取得したIPアドレスを使用して、macOS Host にpingを送信します。

これにより、Ubuntu VMはIPアドレスを直接知らなくても、ホスト名だけでmacOSホストにアクセスできるようになります。


macOSのホスト名を確認する

まず、macOSホストのホスト名を確認しましょう。macOSの「システム設定」>「一般」>「情報」で「コンピュータ名」を確認できます。

例えば、My-MacBook-Proのような名前が設定されているとします。

mDNSでは、このコンピュータ名に.localが付加された形式(例: My-MacBook-Pro.local)で解決されます。


ping <macOSホスト名>.local での確認

Ubuntu VMにSSHで接続し、そこからmacOSホストのホスト名に対してpingを実行します。

# Ubuntu VMのターミナルで実行
ping My-MacBook-Pro.local

macOSホストのIPアドレスが192.168.64.1であると仮定した場合、以下のような出力が得られるはずです。

出力例:

PING My-MacBook-Pro.local (192.168.64.1) 56(84) bytes of data.
64 bytes from 192.168.64.1 (192.168.64.1): icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 192.168.64.1 (192.168.64.1): icmp_seq=2 ttl=64 time=0.048 ms
...

pingが成功すれば、Ubuntu VMがmDNSを通じてmacOSホストのホスト名を解決できていることを意味します。これで、macOSとUbuntu VM間の双方向のホスト名解決が確立されました。


相互接続の確認とトラブルシューティングのヒント

もし上記の手順でホスト名解決がうまくいかない場合、いくつかの原因が考えられます。ここでは、相互接続の確認と簡単なトラブルシューティングのヒントを提供します。


接続できない場合のチェックポイント(ネットワーク、ファイアウォール)

  1. ネットワーク接続の確認:
  • macOSホストとUbuntu VMが同じネットワークセグメントにいるか確認してください。Multipassのデフォルト設定では、VMはホストのネットワークインターフェースを介して通信します。
  • multipass list コマンドでVMのIPアドレスを確認し、macOSからそのIPアドレスに直接pingできるか試してください。
  • Ubuntu VM内から、ip a コマンドでIPアドレスを確認し、macOSホストのIPアドレスに直接pingできるか試してください。
  1. ファイアウォールの設定:
  • macOSのファイアウォールがmDNS (UDPポート5353) の通信をブロックしていないか確認してください。「システム設定」>「ネットワーク」>「ファイアウォール」で設定を確認できます。
  • Ubuntu VMのファイアウォール (ufw) がmDNSの通信をブロックしていないか確認してください。必要であれば、UDPポート5353を許可するルールを追加します。
sudo ufw allow 5353/udp
sudo ufw enable

avahi-browsedns-sd でのサービス確認

mDNSはホスト名解決だけでなく、ネットワーク上のサービスを発見するためにも利用されます。avahi-browse (Ubuntu) や dns-sd (macOS) コマンドを使って、ネットワーク上でどのようなmDNSサービスが公開されているかを確認できます。

macOSで利用可能なサービスを確認:

dns-sd -B _services._dns-sd._udp

このコマンドは、ネットワーク上で利用可能なすべてのmDNSサービスタイプをリストアップします。

実行例:

Browsing for _services._dns-sd._udp.
DATE: ---Sat 05 Oct 2025---
15:00:00.000  ...STARTING...
15:00:01.000  Add 2 2 local. _ssh._tcp.
15:00:01.000  Add 2 2 local. _sftp-ssh._tcp.
15:00:01.000  Add 2 2 local. _device-info._tcp.

Ubuntu VMで利用可能なサービスを確認:

avahi-browse -a

このコマンドは、ネットワーク上で公開されているすべてのmDNSサービスとホスト名をリストアップします。

実行例:

+ enp0s3: IPv6 ubuntu-vm                                    SSH Remote Terminal  local
+ enp0s3: IPv4 ubuntu-vm                                    SSH Remote Terminal  local
+ enp0s3: IPv6 My-MacBook-Pro                                Workstation          local
+ enp0s3: IPv4 My-MacBook-Pro                                Workstation          local

これらのコマンドで目的のホスト名やサービスが見つからない場合、mDNSの設定に問題がある可能性があります。


まとめと次回予告

本記事では、macOSホストとMultipass上のUbuntu VM間で、mDNSを利用したシームレスなホスト名解決を体験しました。pingやSSH接続を通じて、IPアドレスを意識することなく各環境にアクセスできる便利さを実感いただけたのではないでしょうか。

具体的には、以下の内容を解説しました。

  • macOSホストからUbuntu VMへのホスト名解決をpingやSSHで確認する方法
  • Ubuntu VMからmacOSホストへのホスト名解決をpingで確認する方法
  • macOSホストのホスト名を確認する方法
  • 双方向のホスト名解決ができない場合のトラブルシューティングのヒント(ネットワーク接続、ファイアウォール設定)
  • avahi-browse (Ubuntu) や dns-sd (macOS) コマンドを使ってmDNSサービスを確認する方法

双方向のホスト名解決が確立されたことで、あなたの開発環境はより効率的で快適なものになったはずです。もし途中で問題に直面した場合は、トラブルシューティングのヒントを参考に解決に挑戦してみてください。

次回の記事では、「もう迷わない!mDNS/Avahiホスト名解決のトラブルシューティングとデバッグ術」と題して、さらに詳細なトラブルシューティング手法とデバッグツールについて深掘りしていきます。お楽しみに!


シリーズ記事

本シリーズの他の記事もぜひご覧ください。


この記事が役に立ったら、ぜひSNSでシェアしてください!

この記事について質問や疑問があればコメントしてください。あなたの環境でのmDNS活用事例も教えてください!


免責事項

本記事の内容は、執筆時点での情報に基づいています。ソフトウェアのバージョンアップ等により、手順や設定が変更される可能性があります。本記事の内容を参考に作業を行う際は、ご自身の責任において実施してください。いかなる損害が発生した場合でも、筆者および公開元は一切の責任を負いません。

SNSでもご購読できます。

コメントを残す

*