Як перевірити чи відкритий порт в Windows: netstat, Test-NetConnection і telnet

5 хв читання

Перевірка відкритих портів на локальному ПК і віддалених серверах в Windows: netstat, Test-NetConnection, telnet і онлайн сканери. Як відкрити порт у брандмауері.

Програма не може підключитись, сервіс не відповідає — часто причина у закритому порті. Ось як швидко перевірити і виправити.


Перевірити порти на локальному ПК

rem Всі відкриті TCP порти
netstat -an | findstr LISTENING

rem Знайти конкретний порт
netstat -an | findstr :3389

rem З ім'ям процесу що тримає порт
netstat -anob | findstr :80
# Всі порти що слухають з ім'ям процесу
Get-NetTCPConnection -State Listen |
  Select-Object LocalPort,
    @{N="Process"; E={(Get-Process -Id $_.OwningProcess -EA SilentlyContinue).Name}} |
  Sort-Object LocalPort |
  Format-Table -AutoSize

# Перевірити конкретний порт
Get-NetTCPConnection -LocalPort 443 -ErrorAction SilentlyContinue

Перевірити порт на віддаленому сервері

# Test-NetConnection — найкраща заміна telnet
Test-NetConnection -ComputerName "192.168.1.10" -Port 3389

# Коротка версія
tnc google.com -Port 443

# Результат:
# TcpTestSucceeded : True  — порт відкритий
# TcpTestSucceeded : False — порт закритий або недоступний
rem Telnet (якщо встановлений)
telnet 192.168.1.10 3389
rem Якщо чорний екран — порт відкритий
rem Якщо "Не вдається підключитись" — закритий

Увімкнути Telnet (якщо потрібен)

# Встановити клієнт Telnet
Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient

Сканування діапазону портів

# Перевірити кілька портів на одному хості
$ports = @(22, 80, 443, 3389, 8080)
$host = "192.168.1.10"

foreach ($port in $ports) {
    $result = Test-NetConnection $host -Port $port -WarningAction SilentlyContinue
    $status = if ($result.TcpTestSucceeded) { "ВІДКРИТИЙ" } else { "ЗАКРИТИЙ" }
    Write-Output "Port $port : $status"
}

Відкрити порт у брандмауері

# Відкрити TCP порт 8080 для вхідних підключень
New-NetFirewallRule `
  -DisplayName "Open Port 8080" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 8080 `
  -Action Allow

# Перевірити що правило створено
Get-NetFirewallRule -DisplayName "Open Port 8080"

Детальніше: Брандмауер Windows — налаштування правил


Онлайн перевірка портів (ззовні)

Щоб перевірити чи порт доступний з інтернету:

  • canyouseeme.org — вводиш порт і перевіряє чи бачить його ззовні
  • portchecker.co — аналог

Для цього ПК або сервер повинен мати публічний IP і порт проброшений на роутері.


Знайти яка програма використовує порт

# Знайти процес за портом
$port = 8080
$conn = Get-NetTCPConnection -LocalPort $port -ErrorAction SilentlyContinue
if ($conn) {
    Get-Process -Id $conn.OwningProcess | Select-Object Id, Name, Path
} else {
    Write-Output "Порт $port не зайнятий"
}

Підсумок

Test-NetConnection -Port — найшвидший спосіб перевірити порт на будь-якому хості. netstat -anob — побачити що займає порт на локальному ПК. New-NetFirewallRule — відкрити порт у брандмауері. Для перевірки ззовні — canyouseeme.org.


🛡️ Перевір безпеку свого ПК

Хочеш знати чи немає витоків даних, зайвих служб або підозрілих програм на твоєму ПК?

→ AuditShield — аудит Windows по 22 напрямках за 10 хвилин. HTML-звіт з оцінкою ризику. Є безкоштовне демо.

Схожі статті

← Всі статті