Azure File ストレージ は SMB を使用したファイル共有サービスです。みんな大好き共有フォルダをクラウドに作成できます。ワイが欲しかったのは Dropbox でも OneDrive でもなくこれだったんや!と思ったんですが、結論から言うと Windows では問題無いのに Mac からはうまくいきませんでした。ちなみに Linux からは使えます。理由は後述します。
以下は使えない原因を調査した記録ですので、あまり役には立たないです。Wiresharkはあまり使ったこと無かったのですが、共有フォルダに繋がらない場合などのトラブルシューティングに役立ちそうな感じはしました。
使ってみようとおもった動機
Azure File ストレージ は今までプレビューで、オンプレミスからは使えませんでした。ですが、今回 AzureCon で GA アナウンスとオンプレミスからの接続がサポートされました。ただし、条件が厳しくてSMB3.0以上とport445が空いていることです。
Mac で使えそうな感じがした
Mac ってそもそも SMB3.0 に対応しているんだっけ?と調べていたら、対応しているようでした。Samba 実装ではなく、Apple が独自に実装しているようでした。
YosemiteのSMBクライアントはTCPポート139と445に対応、445を優先でSMB3.02に対応してるっぽいな。Sambaじゃなくて、Apple独自実装になってたのか。
http://t.co/9INow9YZZY
— YAMAMOTO Masaki (@nnasaki) 2015, 9月 30
Linux は Samba 実装なので使える。Mac は Apple 実装なので使えない。というのが、 Linux で使えるのに Mac では使えないことの原因かなと思ってます。
Windows では普通に使えた
Azure File Storage Windows 10なら普通に問題なくマウントできた pic.twitter.com/ffsnult7JF
— YAMAMOTO Masaki (@nnasaki) October 1, 2015
Azure File Storage ファイルのアップロード早い。ちょっと遅い回線使ってるからこんなもんだけど、帯域使い切ってる。 pic.twitter.com/F0oJy2BiOv
— YAMAMOTO Masaki (@nnasaki) October 1, 2015
ダウンロードはこのぐらい。 pic.twitter.com/GQMr9CbrYs
— YAMAMOTO Masaki (@nnasaki) October 1, 2015
しばやん先生からIOPSを知りたいと言われたので、CrystaDiskMarkを動かしてみた。まぁ、インターネットの回線に左右されるので参考程度に。
@shibayan こんな感じですね。 pic.twitter.com/jkke3N0aXi
— YAMAMOTO Masaki (@nnasaki) October 1, 2015
@gogotea3 からPowerShellのコマンドを実行して欲しいと言われたのでその結果。SMBのバージョンや設定だそうな。
@gogotea3 こんな結果がでました。何の意味があるか僕にはさっぱりです。 pic.twitter.com/VvSfTcBf4P
— YAMAMOTO Masaki (@nnasaki) 2015, 10月 1
Mac ではマウント時にエラーが出た
Mac の Finder から同様にマウント使用とするとエラーが出た。ユーザー認証まで出来ているので、ポートが塞がっているとかそういうことでは無さそう。
Mac OSX Yosemite (10.10.5) だとユーザー認証画面までは出るけどこのエラー画面 pic.twitter.com/i4JH9gs4Mp
— YAMAMOTO Masaki (@nnasaki) 2015, 10月 1
Wireshark でパケットを確認してみた
Wireshark である程度確認出来そうだったので見てみました。まずはMac
Mac は Wireshark で見てみたけど、SMB3 で会話は出来ているみたいだけど、NTLMSSP_NEGOTIATE がうまくいってないっぽい? Windows のほうも見てみればわかるかなぁ。 pic.twitter.com/3rc8yGDjw3
— YAMAMOTO Masaki (@nnasaki) 2015, 10月 1
次に Windows
Windows だと先のエラーの後に NTLMSSP_AUTH をリクエストしている。これが Mac OS には無い。Apple が SMB3 で何か実装忘れているのかなぁ? pic.twitter.com/jgWokoPRMP
— YAMAMOTO Masaki (@nnasaki) October 1, 2015
Windows 10 の共有フォルダを Mac からマウントしたら成功した。
Appleのせいかと思ったら、ローカルLANのWindows10で共有したフォルダは Mac OS X からみれた。なんだろう。 pic.twitter.com/xOvxQQGH7f
— YAMAMOTO Masaki (@nnasaki) October 1, 2015
両者の違いをみると成功する Windows 10 の共有フォルダは GSS-API が有効だったのと、Negotiate Flags の Negotiate NTLM keyが有効という違いがあった。
Windows 10 は GSS-API が有効だったのと、Negotiate Flags の Negotiate NTLM key が有効になっていた。Azureでは無効。これはポリシーかなにかの設定だったかな。。。 pic.twitter.com/QChsQ9BBcR
— YAMAMOTO Masaki (@nnasaki) October 1, 2015
Negotiate Flags について調べると MSDN の [MS-NLMP]: NEGOTIATE がそれっぽい感じでした。22ビット目の H (1 bit): If set, requests usage of the NTLM v1 session security protocol
を 0 にすれば Azure File ストレージと同等になりそう。
Windows 10 で LAN Manager 認証レベルを NTLMv2 応答のみにした。 pic.twitter.com/NBJvdlLmgA
— YAMAMOTO Masaki (@nnasaki) 2015, 10月 1
けれども、期待通りにはならず、フラグはONのままでした。このほかグループポリシーをいろいろいじってみましたが、どうしてもフラグが落ちず断念しました。
ここまでが調べた内容です。SMB はだいぶプロトコルがオープンになりましたが、まだまだ鬼門だなぁという感想。NFS もあればなぁと思いますが、最近 Linux Love な Microsoft さんに期待したいところです。
参考ページ
GAしたAzure File Storageを早速使ってみる | ktkr雑記(仮称) その知識、ホントに正しい? Windowsにまつわる都市伝説(26):SMBに乗り換えたMac――WindowsとMacのファイル共有のいま(前編) (2/3) - @IT