На платформі Windows, які вбудовані параметри я повинен перевірити, чи localhost
заблокований порт (наприклад, 3306) на моїй локальній машині (як в )?
На платформі Windows, які вбудовані параметри я повинен перевірити, чи localhost
заблокований порт (наприклад, 3306) на моїй локальній машині (як в )?
Відповіді:
Оскільки ви перебуваєте на машині Windows, це можна зробити,
Виконайте таку команду і знайдіть слухача ": 3306" (ви не згадали про UDP / TCP). Це підтвердить, що на порту щось працює.
netstat -a -n
Після цього, якщо ви очікуєте вхідних з'єднань на цьому порту і відчуваєте, що брандмауер може блокувати їх, ви можете запустити журнал брандмауера Windows і перевірити журнали на відключені з'єднання.
Є ще одна команда для перевірки стану брандмауера
(Оновлення для користувачів Windows 7 - як зазначено Nick
нижче - використовувати netsh брандмауер advfirewall )
стан шоу брандмауера
Ця команда скидає детальну інформацію про конфігурацію брандмауера Windows
показати конфігурацію брандмауера
Якщо у вас є активний блок (вхідні з'єднання відкидаються брандмауером) після того, як ви починаєте вести журнал, ви повинні бачити це в журналі.
Якщо ви користуєтеся програмою / службою, яка прослуховується на 3306, конфігурація брандмауера повинна показувати, що її ввімкнено. Якщо це не відображається, ви, ймовірно, пропустили додавання виключення з брандмауером, щоб дозволити це додаток / послугу.
Нарешті, порт 3306 зазвичай використовується для MySQL. Отже, я припускаю, що ви працюєте на цьому сервері Windows MySQL-сервер. Тому ви повинні побачити слухача для 3306, який приймає вхідні з'єднання. Якщо ви цього не бачите, вам потрібно спочатку попрацювати зі своїм додатком (MySQL).
|find "3306"
до команди, наприкладC:\Windows\System32>netstat -an |find "3306"
NETSTAT
підкаже, чи слухає порт, але він не скаже вам, чи порт відкритий для зовнішнього світу. Я маю на увазі під цим те, що NETSTAT
може свідчити про те, що 0.0.0.0 є СПИСОК на порту 3306, але брандмауер все ще може блокувати той порт, який перешкоджає зовнішнім з'єднанням; тому недостатньо покладатися на NETSTAT
самотужки.
Найкращий спосіб перевірити, чи порт заблокований, - це зробити сканування портів з клієнтської машини.
Існує багато способів зробити сканування портів, але оскільки ви згадали, що перебуваєте в Windows, то я запропоную утиліту командного рядка Microsoft PortQry
та графічну версію PortQryUI
Щоб перевірити всі відкриті порти:
portqry.exe -n #.#.#.#
Щоб перевірити конкретний порт:
portqry.exe -n #.#.#.# -e #
Наприклад, протестувати веб-інтерфейс маршрутизатора на 192.168.1.1:
portqry.exe -n 192.168.1.1 -e 80
Що повертає:
TCP port 80 (http service): LISTENING
Де тестування на локальній машині без HTTPD не повертається:
TCP port 80 (http service): NOT LISTENING
Використовуючи утиліту PortScan, ви отримаєте один з 3 результатів.
Listening
означає, що сервер прослуховує вказаний портFiltered
означає, що він отримав пакет підтвердження TCP з набором прапора Reset, який, ймовірно, вказує на брандмауер або проблему з програмним забезпеченнямNot Listening
означає, що він взагалі не отримав відповідіtelnet
інший варіант командного рядка, який зазвичай встановлюється в ОС за замовчуванням. Ця утиліта командного рядка може бути використана швидким способом перевірити, чи відповідає порт на запит мережі.
Для використання telnet
ви просто видасте таку команду з командного рядка:
telnet localhost 3306
Команда, наведена вище, повинна дати вам швидку індикацію, чи відповідає порт 3306
на localhost
.
З PowerShell 4.0 ви можете використовувати команду Test-NetConnection
Якщо ви хочете перевірити порт 3306, як у вашому прикладі, це команда
Test-NetConnection -ComputerName localhost -Port 3306
Якщо ви можете зателефонувати до порту з локальної машини (використовуючи зовнішню IP-адресу), а не з іншої машини - тоді вона блокується десь між ними.
Зауважте, що брандмауер локальної машини може запобігти навіть перші дії.