Windows NLAがローカルネットワークを新しい未識別ネットワークとして繰り返し検出するのを停止します


14

私は、多数のWindows 10および7台のPCで小規模ビジネスネットワークを管理しています。断続的ではありますが、非常に頻繁に、他の同僚と共有フォルダーにアクセスできないという苦情が寄せられます。クイックトラブルシューティングにより、問題は悪名高い「識別されていないネットワークが検出された」が原因であると判断されます。私の検索から、これは多くのユーザーに共通の問題です。動作する提案されたソリューションは見当たりません。

環境:

  • すべてのWindows PCは、有線イーサネット経由で接続されます(ただし、Wifi NICが搭載されている場合があります)
  • それらはすべて同じ10.10.10.xサブネット上の48ポートAvaya L2管理対象スイッチに接続されています
  • スイッチはAsus RTN-66Uホームルーターに接続されています
  • Asusルーターはケーブルモデムに接続します
  • AsusルーターはWindowsマシンにDHCPを提供します
  • 各Windows PCに対してルーターをDHCP予約で構成しました。つまり、PCは起動時に常に同じIPアドレスを取得します
  • ドメインコントローラーなし

問題:

すべてのWindowsマシンをアクティブネットワークプロファイル=プライベートに構成しましたが、頻繁に(数週間ごとに)パブリックに戻り、ファイル共有などができなくなります。

試みられた修正:

各Windows PCで、ローカルグループポリシーを変更しましたComputer Configuration->Security Settings->Network List Manager Policies

  • 未確認のネットワーク=プライベート
  • 識別ネットワーク=プライベート

観察:

問題は、Windows Network Location Awareness(NLA)サービスが新しいネットワークを検出し、新しいネットワークプロファイルが作成され、デフォルトでパブリックになっていることです(上記ではローカルグループポリシーをプライベートに設定していますが) 。多くのコンピューターは、Windowsが新しい未識別ネットワークを何度も検出したことを示しています。つまり、「ネットワーク14」、つまり14の異なるネットワークプロファイルがあります。レジストリのプロファイルを確認すると、これらの複数のプロファイルが表示されます HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles

14個のプロファイルはすべて、コンピューターが上記の同じネットワークに実際に接続されたときのものです。

NLAがネットワークの一意の識別子を生成する方法と、新しいネットワークを検出したことをNLAが検出する理由を正確に説明するリソースを見つけることができませんでした。

質問:

Windowsがローカルネットワークを誤って新しいネットワークとして識別しないようにするにはどうすればよいですか?おそらく、ネットワークの一意の識別子を生成するためにNLAが従うステップを知っていれば役立つでしょうか?


1
あなたの質問を少し編集して、実際の問題の解決について質問することに集中できるようにしました。XY問題を参照してください。
私は、モニカを復活させる

NLAは、そのネットワークアダプタに指定されたデフォルトゲートウェイのMACアドレスに基づいてネットワークを識別します。これらのコンピューターからルーターにアクセスできなくなった可能性はありますか?問題は短時間のうちに複数のコンピューターに影響するように見えますか、それとも1人のユーザーだけが1日、その後別のユーザーがまったく異なる時間に影響するように見えますか?
私は言うモニカの復活

おそらく、コンピュータ\ HKEY_LOCAL_MACHINE \ SOFTWARE \マイクロソフトレジストリ内の\ WindowsのNT \ CurrentVersionの\ NetworkList \署名\管理されていないか、少なくともその場所の周りを見て-とDefaultGatewayMACとDNSSuffixは、あなたが期待するものと一致した場合に見る
ロス・

PaulH-少し待ってから答えを確認してください。これは、方法1セクションで説明したように、実稼働環境でかなり堅実な成功を収めたものですが、答えの方法2セクションでも詳細を提供しました。これらのソリューションのいずれかが、この問題に対して私と同じように役立つことを願っています。
ピンプジュースIT

回答:


5

方法1

私は維持し、私は1つの環境での重要なWindows Serverシステム上でこの問題を扱ってきた一つの方法は、使用するバッチスクリプトとしたセットNetConnectionProfileのnetshを、明示的にマシンの各信頼されたNIC /アダプタセットプライベートでのシステムの起動とをおよびオプションを使用した タスクスケジューラRun whether user is logged on or notRun with highest privileges

ここに画像の説明を入力してください ここに画像の説明を入力してください

注:バウンティノートには、「ソリューションは実装するネットワーク接続の損失を引き起こしてはいけません」と記載されていますが、この同じスクリプトを実行するだけで問題が迅速に解決され、OSマシンのネットワークアクセスが正常に機能し、予想される順序に戻るため、再起動しません。

さらに、Get-NetConnectionProfileを使用してNICエイリアス名とインデックス番号を取得し、ニーズやシステムに合わせて以下のバッチスクリプトの例に含めることができます。

バッチスクリプト

@ECHO ON

::: The below PowerShell will set all the nework adapters to private rather than public and unknown as happens.
:DynamicPSScriptBuild
SET PSScript=%temp%\%~n0.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO Set-NetConnectionProfile -InterfaceIndex 12 -NetworkCategory Private>>"%PSScript%" 
ECHO Set-NetConnectionProfile -InterfaceIndex 20 -NetworkCategory Private>>"%PSScript%" 
ECHO Set-NetConnectionProfile -InterfaceIndex 22 -NetworkCategory Private>>"%PSScript%" 
ECHO Set-NetConnectionProfile -InterfaceIndex 24 -NetworkCategory Private>>"%PSScript%"

:PowerShell
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"

:: The below will disable and then re-enable each NIC one-by-one so the unidentfied goes away after set to "private" above
:ResetNICs
SET Array="Ethernet", "Ethernet 2", "Ethernet 3", "Ethernet 4"
FOR %%A IN (%Array%) DO (
    netsh int set int "%%~A" admin=disable
    netsh int set int "%%~A" admin=enable
)
EXIT

他にもいくつかの方法がありますが、多くの方法のうちの1つはあなたが試したものですが、助けになる場合に備えて、この投稿に出くわした他の人のために残しましたが、これらはおそらくこれを完全に防ぐためのいくつかの方法ですが、常にあなたが使用することを選択した方法の長所と短所になるので、毒を選んでそれに応じてテストしてください。

方法2(複数の方法)

未確認のネットワーク-パブリックからプライベートまたはドメインに移動

NLAが接続場所を特定できない場合、NLAに「不明」という名前を付け、その場所をパブリックとしてマークします。Publicを選択します。これは、最も安全であり、接続がDMZ上にある場合、それ以下のものを望んでいないためです。

これを修正する簡単な方法が2つあります。1つは、ローカルセキュリティポリシーを使用して、識別されていないネットワークのデフォルトの場所を変更します。2番目の方法では、ネットワーク接続プロパティの変更を使用して、場所を適切に配置するために必要な情報をNLAに提供します。

ローカルセキュリティポリシーの使用

注意: これは、コンピューターがパブリックLANに接続しない場合にのみ使用してください。そうしないと、安全性の低いファイアウォールプロファイルがパブリック接続に適用されるリスクが生じます。

  1. ローカルセキュリティポリシー」を開きます。

  2. 左ペインの「ネットワークリストマネージャーポリシー」をクリックします。(この選択は、Windowsの古いバージョンに埋もれています。)

  3. 右ペインの「識別されていないネットワーク」をダブルクリックします。

  4. プライベートネットワーク上にのみ存在するコンピューターの場合、「ロケーションタイプ」を「プライベート」に設定してもかまいません。

    ここに画像の説明を入力してください

ネットワーク接続プロパティを使用する

これは、マルチホームサーバーでは適切に機能しないため、ゲートウェイIPを追加することではありません。代わりに、DNSサフィックスを追加して、NLAがその場所を「ドメインネットワーク」としてマークする方法を知っているドメインコントローラーを適切に見つけることができるようにします。

  1. [ ネットワーク接続]に移動します(ネットワークと共有センターから、[アダプター設定の変更]をクリックします)。

  2. 未確認」としてマークされているがプライベートLAN上にある1つのネットワーク接続のプロパティに移動します

  3. IPv4プロパティに移動します

  4. [ 詳細 ...]ボタンをクリックします。

  5. [ DNS ]タブを選択します。

  6. この接続のDNSサフィックス:」のテキストボックスにドメイン名を入力します。

接続を無効にしてから有効にして、NLAが場所を再識別できるようにします。接続を有効にすると、ステータスがドメイン名に変わり、ネットワークカテゴリが「ドメインネットワーク」に変わります。設定によっては、1つの接続を「修正」するだけで、関連するすべての接続を取得してドメインを表示できます。

プライベートからパブリックに移動

NLAが接続をパブリックとしてマークするように強制するには、2つの一般的な方法があります。1つは、ファイアウォールルールを使用してNLAをブロックし、デフォルトの場所を使用する以外に選択肢がないようにすることです。もう1つは、レジストリを使用して接続のNLAを無効にすることです。

ファイアウォールを使用する

私はこれをテストしていませんが、理論は正しいようです。

  1. セキュリティが強化されたWindowsファイアウォール」(つまりwf.msc開きます

  2. アウトバウンドルールに移動します

  3. 新しいルール …」をクリックします。

  4. これらの設定を使用します。

    • ルールタイプ: カスタム
    • プログラム: [すべてのプログラム]を選択し、[カスタマイズ...]をクリックします。[ネットワークロケーション認識]を選択します(短い名前はNlaSvcです)。
    • プロトコルとポート: プロトコルタイプ=任意。
    • スコープ: ローカルIP =すべてのパブリックIPを入力します。複数のIPとの接続を再確認してください。
    • アクション: ブロック
    • プロフィール:すべて
  5. ルールが有効になったら、ネットワーク接続を無効にしてから有効にして、NLAが場所を再識別できるようにします。

レジストリを使用する

私はこの仕事を持っていませんでしたが、私の状況はあなたのものとは異なるかもしれません。予想よりも多くのエントリが存在するため、正しい接続番号を見つけることは少しヒットまたはミスです。

  1. regeditを実行する

  2. に行く HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

  3. その下に、0000、0001、0002などのラベルが付いたいくつかのキーが表示されます。これらを調べて、NLAを無効にするアダプターを見つけます。

  4. アダプターごとに、「* NdisDeviceType」という名前の新しいDWORD値を追加し、1に設定します(名前の先頭に*が付いていることを確認してください)。

抜本的な取得

ロケーションプロファイルはレジストリに格納されており、それらを削除してWindowsに再構築させることは無害のようです。必ず最初にレジストリをバックアップする必要があり、おそらくリモート(RDP)ではなくKVMを介してサーバーに接続する必要があります。このステップを選択した場合、私は主に参照のためにここに置くので、私は一切責任を負いません。

プロファイルの場所は次のとおりです。

HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles

ソース


最初の方法は有望に見えます。NLAサービスの再起動を伴う他の方法については確信がありません。それは、とにかく問題を常に修正し、サービスの再起動が解決策であるか、他のアクションであるかを知るのが難しくなるからです。今、私はちょうど....にテストするには、この間違ったをやっているマシンが必要
私は復活モニカ言う

@TwistyImpersonatorはい、方法1は私が使用した方法で、起動時に実行するだけです。この場合、それは4つのNICを備えたHyper-V仮想ホストサーバーであり、起動時に確実に実行されるようにすることで、特定のシステムに関する問題がこれまでに解決されました。ネットワークスイッチまたはルーターの再起動が原因でもう一度発生したと思います。仮想ホストサーバーを再起動するのではなく、スクリプトを手動で実行するだけで問題が解決しました。私は質問に気づき、私が使用したソリューションと、関連性があり潜在的に役立つと思われる他の引用リソースを投稿しました。
ピンプジュースIT

あなたが賞金を払ったことに気づきましたが、OPに答えを出そうとするだけでなく、それがあなたのニーズのためだとは気づかなかったと思います。それも知っておくと良いことです。
ピンプジュースIT

0

特定のシステムでこの問題が際限なくありました。再起動するたびにすべてが壊れます。あなたが言及したすべてのソリューションを試しました。他のすべてを使い果たした後、「ネットワークロケーション認識」サービスを無効にすることにしました。私が言うことができるから、それは必要ではありません。これで私の問題は完全に解決しました。私が気づいた唯一の副作用は、「ネットワークと共有センター」ウィンドウがおかしく見えることです。このサービスはWindows 7以前には存在しなかったため、私にとってはまったく役に立ちません。

Services.msc

「ネットワークロケーション認識」、スタートアップの種類=「無効」


うーん、ドメイン環境でこれが良いアイデアかどうか、または信頼できるネットワークと信頼できないネットワークの間でラップトップを使用するときはわかりません。これらのシナリオのいずれかに関するフィードバックはありますか?
私は、モニカを

ドメイン環境でこれを行っています。よく働く。信頼できない環境でラップトップを使用している場合、他の保護を設置する必要があります。NLAはあなたを救いません。共有を自動的に無効にするだけです。ラップトップで共有を許可しないことをお勧めします。
HackSlash

NLAがなければ、従業員がラップトップを家に持ち帰るときなど、システムはドメインプロファイルとプライベートプロファイルをどのように切り替えますか?
私は、モニカを復活させる

NLAがなければ、プロファイルはまったくありません。これらのプロファイルを何に使用していますか?
HackSlash

私が管理するシステムの多くは、ドメインネットワークに接続されている場合、インバウンドトラフィックを許可していますが、そのようなトラフィックは、システムがドメインを離れるときにブロックされます。多層防御を実装する方法です...ポートは必要な場所でのみ開かれ、他の場所では閉じられます。
私はモニカを
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.