- Test-NetConnection: проверка открытых/закрытых TCP портов из PowerShell
- TCP Port Ping: Использование Test-NetConnection для проверки открытых портов и доступности серверов
- Test-NetConnection в скриптах мониторинга
- Сканер сети на PowerShell
- How to Check for Ports in Use in Windows 10
- Use Nirsoft CurrPorts
- Command Prompt Method
- TCPView
- Как проверить открытые порты через командную строку. Помни, хакеры где-то рядом
- Содержание статьи:
- How to check if a port is blocked on a Windows machine?
- 4 Answers 4
Test-NetConnection: проверка открытых/закрытых TCP портов из PowerShell
В PowerShell 4.0 (Windows 2012 R2, Windows 8.1 и выше) появился встроенный командлет для проверки сетевых соединений — Test-NetConnection. С помощью данного командлета вы можете проверить доступность удаленного сервера или сетевой службы на нем, блокировку TCP портов файерволами, проверить доступность по ICMP и маршрутизацию. По сути, командлет Test-NetConnection позволяет заменить сразу несколько привычных сетевых утилит: ping, traceroute, сканер TCP портов и т.д.
Основное преимущество командлета Test-NetConnection – он уже входит в состав всех современных версий Windows и вам не нужно устанавливать его отдельно. Командлет входит в состав модуля NetTCPIP (начиная с PoSh v4.0).
Значение 4 в столбце Major говорит о том, что на компьютере установлен PowerShell 4.0.
TCP Port Ping: Использование Test-NetConnection для проверки открытых портов и доступности серверов
Проверим, открыт ли порт TCP 25 (SMTP протокол) на почтовом сервере с помощью Test-NetConnection:
Test-NetConnection -ComputerName msk-msg01 -Port 25
В сокращенном виде аналогичная команда выглядит так:
TNC msk-mail1 -Port 25
Разберем результат команды:
Как вы видите, командлет выполняет разрешение имени сервера в IP адрес, выполняется проверка ответа ICMP (аналог ping) и доступность TCP порта. Указанный сервер доступен по ICMP ( PingSucceeded = True ) и 25 TCP порт также отвечает ( RemotePort=25, TcpTestSucceeded= True ).
У командлета есть специальный параметр –CommonTCPPort, позволяющий указать наименование известного сетевого протокола (HTTP, RDP, SMB, WINRM).
Например, чтобы проверить доступность веб-сервера, можно использовать команду:
Test-NetConnection -ComputerName winitpro.ru -CommonTCPPort HTTP
Test-NetConnection msk-rds1 –CommonTCPPort RDP
Можно вывести все параметры, которые возвращает командлет Test-NetConnection:
Test-NetConnection msk-man01 -port 445|Format-List *
Если нужна только информация по доступности TCP порта, в более лаконичном виде проверка может быть выполнена так:
TNC msk-mail1 -Port 25 -InformationLevel Quiet
Командлет вернул True, значит удаленный порт доступен.
(New-Object System.Net.Sockets.TcpClient).Connect(‘msk-msg01’, 25)
В Windows 10/ Windows Server 2016 вы можете использовать командлет Test-NetConnection для трассировки маршрута до удаленного сервера при помощи параметра –TraceRoute (аналог tracert). С помощью параметра –Hops можно ограничить максимальное количество хопов при проверке.
Test-NetConnection msk-man01 –TraceRoute
Командлет вернул сетевую задержку при доступе к серверу в милисекундах ( PingReplyDetails (RTT) : 41 ms ) и все IP адреса маршрутизаторов на пути до целевого сервера.
Test-NetConnection в скриптах мониторинга
Следующая команда позволить проверить доступность определенного порта на множестве серверов, список которых хранится в текстовом файле servers.txt. Нас интересуют сервера, где искомая служба не отвечает:
Аналогичным образом вы можете создать простейшую систему мониторинга, которая проверяет доступность серверов и выводит уведомление, если один из серверов недоступен.
Например, вы можете проверить доступность основных служб на всех контроллеров домена (список DC можно получить командлетом Get-ADDomainController). Проверим следующие службы на DC (в утилите PortQry есть аналогичное правило Domain and trusts):
- RPC – TCP/135
- LDAP – TCP/389
- LDAP – TCP/3268
- DNS – TCP/53
- Kerberos – TCP/88
- SMB – TCP/445
$Ports = «135»,»389″,»636″,»3268″,»53″,»88″,»445″,»3269″, «80», «443»
$AllDCs = Get-ADDomainController -Filter * | Select-Object Hostname,Ipv4address,isGlobalCatalog,Site,Forest,OperatingSystem
ForEach($DC in $AllDCs)
<
Foreach ($P in $Ports)<
$check=Test-NetConnection $DC -Port $P -WarningAction SilentlyContinue
If ($check.tcpTestSucceeded -eq $true)
else
>
Скрипт проверит указанные TCP порты на контроллерах домена, и, если один из портов недоступен, выделит его красным цветом (с небольшими доработками можно запустить данный PowerShell скрипт как службу Windows).
Сканер сети на PowerShell
Также вы можете реализовать простой сканер портов и IP подсетей для сканирования удаленных серверов или подсетей на открытые/закрытые TCP порты.
Просканируем диапазон IP адресов на открытый порт 3389:
foreach ($ip in 5..30)
Просканируем диапазон TCP портов от 1 до 1024 на указанном сервере:
How to Check for Ports in Use in Windows 10
At any one time, there’s a whole bunch of information being sent between your Windows 10 PC and the endless void of the Internet. This is done using a process whereby network-dependent processes seek out TCP and UDP ports, which they use to communicate with the Internet. First, your data gets sent to remote ports at the destination or website your processes are trying to connect to, then it gets received at local ports back on your PC.
Most of the time, Windows 10 knows how to manage ports and ensure that traffic is being directed through the right ports so that those processes can connect with what they need to. But sometimes two processes may be assigned to one port, or maybe you just want to get a better picture of your network traffic and what’s going in and out.
That’s why wrote this guide that shows you how to get an overview of your ports and see which applications are using which ports.
Use Nirsoft CurrPorts
NirSoft is one of the best indie software developers, giving us great utilities, like PassView and WirelessKeyView. While some people will prefer checking their ports without installing third-party software (in which case, scroll down to the CMD method), CurrPorts is easily the fastest and most convenient way to view your ports.
Once you’ve installed CurrPorts, just open it to see a list of all your ports currently in use. If you’re looking for local ports in use, just click the “Local Port” column at the top to order the list by port number (handy if you’re looking for a specific one). You can do the same thing with remote ports, too.
If you want to really find specific ports, click the “Advanced Filters” icon at the top and enter your string in the format they suggest. It should look something like the below image.
Hit OK when you’re ready, and the list will filter down to your queries.
Command Prompt Method
The integrated – though not necessarily the simplest – way to check open ports is to use the trusty command prompt.
Click the Start button, type cmd , then right-click “Command Prompt” when it shows up in the search results. Click “Run as administrator.”
Once you’re in the elevated command prompt, enter the following command:
This will steadily bring up a list of ports that is probably quite long, along with the Windows processes that are using them. (You can press Ctrl + A , then Ctrl + C to copy all information to the clipboard.) On the average PC, there will be two main local IP addresses that contain ports on your PC.
The first, in our case, is “127.0.0.1.” This IP address is otherwise known as “localhost” or a “loopback address,” and any process listening to ports here is communicating internally on your local network without using any network interface. The actual port is the number you see after the colon. (See image below.)
The bulk of your processes will probably be listening to ports prefixed with “192.168.xxx.xxx,” which is your IP address. This means the processes you see listed here are listening for communications from remote Internet locations (such as websites). Again, the port number is the number after the colon.
TCPView
If you don’t mind installing a third-party app and want to have more control over what’s going on with all your ports, you can use a lightweight app called TCPView. This immediately brings up a list of processes and their associated ports.
What make this better than the command prompt is that you can actively see the ports opening, closing and sending packets. Just look for the green, red and yellow highlights. You can also reorder the list by clicking the column headings, making it easier to find the process you want or two separate processes vying for the same port.
If you do find a process or connection you want to close, just right-click that process. You can then select “End process,” which is exactly the same function as the one in Windows task manager. Or you can click “Close Connection” to leave the process open but stop it from listening on a given port.
If you’re having some trouble in Windows 10, then see whether a Windows update may be causing it. We also have a handy guide for managing the health of your hard drive in Windows 10.
Related:
Content Manager at Make Tech Easier. Enjoys Android, Windows, and tinkering with retro console emulation to breaking point.
Как проверить открытые порты через командную строку. Помни, хакеры где-то рядом
Друзья, в недавней публикации , которая посвящалась фанатам игры Майнкрафт, я в очередной раз заострял внимание на том, что сетевая безопасность — это наше все. Ведь никому же не хочется, чтобы какой-то нехороший дядька получил доступ к вашему личному электронному кошельку, или, например, зашифровал все файлы на компьютере.
Конечно, все мы пользуемся современными антивирусными решениями , но порой сами даем злоумышленникам лишний повод зайти к нам в гости без приглашения. Я сейчас имею в виду «проброс» портов для нужд различных онлайн-игр и прочих сетевых приложений.
Содержание статьи:
Какой командой можно проверить открытые порты Windows 10 и 7
Как определить открытые порты в командной строке Windows 10
Как узнать, какая именно программа использует открытые порты
Поэтому пришло время поговорить о том, как проверить открытые порты компьютера через командную строку. И поверьте, это очень просто. С этим справиться даже первоклассник.
Все дальнейшие действия будут показаны на примере Windows 10, хотя и в других версиях данной ОС все происходит аналогично. Итак, начинаем «колдовать». Для этого первым делом жмем правой кнопкой мыши по кнопке «Пуск» и открываем командную строку.
В ней вводим простенькую команду следующего вида:
После этого запустится процесс сканирования. Естественно, здесь нужно немножко подождать, поэтому надо запастись терпением или чаем. И вот, на рисунке ниже в желтой рамке показаны открытые порты. Как видите, в графе «Состояние» они помечены как «LISTENING» (то есть слушающий).
Если же вместо этого значения будет надпись «ESTABLISHED», значит, в это время соединение установлено и идет передача данных между двумя узлами сети. Вот так это выглядит наглядно.
Посмотрите, во втором и третьем столбцах показаны IP-адреса этих узлов. В моем случае никакой опасности нет, поскольку адрес «127.0.0.1» относится к одному и тому же локальному компьютеру. То есть все происходит в пределах домашнего компа, внешней угрозы нет.
Также могут присутствовать в общем списке значения типа «CLOSE_WAIT» (ожидания закрытия соединения) и «TIME_WAIT» (превышение времени ответа). Внимание на скриншот ниже.
Хорошо, вот мы узнали какие порты открыты, но что делать дальше с этим хозяйством? На самом деле все просто. Рассмотрим ситуацию на реальном примере. Допустим мы хотим узнать, какой программой открыт порт «1688» (он выделен на рисунке выше).
Для этого нужно скопировать значение из последнего столбца, который называется «PID». В нашем случае это цифра «9184». Теперь следует открыть диспетчер задач Windows одновременным нажатием клавиш «Ctrl+Alt+Del», а затем перейти на вкладку «Подробности».
Далее в графе «ИД процесса» можно без труда найти нужное нам значение и понять, что за приложение его использует. Нажав, например, правой кнопкой мыши по названию задействованного процесса, появится возможность почитать о нем в интернете либо сразу перейти в папку размещения его исполнительных файлов.
На этом рассказ о том, как проверить открытые порты компьютера через командную строку Windows 10 и 7 версий подошел к завершению. Если остались какие-то вопросы, задавайте их в комментариях к публикации.
А уже в скором времени я покажу вам еще одну специализированную программу для этих целей, которая призвана еще более автоматизировать процесс определения активных сетевых соединений.
How to check if a port is blocked on a Windows machine?
On the Windows platform, what native options to I have to check if a port (3306, for example) on my local machine (as in localhost ), is being blocked?
4 Answers 4
Since you are on a Windows machine, these things can be done:
Execute the following command and look for a «:3306» listener (you did not mention UDP/TCP). This will confirm there is something running on the port.
After this, if you are expecting incoming connections on this port and feel that the firewall may be blocking them, you could use start windows firewall logging and check the logs for dropped connections
- Go to Windows Firewall, Advanced settings
- Click on the Settings button next to «Local Area Connection»
- Select «Log dropped packets»
- Look at the log file location (if not present, define one)
- Click OK
- Now, when the connection attempt is made (assuming you know when this is done), look at the log file for a drop on port 3306.
- If this is seen, you will want to add an exception for this port.
There is one more command to check the firewall state
(Updated for Windows 7 users — as referred by Nick below — use netsh advfirewall firewall)
netsh firewall show state
- this will list the blocked ports as well as active listening ports with application associations
This command will dump the Windows firewall configuration detail
netsh firewall show config
If you have an active block (incoming connections are being dropped by firewall) after you start logging, you should see that in the log.
If you are running an application/service that is listening on 3306, the firewall config should show it to be Enabled. If this is not seen, you have probably missed adding an exception with the firewall to allow this app/service.
Finally, port 3306 is typically used for MySQL. So, I presume you are running MySQL server on this windows machine. You should therefore see a listener for 3306 accepting incoming connections. If you do not see that, you need to work with your application (MySQL) to get that started first.