方法1
私は維持し、私は1つの環境での重要なWindows Serverシステム上でこの問題を扱ってきた一つの方法は、使用するバッチスクリプトとしたセットNetConnectionProfileとのnetshを、明示的にマシンの各信頼されたNIC /アダプタセットプライベートでのシステムの起動とをおよびオプションを使用した タスクスケジューラ。Run whether user is logged on or not
Run 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に接続しない場合にのみ使用してください。そうしないと、安全性の低いファイアウォールプロファイルがパブリック接続に適用されるリスクが生じます。
「ローカルセキュリティポリシー」を開きます。
左ペインの「ネットワークリストマネージャーポリシー」をクリックします。(この選択は、Windowsの古いバージョンに埋もれています。)
右ペインの「識別されていないネットワーク」をダブルクリックします。
プライベートネットワーク上にのみ存在するコンピューターの場合、「ロケーションタイプ」を「プライベート」に設定してもかまいません。
ネットワーク接続プロパティを使用する
これは、マルチホームサーバーでは適切に機能しないため、ゲートウェイIPを追加することではありません。代わりに、DNSサフィックスを追加して、NLAがその場所を「ドメインネットワーク」としてマークする方法を知っているドメインコントローラーを適切に見つけることができるようにします。
[ ネットワーク接続]に移動します(ネットワークと共有センターから、[アダプター設定の変更]をクリックします)。
「未確認」としてマークされているがプライベートLAN上にある1つのネットワーク接続のプロパティに移動します。
IPv4のプロパティに移動します。
[ 詳細 ...]ボタンをクリックします。
[ DNS ]タブを選択します。
「この接続のDNSサフィックス:」のテキストボックスにドメイン名を入力します。
接続を無効にしてから有効にして、NLAが場所を再識別できるようにします。接続を有効にすると、ステータスがドメイン名に変わり、ネットワークカテゴリが「ドメインネットワーク」に変わります。設定によっては、1つの接続を「修正」するだけで、関連するすべての接続を取得してドメインを表示できます。
プライベートからパブリックに移動
NLAが接続をパブリックとしてマークするように強制するには、2つの一般的な方法があります。1つは、ファイアウォールルールを使用してNLAをブロックし、デフォルトの場所を使用する以外に選択肢がないようにすることです。もう1つは、レジストリを使用して接続のNLAを無効にすることです。
ファイアウォールを使用する
私はこれをテストしていませんが、理論は正しいようです。
「セキュリティが強化されたWindowsファイアウォール」(つまりwf.msc
)を開きます。
アウトバウンドルールに移動します。
「新しいルール …」をクリックします。
これらの設定を使用します。
- ルールタイプ: カスタム
- プログラム: [すべてのプログラム]を選択し、[カスタマイズ...]をクリックします。[ネットワークロケーション認識]を選択します(短い名前はNlaSvcです)。
- プロトコルとポート: プロトコルタイプ=任意。
- スコープ: ローカルIP =すべてのパブリックIPを入力します。複数のIPとの接続を再確認してください。
- アクション: ブロック
- プロフィール:すべて
ルールが有効になったら、ネットワーク接続を無効にしてから有効にして、NLAが場所を再識別できるようにします。
レジストリを使用する
私はこの仕事を持っていませんでしたが、私の状況はあなたのものとは異なるかもしれません。予想よりも多くのエントリが存在するため、正しい接続番号を見つけることは少しヒットまたはミスです。
regeditを実行する
に行く HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
その下に、0000、0001、0002などのラベルが付いたいくつかのキーが表示されます。これらを調べて、NLAを無効にするアダプターを見つけます。
アダプターごとに、「* NdisDeviceType」という名前の新しいDWORD値を追加し、1に設定します(名前の先頭に*が付いていることを確認してください)。
抜本的な取得
ロケーションプロファイルはレジストリに格納されており、それらを削除してWindowsに再構築させることは無害のようです。必ず最初にレジストリをバックアップする必要があり、おそらくリモート(RDP)ではなくKVMを介してサーバーに接続する必要があります。このステップを選択した場合、私は主に参照のためにここに置くので、私は一切責任を負いません。
プロファイルの場所は次のとおりです。
HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
ソース