Как закрыть порты TCP и UDP через командную строку Windows - PullRequest
130 голосов
/ 31 декабря 2011

Кто-нибудь знает, как закрыть сокет TCP или UDP для одного соединения через командную строку Windows?

Гуглял по этому поводу, я видел, как некоторые люди спрашивали то же самое.Но ответы выглядели как справочная страница команд netstat или netsh, посвященных тому, как контролировать порты.Я не хочу ответов о том, как их контролировать (я уже делаю это).Я хочу закрыть / убить их.

РЕДАКТИРОВАТЬ, для пояснения: допустим, мой сервер прослушивает TCP-порт 80. Клиент устанавливает соединение, и для него выделен порт 56789.Затем я обнаружил, что это соединение нежелательно (например, этот пользователь делает плохие вещи, мы попросили его прекратить, но соединение не сбрасывалось где-то по пути).Обычно я бы добавил брандмауэр для выполнения этой работы, но это заняло бы некоторое время, и я попал в чрезвычайную ситуацию.Уничтожение процесса, которому принадлежит соединение, - это действительно плохая идея, потому что это приведет к отключению сервера (все пользователи потеряют функциональность, когда мы просто хотим выборочно и временно отключить это одно соединение).

Ответы [ 16 ]

2 голосов
/ 23 сентября 2013

Я нашел правильный ответ на этот вопрос.Попробуйте TCPView от Sysinternals, который сейчас принадлежит Microsoft.Вы можете найти его на http://technet.microsoft.com/en-us/sysinternals/bb897437

1 голос
/ 08 января 2014

вы можете использовать такую ​​программу, как tcpview от sysinternal. Я думаю, что это может помочь вам как в мониторинге, так и в уничтожении нежелательного соединения.

1 голос
/ 31 декабря 2011

Чтобы закрыть порт , вы можете идентифицировать процесс, который прослушивает этот порт, и завершить этот процесс.

0 голосов
/ 25 октября 2017

Если вы работаете на Windows 8, Windows Server 2012 или выше с установленной PowerShell v4 выше, вы можете использовать приведенный ниже скрипт. Он находит процессы, связанные с портом, и завершает их.

код

#which port do you want to kill
[int]$portOfInterest = 80

#fetch the process ids related to this port
[int[]]$processId = Get-NetTCPConnection -LocalPort $portOfInterest | 
    Select-Object -ExpandProperty OwningProcess -Unique | 
    Where-Object {$_ -gt 0} 

#kill those processes
Stop-Process -Id $processId 

Документация:

  • Get-NetTCPConnection - эквивалент NetStat PowerShell
  • Select-Object - извлечение определенных свойств из объекта / удаление дубликатов
  • Где-объект - Фильтровать значения на основе некоторого условия
  • Stop-Process - PowerShell TaskKill эквивалент
0 голосов
/ 30 марта 2017

Да, есть возможность закрыть порт TCP или UDP, есть команда в DOS

TASKKILL /f /pid 1234 

Я надеюсь, что это сработает для Вас

0 голосов
/ 22 ноября 2013

мгновенный / выполнимый / частичный ответ : https://stackoverflow.com/a/20130959/2584794

в отличие от предыдущего ответа, где netstat -a -o -n использовался невероятно, длинный список должен был просматриваться без названия приложения, использующего эти порты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...