Raspberry Pi への ssh アクセス時などに動かないと結構困る mDNS。デフォルトの状態では Ubuntu 24.04 on WSL では動かないようです。
動くようにするには Ubuntu 上の以下のファイル (Windows 上の %userprofile%/.wslconfig)
# vi /mnt/c/Users/userName/.wslconfig
に以下の設定を追加し Ubuntu を再起動すればよいようです。
[wsl2]
dnsTunneling=false
Ubuntu という名前のディストリビューションの再起動は以下の
C:\Users\userName > wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
C:\Users\userName >wsl -d ubuntu --shutdown
C:\Users\userName >wsl
再起動後 Ubuntu 上から以下のような感じでホスト名が解決できるか調べる。この場合 c4lab.local というホスト名の IP アドレスが 10.107.100.234 であることがわかる
$ ping -c 1 c4lab.local
PING c4lab.local (10.107.100.234) 56(84) bytes of data.
64 bytes from c4lab.local (10.107.100.234): icmp_seq=1 ttl=63 time=5.12 ms
Ubuntu 上で PowerShell を使って力業で解決するという方法もあるらしい。
Ubuntu $ powershell.exe "Resolve-DnsName c4lab.local | ConvertTo-Json" | jq -r .[-1].IP4Address
10.107.100.234
ちなみにここのページをもとに Ubuntu 上で以下のように libnss-mdns (や avahi-daemon) をインストールすると mDNS での名前解決はできなくなり謎は深まる。
# sudo apt-get install libnss-mdns
少なくとも私の環境で試す限り以下の設定を行い Ubuntu を再起動すれば動くらしい。
~$ cat /mnt/c/Users/userName/.wslconfig
[wsl2]
dnsTunneling=false
参考文献:
mDNS stopped working in WSL2 after Windows 11 Pro update