
はじめに
ソフトウェアエンジニアやシステム管理者であるあなたは、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 Host が
ubuntu-vm.local
というホスト名でSSH接続を試みます。 - macOS Host はローカルネットワークに mDNSクエリ を送信し、
ubuntu-vm.local
のIPアドレスを問い合わせます。 - Multipass VM (Ubuntu) 内で動作している Avahi Daemon がこのクエリに応答し、自身のIPアドレスを mDNSレスポンス としてローカルネットワークに返します。
- macOS Host はAvahi Daemonから受け取った IPアドレス を取得します。
- 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 が
My-MacBook-Pro.local
というホスト名でpingを試みます。 - Ubuntu VM はローカルネットワークに mDNSクエリ を送信し、
My-MacBook-Pro.local
のIPアドレスを問い合わせます。 - macOS Host 内で動作している Bonjour がこのクエリに応答し、自身のIPアドレスを mDNSレスポンス としてローカルネットワークに返します。
- Ubuntu VM はBonjourから受け取った IPアドレス を取得します。
- 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間の双方向のホスト名解決が確立されました。
相互接続の確認とトラブルシューティングのヒント
もし上記の手順でホスト名解決がうまくいかない場合、いくつかの原因が考えられます。ここでは、相互接続の確認と簡単なトラブルシューティングのヒントを提供します。
接続できない場合のチェックポイント(ネットワーク、ファイアウォール)
- ネットワーク接続の確認:
- macOSホストとUbuntu VMが同じネットワークセグメントにいるか確認してください。Multipassのデフォルト設定では、VMはホストのネットワークインターフェースを介して通信します。
multipass list
コマンドでVMのIPアドレスを確認し、macOSからそのIPアドレスに直接ping
できるか試してください。- Ubuntu VM内から、
ip a
コマンドでIPアドレスを確認し、macOSホストのIPアドレスに直接ping
できるか試してください。
- ファイアウォールの設定:
- macOSのファイアウォールがmDNS (UDPポート5353) の通信をブロックしていないか確認してください。「システム設定」>「ネットワーク」>「ファイアウォール」で設定を確認できます。
- Ubuntu VMのファイアウォール (
ufw
) がmDNSの通信をブロックしていないか確認してください。必要であれば、UDPポート5353を許可するルールを追加します。
sudo ufw allow 5353/udp
sudo ufw enable
avahi-browse
や dns-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ホスト名解決のトラブルシューティングとデバッグ術」と題して、さらに詳細なトラブルシューティング手法とデバッグツールについて深掘りしていきます。お楽しみに!
シリーズ記事
本シリーズの他の記事もぜひご覧ください。
- 【mDNS完全攻略】第1回:ローカルネットワークの賢い名札「mDNS/Avahi」の基本とmacOSでの活用術
- 【mDNS完全攻略】第2回:Ubuntu (Multipass) にAvahiを導入し、ホスト名解決の基盤を築く
- 【mDNS完全攻略】第3回:macOSとUbuntu (Multipass) を繋ぐ!シームレスなホスト名解決を体験
- 【mDNS完全攻略】第4回:もう迷わない!mDNS/Avahiホスト名解決のトラブルシューティングとデバッグ術
- 【mDNS完全攻略】第5回:Multipassの真価を引き出す!ネットワークモードとmDNSの高度な連携術
- 【mDNS完全攻略】最終回:mDNS/Avahiで開発ワークフローを加速!自動化とサービスディスカバリの応用
この記事が役に立ったら、ぜひSNSでシェアしてください!
この記事について質問や疑問があればコメントしてください。あなたの環境でのmDNS活用事例も教えてください!
免責事項
本記事の内容は、執筆時点での情報に基づいています。ソフトウェアのバージョンアップ等により、手順や設定が変更される可能性があります。本記事の内容を参考に作業を行う際は、ご自身の責任において実施してください。いかなる損害が発生した場合でも、筆者および公開元は一切の責任を負いません。