treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

PowerShellでネットワークカテゴリ変更

PowerShell使いこなすと便利です。
今日はそんなPowerShellを使ったネットワークカテゴリ変更方法をご報告します。

PowerShellは既に廃止されたGUI画面の設定もPowerShell画面から実行できますし、あらかじめリモートからPowerShellを許可しておけば「Enter-PSSession」でリモートPCのPowerShell画面を開いてSSHのような操作をPowerShellベースで実行できます。
このように便利なPowerShell、徐々に勉強していこうと思っています。

ネットワークカテゴリ

ネットワークカテゴリって何かといえば、PCのネットワークに「プライベートネットワーク」とか「パブリックネットワーク」とか「ドメインネットワーク」とか表示されているアレです。
このネットワークカテゴリというヤツは、今まで接続したことのない別のネットワークに接続した時に、初回に質問されてどのネットワークカテゴリにするか決定するのですが、最初に設定したカテゴリと違うところになったり、そもそも操作間違いでパブリックネットワークになってしまったり、と「変更したいな…」というシチュエーションに出会います。
なぜ変更したいかというと、このネットワークカテゴリによって「Windowsファイアウォールの動作が決定する」という点がポイントです。つまり社内LAN(イントラネット内)で無駄にパブリックネットワークになっていると本来使いたい通信がWindowsファイアウォールによってブロックされてしまう、という意識しておかないと通信できなくなる厄介な存在です。

Windows8(8.1)では「デバイスとコンテンツの検索」という箇所をオンにするとパブリックネットワークとプライベートネットワーク(ドメイン)を切り替えることができます。

blog.treedown.net


Windows Server 2012だとこれが見つからなくって…。

■簡単に変更しましょ

変更自体は実に簡単にできます。
ネットワークと共有センターを開き、状態を確認しましょう。今回Hyper-VのゲストOSで動作確認しています。

f:id:treedown:20170619161817p:plain
「ネットワーク」と「ネットワーク 2」という二つのネットワークが存在しています。

この環境でPowerShellを起動します。(PowerShellは管理者権限で起動します。設定変更コマンドの実行には管理者権限が必要になるため。)

「Get-NetAdapter」というコマンドで現在のNICの一覧表が見れます。
このコマンド実行後のInterfaceDescriptionの欄にハードウェアがどのネットワーク名に割り当てられているかの対応表を見ることができます。
ネットワークデバイス名が有線LANのNICを表す名前なら有線LANのネットワーク名だし、無線LANならWiFiアダプタのデバイス名が表示されます。MACアドレスも確認できます。

f:id:treedown:20170619161925p:plain

ここで有線LANか無線LANかを判断したら、次に「Get-NetConnectionProfile」コマンドで各々のネットワーク名がいまどんな状態かを確認できます。
このとき「NetworkCategory」の表示に注目です。
ここが「Private」なら「プライベートネットワーク」です。ファイアウォールもプライベートネットワークのプロファイルルールが適用されますし、「Public」となっていれば「パブリックネットワーク」ということになります。Active Directoryドメインに参加しているのであれば、「DomainAuthenticated」と表示されます。

f:id:treedown:20170619162040p:plain
じゃ、一気に変更しちゃいます。
例えば、上記画面、プライベートネットワークのプロファイルが適用されている環境を一気にパブリックネットワークに変更しちゃいます。コマンドは…

Set-NetConnectionProfile -NetworkCategory Public

を実行すると全部パブリックネットワークに変更されます。
実行後試しに「Get-NetConnectionProfile」コマンドで状態を確認すると、「NetworkCategory」の表示がPublicになっていることが分かります。

f:id:treedown:20170619162108p:plain
逆に、PublicからPrivateに変更するときは

Set-NetConnectionProfile -NetworkCategory Private

コマンドを実行します。
すると、プライベートネットワークに表記が変わりました。

f:id:treedown:20170619162129p:plain

て、ことは、
予期せずパブリックネットワークになってしまったら、
「Set-NetConnectionProfile -NetworkCategory Private」
というコマンドを覚えておけばよい、ということになります。全NICがプライベートネットワークのプロファイルに変更されます。

逆に、DMZやインターネットと直接通信するようなコンピュータを社内LANでキッティングしていた場合プライベートネットワークになっているのですが、いざ設置場所に設置したらば
「Set-NetConnectionProfile -NetworkCategory Public」
というコマンドを実行して、Windowsファイアウォールを堅くして保護してやる、という使い分けができます。

これ、NICごとに変更することもできますね。もうちょっとPowerShellを勉強すれば自由に切り替えできるシェルスクリプト的なものも書けそうですね。