仕事の効率化

Windows10でファイアウォールの設定をバッチで自動化する方法

今回はWindows10でファイアウォールをバッチで設定出来る方法を紹介していきます。

例えばこの記事を読む事によってバッチでファイアウォールにIPアドレスなどを通す事も可能です。

仕事で業務で使用するPCを作る際に大変便利で時短になると思いますので、是非利用してみてください。

実行環境は下記になります。

PCWindows10 Pro 64bit

Windows10でファイアウォールの設定をバッチで自動化する方法

今回は追加時の例と変更時の例を記載します。

追加時

netsh advfirewall firewall add ruleを使います。

使い方の詳細は「netsh advfirewall firewall add rule /?」と入力して詳細を調べてください。

今回の追加の例は「”test firewall”」を追加します。

受信の規則

privateとpublicに下記のコマンドを実行します。

例1:プログラムを指定しない方法

netsh advfirewall firewall add rule name="test firewall" dir=in action=allow protocol=tcp localport=12345 profile=private,public localip=any

例2:プログラムを指定する方法

netsh advfirewall firewall add rule name="test firewall2" dir=in program="C:\work\test2.exe" action=allow protocol=udp localport=49152-65535 remoteport=1024-65535 profile=private,public localip=any remoteip=any

netsh advfirewall firewall add rule name="test firewall3" dir=in program="C:\work\test3.exe" action=allow protocol=any profile=private,public localip=any remoteip=any

ポイントは追加時はprofileにpublicとprivateが一緒に設定できます。

受信の規則の場合はdir=inを指定します。

受信時はlocalportのみ。カスタムで追加するものはlocalportとremoteportを指定します。すべての時はanyを指定します。

そして上記の規則が有効になっていない時は、「enable=yes」を設定する必要があります。

後は対象をnameで判断していそうですので、変更対象の名前をコピーしてnameに設定してください。

送信の規則

privateとpublicに下記のコマンドを実行します。
netsh advfirewall firewall add rule name="test firewall4" dir=out action=allow protocol=tcp remoteport=12345 profile=private,public remoteip=any

ポイントは追加時はprofileにpublicとprivateが一緒に設定できます。

送信の規則の場合はdir=outを指定します。

送信時はremoteportのみ。カスタムで追加するものはlocalportとremoteportを指定します。すべての時はanyを指定します。

そして上記の規則が有効になっていない時は、「enable=yes」を設定します。

後は対象をnameで判断していそうですので、変更対象の名前をコピーしてnameに設定してください。

変更時

netsh advfirewall firewall set ruleを使います。

使い方の詳細は「netsh advfirewall firewall set rule /?」と入力して詳細を調べてください。

今回の変更時の例は「”ファイルとプリンターの共有 (エコー要求 – ICMPv4 受信)”」を対象として変更します。これはpingの送受信設定です。

下記の例では普通のPCでは有効になっていなかったり、スコープの設定が異なっている際に大変便利になっています。そして後は変更したい項目についてコマンドを調べてカスタマイズしてみてください。

受信の規則

privateには下記のコマンドを実行します。
netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)" profile=private new remoteip=any
publicには下記のコマンドを実行します。
netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)" profile=public new remoteip=any

ポイントは「remoteip=any」でファイアウォールの初期設定ではローカルサブネットが設定されていますが、それを「任意のIPアドレス」に変更しています。

そして上記の規則が有効になっていない時は、「enable=yes」を設定します。

後は対象をnameで判断していそうですので、変更対象の名前をコピーしてnameに設定してください。

送信の規則

privateには下記のコマンドを実行します。
netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 送信)" profile=private new remoteip=any
publicには下記のコマンドを実行します。
netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 送信)" profile=public new remoteip=any

ポイントはこちらも「remoteip=any」でファイアウォールの初期設定ではローカルサブネットが設定されていますが、それを「任意のIPアドレス」に変更しています。

そして上記の規則が有効になっていない時は、「enable=yes」を設定しましょう。

後は対象をnameで判断していそうですので、変更対象の名前をコピーしてnameに設定してください。

サンプルバッチ

上記のコマンドを使用したサンプルバッチ

このサンプルバッチはファイアウォールの受信と送信に追加と更新を行います。

Firewall_Setting.bat

@ECHO OFF
rem 受信の規則に追加します。
netsh advfirewall firewall add rule name="test firewall" dir=in action=allow protocol=tcp localport=12345 profile=private,public localip=any

rem 送信の規則に追加します。
netsh advfirewall firewall add rule name="test firewall4" dir=out action=allow protocol=tcp remoteport=12345 profile=private,public remoteip=any

rem 送受信の規則を変更します。(publicとprivateのみ)
netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)" profile=private new remoteip=any

netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)" profile=public new remoteip=any

netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 送信)" profile=private new remoteip=any

netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 送信)" profile=public new remoteip=any

ECHO 設定が完了しました。何かキーを押してください。

PAUSE>NUL

上記をテキストエディタにコピーして拡張子を「.bat」にして保存すればバッチの完成です。

まとめ

今回はWindows10のファイアウォールの設定をバッチでクリックするだけで登録出来る手順を紹介しました。

ですが、設定系はなるべくバッチを右クリックし、「管理者として実行」した方が確実に設定出来ます。権限がないユーザーで実施すると設定出来ない可能性が高いです。

地味にファイアウォールを手動でやると時間がかかったり、間違うとかなり影響が出てしまいます。

ですが今回のバッチを使えば一瞬で解決でき、仕事の効率化や自動化がより加速するのではないでしょうか。

ABOUT ME
Yoshiyuki Sugiyama
2019年2月からフリーランスエンジニアをやっています。 自分が将来見るためのメモ等をアップします。 使用する言語は主にPython。JavaとC#も使えます。 現在はAI関連を勉強中。 >>プロフィール詳細