はじめに
macOSを27.0へアップデートしたところ、それまでファイルサーバーとして利用していた AirMac Time Capsule にFinderから接続できなくなりました。
今回困ったのはTime Machineのバックアップではなく、Time Capsuleの内蔵ディスクに通常のファイルとして保存していたデータへアクセスできなくなったことです。
Finderから接続しようとすると、以下のエラーが表示されました。
接続しようとしているサーバのバージョンはサポートされていません。
システム管理者に問い合わせて、この問題の解決を依頼してください。
調査したところ、Time Capsule自体はネットワーク上で正常に動作しており、SMBサービスも公開されていました。
最終的にmacOS側のSMBクライアント設定で、
[default]
protocol_vers_map=7
を明示することで、再びTime Capsule内のファイルへアクセスできるようになりました。
この記事では、実際に確認した内容と復旧までの手順をまとめます。
WARNING
今回の設定ではSMB1も利用可能な状態になります。
SMB1は古いプロトコルであるため、セキュリティ上の観点から恒久的な利用は推奨しません。
信頼できるローカルネットワーク内での利用や、Time Capsuleから新しいNASなどへデータを移行するための暫定対応として考えるのがよいと思います。
環境
今回確認した環境です。
$ sw_vers
ProductName: macOS
ProductVersion: 27.0
BuildVersion: 26A428
接続先はAirMac Time Capsuleです。
Time Machineではなく、共有ディスクを通常のファイルサーバーとして利用していました。
macOS 27とTime Capsule
Appleの案内では、macOS 27以降でAFP(Apple Filing Protocol)がサポートされなくなっています。
AirMac Time Capsuleについても、Time Machineバックアップだけでなく、その他のデータ転送についてAFPを使用するため、macOS 27以降では推奨されない構成となっています。
そのため、macOS 27へのアップデートを境にTime Capsuleへアクセスできなくなった場合、まずAFP廃止の影響を疑うことになります。
ただし、今回のTime Capsuleを調べてみると、AFPだけではなくSMBサービスも公開されていました。
そこで、SMB経由で接続できないか調査しました。
Time CapsuleがSMBを公開しているか確認する
BonjourでSMBサービスを検索します。
dns-sd -B _smb._tcp local
今回の環境では以下のようにTime Capsuleが検出されました。
Browsing for _smb._tcp.local
Timestamp A/R Flags if Domain Service Type Instance Name
9:10:19.021 Add 2 11 local. _smb._tcp. My AirMac Time Capsule
SMBサービス自体は公開されていることが分かります。
続いて接続先を確認します。
dns-sd -L "My AirMac Time Capsule" _smb._tcp local
結果は以下のようになりました。
My AirMac Time Capsule._smb._tcp.local.
can be reached at My-AirMac-Time-Capsule.local.:445
つまり、
ホスト名: My-AirMac-Time-Capsule.local
ポート: TCP/445
でSMBサービスが動作しています。
Time Capsuleそのものが停止しているわけではなさそうです。
FinderからSMB接続してみる
Finderで ⌘ + K を押して「サーバへ接続」を開きます。
以下を入力しました。
smb://My-AirMac-Time-Capsule.local
しかし、冒頭のエラーが表示されます。
接続しようとしているサーバのバージョンはサポートされていません。
SMBサービスは見えているものの、接続を確立できません。
smbutilで確認する
Finderだけの問題なのか確認するため、macOS標準のsmbutilから接続してみます。
smbutil view //username@My-AirMac-Time-Capsule.local
Time Capsuleで使用しているパスワードを入力すると、以下のエラーになりました。
smbutil: server connection failed: Operation not supported
ここまでの結果から、
- Time Capsuleはネットワーク上で検出できる
- SMBサービスも公開されている
- TCP/445で待ち受けている
- Finderだけでなく
smbutilでも接続できない
という状態であることが分かりました。
単純なネットワーク障害ではなく、macOSとTime Capsule間のSMB接続に互換性の問題がありそうです。
macOSのSMBクライアント設定を確認する
macOSでは/etc/nsmb.confでSMBクライアントの動作を設定できます。
まず既存の設定があるか確認しました。
cat /etc/nsmb.conf
今回の環境では、
cat: /etc/nsmb.conf: No such file or directory
となりました。
/etc/nsmb.confはデフォルトでは存在しないため、独自のSMB設定は入っていない状態です。
protocol_vers_mapを設定する
/etc/nsmb.confを作成します。
今回はvimを使用しました。
sudo vim /etc/nsmb.conf
以下を設定します。
[default]
protocol_vers_map=7
保存後、設定を確認します。
cat /etc/nsmb.conf
[default]
protocol_vers_map=7
protocol_vers_map=7について
protocol_vers_mapは、SMBで利用するプロトコルバージョンを指定するための設定です。
値はビットマスクとして扱われ、
SMB1 = 1
SMB2 = 2
SMB3 = 4
となるため、
1 + 2 + 4 = 7
つまり、
protocol_vers_map=7
とすることで、SMB1・SMB2・SMB3を利用可能な設定にします。
Appleのドキュメントでは、macOSは他社製品との互換性のためSMB1へのフォールバックをデフォルトで利用可能としています。
そのため、「macOS 27ではSMB1がデフォルトで無効になったので7に変更する」という意味ではありません。
今回の環境では、利用可能なSMBバージョンをprotocol_vers_map=7として明示的に指定したところ、Time Capsuleとの接続が成立するようになったという結果になります。
Macを再起動する
設定後、Macを再起動しました。
再起動後に、再度smbutilを実行します。
smbutil view //username@My-AirMac-Time-Capsule.local
今度は正常に共有一覧を取得できました。
Share Type Comments
-------------------------------
IPC$ Pipe
Data Disk
2 shares listed
DataがTime Capsuleの共有ディスクです。
設定前は、
Operation not supported
だったものが、protocol_vers_map=7設定後には共有ディスクを正常に取得できるようになりました。
Finderから接続する
smbutilで接続できることを確認したため、Finderからもう一度接続します。
⌘ + Kで「サーバへ接続」を開き、
smb://My-AirMac-Time-Capsule.local/Data
を指定します。
Time Capsuleの認証情報を入力すると、今度は正常に接続できました。
Time Capsule内に保存していたファイルについても、Finderから問題なく参照できることを確認しました。
設定を元に戻す場合
今回のように/etc/nsmb.confを新規作成した場合は、ファイルを削除することで元の状態に戻せます。
sudo rm /etc/nsmb.conf
その後、Macを再起動します。
既存の/etc/nsmb.confが存在していた環境では、ファイルそのものを削除するのではなく、変更した設定だけを元に戻してください。
セキュリティ上の注意
今回設定した、
protocol_vers_map=7
では、SMB1も利用可能になります。
SMB1は古いプロトコルであり、現在のファイル共有ではSMB2/SMB3を使用するのが基本です。
今回の方法でTime Capsuleへ再びアクセスできましたが、これを理由にTime Capsuleを今後も長期間ファイルサーバーとして使い続けるのは避けた方がよいと思います。
特に、SMBをインターネットから直接アクセス可能な状態にするのは避けるべきです。
既存データへアクセスできる状態を確保したうえで、SMB2/SMB3に対応したNASなどへの移行を検討するのが安全です。
まとめ
今回の事象は、macOS 27へのアップデートによって、AirMac Time Capsuleが利用している古いファイル共有プロトコルとの互換性に問題が出たことが原因でした。
また、Time Capsule自体や保存データに問題はなかったため、macOS側でprotocol_vers_map=7を設定し、古いSMBプロトコルも利用できるようにすることで、SMB経由でファイルへ再びアクセスできるようになりました。
ただし、この対応ではSMB1も利用可能になるため、セキュリティ面では望ましい状態とはいえません。
今回は既存ファイルへのアクセスを復旧するための暫定対応とし、今後はSMB2/SMB3に対応したNASなど、現在の環境に適したファイルサーバーへ移行するのがよいです。
おわりに
あくまで既存のTime CapsuleとmacOS 27の間で接続できた回避策の一つです。
長年ファイルサーバーとして問題なく使えていたTime Capsuleですが、今回のようにOS側のプロトコルサポート変更によって突然アクセスできなくなることもあります。
今回は無事に既存ファイルへアクセスできる状態まで復旧できましたが、これを機にSMB2/SMB3へ正式対応したNASなどへの移行も検討したいと思います。
参考