Windows11 24H2 ネットワークで出るSamba共有ホルダのエラー 解決しました

前前回の投稿、「Windows10、Windows11でネットワーク共有フォルダが見えない」 で、解決せずに残っていたWindows11 24H2へのバージョンアップで起こる問題に、解決策が見つかったので報告します。

Windows11も 24H2にバージョンが上がりましたが、それによってネットワークからLinuxのSambaサーバーにアクセスするとコンピュータ名までは表示出来るのですが、それを選択すると 「0x80070035のエラー」 となってしまう問題がありました。
それについて当方環境で解決したので報告します。

先日、ネットウォッチングをしていると、SambaサーバーがいつのまにかIPv6に対応していたと言う記事を見つけて読んでいました。最初「ふーん・・・」程度ではあったのですが。
よく考えると、当方のLinux Sambaサーバーは、自宅だけのアクセスなので運用はIPv4の設定しかしていないことを思い出しました。
SambaをIPv6に対応した設定にすると、もしかして・・・ 

”ビンゴ!!” でした。
見事、ネットワークコンピュータからSambaサーバーにアクセス出来たのです。

つまり

今回のWindows11 24H2ではネットワーク参照はIPv6のみで行われている
IPv4を使うときはIPv4アドレス指定(当たり前ですが・・・)でということです。

Linux Samba IPv6設定方法

現在のIPv6をifconfigで調べます。

~$ ifconfig
enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.***  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 240d:1a:20d:****:***:****:****:****  prefixlen 64  scopeid 0x0<global>
        inet6 240d:1a:20d:****:***:****:****:****  prefixlen 64  scopeid 0x0<global>
        inet6 240d:1a:20d:****:***:****:****:****  prefixlen 64  scopeid 0x0<global>
        inet6 240d:1a:20d:****:***:****:****:****  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::****:****:****:***  prefixlen 64  scopeid 0x20<link>
        ether 00:**:**:**:**:21  txqueuelen 1000  (イーサネット)
        RX packets 3821938  bytes 2640496488 (2.6 GB)
        RX errors 0  dropped 281279  overruns 0  frame 0
        TX packets 1929309  bytes 637162845 (637.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

それを参考にSambaの環境ファイルsmb.confを書き換えます。

$ sudo nano /etc/samba/smb.conf

現在のGlobal Settingsのhosts allowに

[global]
hosts allow = 127.0.0.0/8 192.168.1.0/24

とIPv4の設定しか書いていません。先ほど調べたIPv6のそれを追記します。
それから、このSambaサーバーはどうせSMB3でしか動かさないので
server min protocol = SMB3
を追加しました。

[global]
workgroup = WORKGROUP
unix charset = UTF-8
dos charset = CP932
netbios name = ****

# 今回の追記
hosts allow = 127.0.0.0/8 192.168.1.0/24 fe80::/64 240d:1a:20d:****::/64

・・・他の設定必要に応じ いろいろ・・・
client max protocol =SMB3
client min protocol = NT1

# 今回の追記
server min protocol = SMB3

これで、リスタートをかければ無事Windows11からLinuxのSamba共有が見れます。
ただし、ユーザー認証を行わずに共有フォルダーにアクセスするゲストログオンでは、SMB署名を利用できないためWindows11では共有フォルダーは開くことができなくなっています。
それらの共有フォルダーがゲストログオンであるならローカルグループポリシーエディターを使い。
 1.Mycrosoftネットワーククライアント:常に通信にデジタル署名を行うを無効に。
 2.Lanman ワークステーションの安全でないゲスト ログオンを有効にするを有効に。
等の設定変更が必要です。

とにもかくにも見れたので、めでたし、めでたし!!

メーカー製 NASについて

IPv6の設定でWindows11が動いているということですので、古いNASはIPv4でしか動いていない可能性がありますので、それらNASはやっぱりWindowsのネットワークコンピュータに表示出来てもアクセス出来ず駄目でしょう。もちろん、IPV4アドレス指定でNASを開くことはできるのですが何かとストレスですね。新しいNASを買えということなんでしょう。
物価高なのに・・・お金がかかる時代です。

Windows10、Windows11でネットワーク共有ホルダが見えない

以前の古いOSのネットワークエクスプローラから見えていた、ネットワークストレージ(NAS)やLinuxのSamba共有がいつの間にかWindows10、11では消えてしまって困ったという話を聞きます。

原因をネット検索すると、NAS内部はLinuxのSambaサーバーが動いていることが多く、Sambaのバージョンが古いものは(バージョンが NT1(SMB 1.x)だったりする)共有が出来ませんよ!!
と書いてある。新しいWindowsでは古いものはデフォルトでは動きませんよ!という事だ。
Windows 10からはSMB 3.1.1というバージョンを実装しているので「ネットワーク」に表示されてファイル共有が出来るのは同じWindows 10以降のものかSMB 3.1.1以降のSMBを使ったNASということになる。

<Windows側の対策>

簡単な対策としては「SMB 1.0を有効にする」という事。
無論、古いバージョンということなのでそれなりに問題がある。
しかし、相手側がSMB1.0から変更出来ないなら、自分が「SMB 1.0を有効にする」にしなければ共有は出来ないのは当たり前と考える。

SMB 1.0のサポートを有効にする方法

「Windowsの機能の有効化または無効化」を操作します。
「Win」+「S」キーを押して検索ボックスに「Windowsの機能の有効化または無効化」といれてWindowsの機能の画面を出します。

一覧から「SMB 1.0/CIFSファイル共有のサポート」のチェックが外れている場合はチェックを入れて有効化する。
念のため、再起動しておきましょう。

<相手側の対策>

LinuxサーバーでのSamba共有の場合

サーバーのSambaの設定ファイルsmb.confを開いて、[global]セクションに以下を追加しておこう。

[global]
# 以下追記部分
client max protocol =SMB3
client min protocol = NT1
#

Sambaを再起動させればSMB 1.xでもアクセスできることを確認できるはずだ。

問題点

上記で「はずだ」と書いたが、うまく動作すれば確かにネットワーク共有は動くのだが
直接以下のようにアドレスでアクセスした場合のことです。
何故かWindows10以上でアドレス指定なしではSMB 1.0は「ネットワーク」には現れません

原因究明その前にWindowsのネットワークの検索方法の仕組み

Windowsにおけるネットワークの検索方法を調べてみました。
    Windows XP       → NBT(NetBIOS over TCP/IP)
    Windows Vista、7 以降 → LLTD(Link-Layer Toplogy Discovery)
ブラウジングに関してはネットワーク探索におけるプロバイダと呼ばれる
    LLTD、LLDP、WSD
それらはそれぞれ実装は異なるけれど機能としては同じようなもの

現在のWindows11,10は「ネットワークアダプタの設定画面」を調べてみると
デフォルトで
LLTD(画面上では 「Link-Layer Topology Discovery Responder」「Link-Layer Topology Discovery Mapper I/O Driver」)
がチェックがオンの状態で、機能は有効になっています。
LLDP(Link-Layer Discovery Protocol)はIEEE 802.1abで標準化されたネットワーク探索プロトコルで、主にルータやスイッチで使用されているもので、Windows 10、11でもサポートしており、ネットワークアダプタの設定画面では「Microsoft LLDP」という表示でデフォルトで有効になっています。
ただしこちらを有効にしても、LLTDの場合と同じくエクスプローラから「ネットワーク」を開いたときに、やはりネットワーク上のコンピュータとして表示されません。
現時点ではこの2つは表示にはどのように役割なのか不明です。

WSDでの検索

WSD(Web Services On Devices)はMicrosoftが開発し、Windows Vista以降に導入された新しいネットワーク探索の仕組みとあります。
スタートメニューから「Windows管理ツール」を開き、「サービス」を起動します。
Windowsキー+R で「services.msc」と入力することでも起動できます。
サービス(ローカル)一覧から、「Function Discovery Resource Publication」を探します。
ダブルクリックでプロパティを開きます。スタートアップの種類(E)を「自動(遅延開始)」にし、コンピュータを再起動します
WSDが有効になります。

有効になれば、エクスプローラから「ネットワーク」を開いたとき、自身のコンピュータと、他にあればLAN上にあるコンピュータもリストに表示されていると思います。
詳細表示で「探索方法」のカラムでWSDと表示されていれば正常です。

結論

以上の試行錯誤から、Windows 10、11などの最新のWindowsでは、ブラウジングに関してはWSD。
名前解決に関してはLLMNR(ローカルネットワークに限定してサーバを用いずに名前解決を行うもの)
を使用してネットワーク探索をすることが分かった。

やや脱線してしまったが「Windowsでネットワーク共有ホルダが見えない理由」は

NASまたはLinuxのSambaサーバーが
1. SMB3.xではない
2. WSDに対応していない
というのが原因でした。

解決方法

表示したい相手のLinuxサーバーはWSDに対応させる。つまりwsddまたはwsdd2を入れて対応する。
それの出来ない古いNASは検索で見えないだけで動いてはいるでアドレス指定で使う。
という結論です。古いNASの表示はあきらめましょう。
SMB1.xの時代はWSDではなかったので内部の書き換えが出来なければ対応できるわけがないのです。
でも「Windowsの機能の有効化または無効化」でSMB1.xを有効化すれば見えないけれど直接アドレス指定で使えるようになるので我慢しましょう。それがいやなら対応している新しいNASを買いましょう。

残る疑問点

NBTについては無効にしてしまっても構わない可能性もあるのか・・・と思うのだが・・・
再起動でFunction Discovery Resource Publicationがうまく起動できていれば「ネットワーク」にWSDとして表示されるが、その動作がうまくいっていないときがたまにあって、その時は「NetBIOS」と探索方法の欄に表示される。Function Discovery Resource Publicationを再起動すれば探索方法のカラムには「WSD」と表示され戻るので、Function Discovery Resource Publicationが未だ完全な動作をしていないのだろうと思われる。これはどういうことなのだろうか・・・

追記!!その後の問題

ついにWindows11 24H2にバージョンが上がりましたが、ここでまたもや問題が!!
wsddまたはwsdd2を入れて対応をしても、ネットワークからまたしてもLinuxのSambaサーバーが表示されなくなりました。毎回毎回面倒くさいですね。
このバージョンからデフォルトで、すべての接続で SMB 署名が必要です。
パスワード無しの「ゲスト」接続はすべてだめのようです。
これらの問題を解決する方法
としてMicrosoftコミュニティに書き込みが有るけれど、SMB 署名をサポートしていないサードパーティの NAS デバイスではボロボロですね。使えません。
Windows デバイスとデータの安全性が大幅に低下するし、ネットワークコンピュータから接続すると【アクセス出来ません】と叱られるのは同じ様です。
直接、「\\192.168.1.*」と打ってアクセスするのが今のところ一番の様です。
何故か当方ではSMB署名をするように改善したにもかかわらず、未だにWindowsから叱られます。もうWindowsの問題なのでしばらく様子見と言う所ですかね・・・

上記の問題が解決しました!! 上記の解決編へ(2024.12.06)

QRCodeMaker(QRコード作成、読取りソフト)

QRCodeMaker

QRCodeやバーコードの作成、読み取りが出来る
Windows10、11対応のフリーソフト

Windows上で、QRCodeと、その他のいくつかの種類のバーコードの作成と読取りを目的に勉強がてらC#で作成しました。
扱える種類は、QRコード(ロゴ有り、ロゴなし)、バーコードはCODE39、CODE128、JAN、ITF。
作成、読取りの両方に対応しています。
お手持ちのパソコンのWebカメラからの直接読取りはもちろん、画像ファイルからや、またブラウザ等で表示中の時など、パソコン画面に表示されている状態なら、画面のキャプチャによって読取れるようになっています。色々な条件での読取りが出来ますので非常に便利かと思っています。
また、画面キャプチャーが出来、ファイル保存機能もあるので普通にキャプチャーソフトとして使っていただくのも有りかと思います。
新機能として、最近流行しているロゴ付きのQRコード。好きなロゴを付加出来るようになりました。

ダウンロードしたファイルを解凍したら、中のQRCodeMaker.msiをダブルクリックでインストールします。初回起動はWindowsお決まりの認識されないアプリとしてエラーが出ることがありますが
「詳細情報」をクリック「実行」を押して先に進んでください。
本ソフトはフリーソフトです。ウイルス等の混入は極力無いようにチェックしておりますが、ご使用上での不具合はサポート外と致します。自己責任の上でご使用下さいますようお願い致します。

Ver.1.0.0.2 2024/02/27 リビジョンアップしました。