Azure File ストレージ は SMB を使用したファイル共有サービスです。みんな大好き共有フォルダをクラウドに作成できます。ワイが欲しかったのは Dropbox でも OneDrive でもなくこれだったんや!と思ったんですが、結論から言うと Windows では問題無いのに Mac からはうまくいきませんでした。ちなみに Linux からは使えます。理由は後述します。

以下は使えない原因を調査した記録ですので、あまり役には立たないです。Wiresharkはあまり使ったこと無かったのですが、共有フォルダに繋がらない場合などのトラブルシューティングに役立ちそうな感じはしました。


EXTENDED BODY:

使ってみようとおもった動機

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