NASなどのSMBサーバーがSMB1、SMB2、SMB3のどれに対応しているかは、nmapのスクリプト(NSE)smb-protocolsで調べられる。サーバーが古くてSMB1にしか対応していない場合、macOSからマウントできない原因の切り分けに役立つ。
$ nmap -Pn --script smb-protocols -p445 192.168.1.10
...
PORT STATE SERVICE
445/tcp open microsoft-ds
Host script results:
| smb-protocols:
| dialects:
| NT LM 0.12 (SMBv1) [dangerous, but default]
| 2.0.2
| 2.1
| 3.0
| 3.0.2
|_ 3.1.1
実行例はnmap 7.992、macOS 27.0.1のもの。接続先は192.168.1.10とする。
nmapはHomebrewでインストールする。
$ brew install nmap
参考: 【macOS】pingは通るのにSMB共有をマウントできない原因を切り分ける
オプションの意味
実行例のオプションは、3つである。
| オプション | 意味 |
|---|---|
-Pn | ホストの生存確認(ping)を省略して、ポートスキャンに進む |
--script smb-protocols | SMBのプロトコルバージョン(ダイアレクト)を調べるスクリプトを実行する |
-p445 | SMBが使う445番ポートだけを対象にする |
-p445を指定すると、スキャン対象が1ポートだけになる。短時間で終わり、サーバーへの負荷も小さい。
-Pnが必要になる場合
-Pnを付けないと、nmapはスキャンの前にホストが起動しているかを確認する。pingに応答しないホストは、起動していても停止中と判断されて、スキャンされない。
$ nmap --script smb-protocols -p445 192.168.1.10
Starting Nmap 7.992 ( https://nmap.org ) at 2026-10-30 07:36 +0900
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.03 seconds
Host seems downと表示された場合は、-Pnを付けて実行する。
出力の見方
dialectsに、サーバーが対応しているバージョンが一覧で表示される。
| 表示 | SMBのバージョン |
|---|---|
NT LM 0.12 (SMBv1) | SMB 1.0 |
2.0.2 | SMB 2.0.2 |
2.1 | SMB 2.1 |
3.0 | SMB 3.0 |
3.0.2 | SMB 3.0.2 |
3.1.1 | SMB 3.1.1 |
NT LM 0.12 (SMBv1)の行にある[dangerous, but default]は、SMB1が危険とされていることを示す注記である。SMB1に対応するサーバーでは、毎回この注記が付く。
SMB1にしか対応していないサーバー
SMB1にしか対応していないサーバーは、dialectsがNT LM 0.12 (SMBv1)の1行だけになる。
$ nmap -Pn --script smb-protocols -p445 192.168.1.10
...
Host script results:
| smb-protocols:
| dialects:
|_ NT LM 0.12 (SMBv1) [dangerous, but default]
SMB1専用のサーバーに対して、macOSのmount_smbfsはOperation not supportedで失敗した。SMB2以降に対応するよう、サーバー側の設定やファームウェアを更新する必要がある。
$ mount_smbfs -N '//GUEST:@192.168.1.10/share' ~/mnt/share
mount_smbfs: mount error: //GUEST:@192.168.1.10/share: Operation not supported
SMB1専用のサーバーでも、共有の一覧は取得できる。
参考: 【smbclient】SMBサーバーの共有一覧を確認する (-L)
結果が表示されない場合
smb-protocolsの結果(Host script results)が表示されない場合は、445番ポートに接続できていない。PORTのSTATEを確認する。
STATE | 意味 |
|---|---|
open | 接続できる。smb-protocolsの結果が表示される |
closed | ホストには到達するが、445番ポートでSMBが待ち受けていない |
filtered | ファイアウォールなどで応答が遮断されている。smb-protocolsの結果は表示されない |
応答のないIPアドレスに-Pnでスキャンすると、filteredが表示された。
$ nmap -Pn --script smb-protocols -p445 192.0.2.1
...
PORT STATE SERVICE
445/tcp filtered microsoft-ds
