今後のネットワーク接続をデフォルトのパブリックではなくプライベートの場所に設定する

今後のネットワーク接続をデフォルトのパブリックではなくプライベートの場所に設定する

Windows Server 2012 および 2012R2 では、将来のネットワーク接続で、デフォルトでパブリック ファイアウォール プロファイルを使用する代わりに、プライベート ファイアウォール プロファイルを使用するように設定することは可能ですか?

「セキュリティ設定」>「ネットワーク リスト マネージャー ポリシー」ですべてのネットワーク項目をプライベートに設定しようとしましたsecpol.mscが、新しいネットワークに接続するたびに、常にデフォルトでパブリックに設定されてしまいます。

あるいは、Windows の非サーバー バージョンで表示される「ネットワークの場所の設定」ダイアログを再度有効にする方法はありますか。これにより、少なくとも問題を軽減できます。

答え1

このセキュリティ「機能」は設計によるものです。「新しい」または「認識されていない」ネットワーク上のサーバーは、デフォルトでパブリック プロファイルに設定されます。ドメイン プロファイル上になく、DC でもなく、DNS ルックアップ (ネットワークを識別するため) が失敗しているため、現在使用しているネットワークは「不明」ネットワークとして定義され、デフォルトで「パブリック」プロファイルに設定されます。

この問題を回避するには、サーバーをドメインに参加させ、ネットワークの場所を「ドメイン ネットワーク」に設定します。ただし、この解決策は、常に「新しい」ネットワークに接続する場合、理想的ではないか、不可能である可能性があります。

信頼できるネットワーク上にいてこの問題が発生する場合、またはこのサーバーが DC である場合は、「ネットワーク ロケーション認識」サービスを遅延開始に設定すると、この問題が解決されます。

サーバーが別のネットワークに「移動」している場合やDCが存在しない場合は、次のPowerShellスクリプトを実行できます(Windows PowerShell チーム ブログ) を使用して、すべてのネットワーク プロファイルを「プライベート」に設定します。

# Skip network location setting for pre-Vista operating systems
if([environment]::OSVersion.version.Major -lt 6) { return }

# Skip network location setting if local machine is joined to a domain.
if(1,3,4,5 -contains (Get-WmiObject win32_computersystem).DomainRole) { return }

# Get network connections
$networkListManager = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]"{DCB00C01-570F-4A9B-8D69-199FDBA5723B}"))
$connections = $networkListManager.GetNetworkConnections()

# Set network location to Private for all networks
$connections | % {$_.GetNetwork().SetCategory(1)}

起動時にこのスクリプトを実行するスケジュールされたタスクを作成する場合は、次の優れたチュートリアルを参照してください。「Windows タスク スケジューラを使用して Windows PowerShell スクリプトを実行する」

関連情報