ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Windowsサーバー

Windows ファイアウォールでポートを開放・閉鎖する方法(GUI と PowerShell)

7 ステップ 10 分で読めます 4 回閲覧 0
目次

Windows VPS で Web サイトやデータベース、ゲームサーバーを動かしているのに外部から接続できない場合、多くは Windows ファイアウォールでポートが開放されていないことが原因です。この記事では Windows Server 2016/2019/2022 を対象に、GUI と PowerShell(New-NetFirewallRule / Remove-NetFirewallRule)でポートを開放・閉鎖する方法、送信元 IP の制限、Ping の許可、待ち受け状態の確認と外部からの疎通テストまでを説明します。

ステップ1:GUI で Windows ファイアウォールのポートを開放する

リモートデスクトップで接続し、Win+R で下記を実行して「セキュリティが強化された Windows Defender ファイアウォール」を開きます。「受信の規則」→「新しい規則」→「ポート」→ TCP/UDP を選び「特定のローカルポート」に 8080 や 80,443 を入力 →「接続を許可する」→ ドメイン・プライベート・パブリックすべてにチェック → 分かりやすい名前を付けて完了です。

wf.msc
送信方向は既定で許可されているため、通常は受信の規則だけ追加すれば十分です。「Allow TCP 8080 - API」のように用途が分かる名前にしておくと、後で閉鎖するときに探しやすくなります。

ステップ2:PowerShell の New-NetFirewallRule でポート開放

管理者として PowerShell を開けば、1 行でポートを開放できます。スクリプト化や複数台への展開に便利です。-LocalPort には単一ポート、カンマ区切り、範囲指定が使えます。

# Allow inbound TCP 8080 (all profiles)
New-NetFirewallRule -DisplayName "Allow TCP 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -Profile Any

# Several ports / a range, and UDP
New-NetFirewallRule -DisplayName "Allow Web 80,443" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow
New-NetFirewallRule -DisplayName "Allow UDP 27015-27020" -Direction Inbound -Protocol UDP -LocalPort 27015-27020 -Action Allow

ステップ3:送信元 IP を限定してポートを開放する

データベース(1433、3306)や管理用ポートをインターネット全体に公開するのは危険です。-RemoteAddress で許可する IP やサブネットを指定すれば、それ以外からの接続は既定のポリシーで遮断されます。許可元を変更するときは Set-NetFirewallRule で編集できます。

# Only allow SQL Server 1433 from your office IP and one subnet
New-NetFirewallRule -DisplayName "MSSQL from office" -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress 203.0.113.10,198.51.100.0/24 -Action Allow

# Change the source list of an existing rule later
Set-NetFirewallRule -DisplayName "MSSQL from office" -RemoteAddress 203.0.113.10,203.0.113.20

ステップ4:Windows ファイアウォールのポートを閉鎖する(無効化・Remove-NetFirewallRule)

ポートを閉じる方法は、規則の一時無効化、Remove-NetFirewallRule による削除、明示的なブロック規則の作成の 3 つです。Windows ファイアウォールではブロック規則が許可規則より優先されるため、確実に閉じたい場合はブロック規則が安全です。

# List the rules you created
Get-NetFirewallRule -Direction Inbound | Where-Object DisplayName -like "Allow*" | Format-Table DisplayName,Enabled,Action

# Temporarily disable, or delete permanently
Disable-NetFirewallRule -DisplayName "Allow TCP 8080"
Remove-NetFirewallRule -DisplayName "Allow TCP 8080"

# Explicitly block a port (Block rules win over Allow rules)
New-NetFirewallRule -DisplayName "Block TCP 445" -Direction Inbound -Protocol TCP -LocalPort 445 -Action Block
リモートデスクトップ(3389 または変更後のポート)の規則は削除・ブロックしないでください。接続が即座に切れ、ログインできなくなります。

ステップ5:Ping(ICMP)を許可する

Windows Server は既定で Ping に応答しません。Web サイトには影響しませんが、監視ツールや速度テストで「ダウン」と誤判定されることがあります。以下はエコー要求のみを許可するルールです。

# Allow ping (ICMPv4 Echo Request) and ICMPv6 echo
New-NetFirewallRule -DisplayName "Allow ICMPv4 Ping" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -Action Allow
New-NetFirewallRule -DisplayName "Allow ICMPv6 Ping" -Direction Inbound -Protocol ICMPv6 -IcmpType 128 -Action Allow

# Same with the classic netsh syntax
netsh advfirewall firewall add rule name="Allow ICMPv4 Ping" dir=in action=allow protocol=icmpv4:8,any

ステップ6:ポートが待ち受け状態か確認する

ファイアウォールを開けても、アプリケーションがそのポートで待ち受けていなければ接続できません。netstat または Get-NetTCPConnection で待ち受けアドレスとプロセス ID を確認します。127.0.0.1 になっている場合は、アプリの設定で 0.0.0.0 またはグローバル IP にバインドしてください。

netstat -ano | findstr :8080

Get-NetTCPConnection -State Listen -LocalPort 8080 | Select-Object LocalAddress,LocalPort,OwningProcess
Get-Process -Id (Get-NetTCPConnection -State Listen -LocalPort 8080).OwningProcess

ステップ7:外部からポートの疎通をテストする

テストは必ずサーバー以外の端末から行います。サーバー自身からのテストはファイアウォールを通らないため正しく判定できません。TcpTestSucceeded : True や nc の succeeded が表示されれば開放成功です。

# From another Windows machine
Test-NetConnection 203.0.113.50 -Port 8080

# From a Linux / macOS machine
nc -zv 203.0.113.50 8080
ping 203.0.113.50

よくある質問

規則を追加したのにポートがつながりません。

アプリが待ち受けているか、127.0.0.1 にバインドされていないか、同じポートのブロック規則がないか、TCP と UDP を取り違えていないか、手元のネットワークでポートが遮断されていないかを確認してください。「Windows ネットワーク不通の対処」記事も参考になります。

Windows ファイアウォールを丸ごと無効にしてもよいですか?

おすすめしません。SMB や RPC などのシステムサービスがインターネットに露出し、攻撃の対象になります。ファイアウォールは有効のまま、必要なポートだけを開放しましょう。

RDP ポートを変更したらファイアウォール設定も必要ですか?

必要です。新しいポートを先に許可してからリモートデスクトップサービスを再起動します。詳しくは「Windows の RDP ポート変更」記事をご覧ください。

上記の手順で解決しない場合は、サポートチケットから IMIDC の 24 時間 365 日対応テクニカルサポートへお問い合わせください。サーバー IP、OS のバージョン、実行したコマンド、エラー画面のスクリーンショットを添えていただくと、より早く原因を特定できます。

この回答はお役に立ちましたか?

関連チュートリアル