Start typing to search across invoices, services, domains, tickets, and more...
Windows VPS で Web サイトやデータベース、ゲームサーバーを動かしているのに外部から接続できない場合、多くは Windows ファイアウォールでポートが開放されていないことが原因です。この記事では Windows Server 2016/2019/2022 を対象に、GUI と PowerShell(New-NetFirewallRule / Remove-NetFirewallRule)でポートを開放・閉鎖する方法、送信元 IP の制限、Ping の許可、待ち受け状態の確認と外部からの疎通テストまでを説明します。
リモートデスクトップで接続し、Win+R で下記を実行して「セキュリティが強化された Windows Defender ファイアウォール」を開きます。「受信の規則」→「新しい規則」→「ポート」→ TCP/UDP を選び「特定のローカルポート」に 8080 や 80,443 を入力 →「接続を許可する」→ ドメイン・プライベート・パブリックすべてにチェック → 分かりやすい名前を付けて完了です。
wf.msc管理者として 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データベース(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ポートを閉じる方法は、規則の一時無効化、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 BlockWindows 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ファイアウォールを開けても、アプリケーションがそのポートで待ち受けていなければ接続できません。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テストは必ずサーバー以外の端末から行います。サーバー自身からのテストはファイアウォールを通らないため正しく判定できません。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 ネットワーク不通の対処」記事も参考になります。
おすすめしません。SMB や RPC などのシステムサービスがインターネットに露出し、攻撃の対象になります。ファイアウォールは有効のまま、必要なポートだけを開放しましょう。
必要です。新しいポートを先に許可してからリモートデスクトップサービスを再起動します。詳しくは「Windows の RDP ポート変更」記事をご覧ください。
上記の手順で解決しない場合は、サポートチケットから IMIDC の 24 時間 365 日対応テクニカルサポートへお問い合わせください。サーバー IP、OS のバージョン、実行したコマンド、エラー画面のスクリーンショットを添えていただくと、より早く原因を特定できます。