2015/06/13

Windows 10 and Bonjour

Windows 10 の Insider Preview といプログラムが始まっており、登録することで誰もがプレビュー版を取得できる。VMware Fusion 7 は昨年の段階で Windows 10 のプレビュー版がインストール可能となっており、フラットデザインのGUIなど新しい Windows を試すことができる。

このプレビューの目的は広くフィードバックを得ることでリリース時の製品品質を上げることにある。リリースされてからあれこれ困るぐらいなら、積極的にフィードバックを出しておいた方が世のため人のためになるだろう。なお、日本語でOKとのことだ。

さて、Windows 10 をいろいろ試しているときに面白いことに気がついた。netstat -an とうつと、5353/udp を LISTEN しているプロセスがある。

5353/udp はそう、Bonjour だ。最初LLMNR(5355/tcp)かと思ったがこちらも開いており、それとは別に 5353/udp が開いているのだ。
netstat -an の実行結果、5353 が 5355 と同じく開いているのがわかる
試した結果、少なくともこのビルド10074では Bonjour がサポートされており、<コンピュータ名>.local に対して応答している。

ただし、ファイアーウォールのポートが開いていないためそのままでは通信できない。
管理者権限を持つコマンドウィンドウを開き、以下のコマンドを実行、ファイアーウォールのポートを開く必要がある。
(なお、少なくとも私の所では、コントロールパネルのWindowsファイアーウォールの詳細設定で受信の規則を見ようとするとプロセスがクラッシュしてしまい、GUIからは設定できなかった。)
c:\> netsh advfirewall firewall add rule name="mDNS in" dir=in protocol=udp localport=5353 action=allow
Windows メニューを指二本で右クリックし、管理者権限のコマンドウィンドウを開く
なお、私はデフォルトで PowerShell に設定している
管理者権限で上記のコマンドを実行
結果、ホストの Mac から Fusion上の Windows 10 (plaster) に対する名前解決に成功、IPアドレスを拾うことができた。(ICMPを Windowsファイアーウォールがふさいでいるため、PINGそのものは失敗している)
PINGは失敗しているが、IPアドレスが表示されている、名前解決に成功していることに注目


なお、これは WindowsServer 2016 Tech Preview 2 でも、その中の NanoServer でも同じだ。ファイアーウォールさえ開けておけば、Bonjour で、あるいは LLMNR で名前解決が可能となっている。(そう、何故かLLMNRもポートが閉じている、同じように 5355/udp を開くことでLLMNRによる名前解決も可能になる。)

こちらの NanoServer のスタートアップ記事などでは、「なんとかIPアドレスを調べて」となっているが、Windows10 でも NanoServer でも Bonjour/LLMNR を有効にしておけばこの部分がだいぶ楽になる。(NanoServer の場合、SetupComplete.cmd  に上記のファイアーウォールルールの設定を書いておけばいいだろう。)

正式リリース版でどうなるかはわからないが、しかし、プレビューの間だけであっても、Windows 自身で Bonjour サポートがなされるとはなかなか感慨深いものがある。