Na natywnych opcjach na platformie Windows muszę sprawdzić, czy port (na przykład 3306) na moim komputerze lokalnym (jak w localhost
) jest blokowany?
Na natywnych opcjach na platformie Windows muszę sprawdzić, czy port (na przykład 3306) na moim komputerze lokalnym (jak w localhost
) jest blokowany?
Odpowiedzi:
Ponieważ korzystasz z komputera z systemem Windows, możesz to zrobić,
Wykonaj następujące polecenie i poszukaj detektora „: 3306” (nie wspomniałeś o UDP / TCP). Potwierdzi to, że coś działa na porcie.
netstat -a -n
Następnie, jeśli oczekujesz połączeń przychodzących na tym porcie i uważasz, że zapora może je blokować, możesz rozpocząć rejestrowanie zapory systemu Windows i sprawdzić dzienniki pod kątem przerwanych połączeń
Jest jeszcze jedno polecenie, aby sprawdzić stan zapory
(aktualizacja dla użytkowników systemu Windows 7 - jak opisanoNick
poniżej - użyj zapory netsh advfirewall )
netsh firewall show state
To polecenie zrzuci szczegóły konfiguracji zapory systemu Windows
netsh firewall show config
Jeśli masz aktywny blok (połączenia przychodzące są odrzucane przez zaporę) po rozpoczęciu rejestrowania, powinieneś zobaczyć to w dzienniku.
Jeśli korzystasz z aplikacji / usługi nasłuchującej na 3306, konfiguracja zapory ogniowej powinna pokazywać, że jest włączona. Jeśli nie jest to widoczne, prawdopodobnie przegapiłeś dodanie wyjątku do zapory, aby zezwolić na tę aplikację / usługę.
Wreszcie port 3306 jest zwykle używany dla MySQL. Zakładam, że używasz serwera MySQL na tym komputerze z systemem Windows. Powinieneś zatem zobaczyć detektor dla 3306 akceptujących połączenia przychodzące. Jeśli tego nie widzisz, musisz najpierw pracować z aplikacją (MySQL).
|find "3306"
do polecenia, np.C:\Windows\System32>netstat -an |find "3306"
NETSTAT
powie ci, czy port nasłuchuje, ale nie powie ci, czy port jest otwarty na świat zewnętrzny. Rozumiem przez to, że NETSTAT
może pokazywać, że 0.0.0.0 SŁUCHUJE na porcie 3306, ale zapora może nadal blokować ten port, który uniemożliwia połączenia zewnętrzne; więc nie wystarczy polegać NETSTAT
wyłącznie na sobie.
Najlepszym sposobem sprawdzenia, czy port jest zablokowany, jest skanowanie portu z komputera klienta.
Istnieje wiele sposobów skanowania portów, ale ponieważ wspomniałeś, że jesteś w systemie Windows, zasugeruję narzędzie wiersza polecenia Microsoft PortQry
i wersję graficzną PortQryUI
Aby przetestować wszystkie otwarte porty:
portqry.exe -n #.#.#.#
Aby przetestować określony port:
portqry.exe -n #.#.#.# -e #
Na przykład, aby przetestować interfejs sieciowy routera pod adresem 192.168.1.1:
portqry.exe -n 192.168.1.1 -e 80
Które zwraca:
TCP port 80 (http service): LISTENING
Gdzie jako testowanie na komputerze lokalnym bez uruchomionego HTTPD zwraca:
TCP port 80 (http service): NOT LISTENING
Za pomocą narzędzia PortScan uzyskasz jeden z 3 wyników.
Listening
oznacza, że serwer nasłuchuje na określonym porcieFiltered
oznacza, że otrzymał pakiet potwierdzenia TCP z ustawioną flagą Resetuj, co prawdopodobnie oznacza zaporę lub problem z oprogramowaniemNot Listening
oznacza, że w ogóle nie otrzymał odpowiedzitelnet
jest kolejną opcją wiersza poleceń, która zazwyczaj jest domyślnie instalowana w systemie operacyjnym. Za pomocą tego narzędzia wiersza polecenia można szybko sprawdzić, czy port odpowiada na żądanie sieciowe.
Aby użyć telnet
, wystarczy wydać następujące polecenie z wiersza polecenia:
telnet localhost 3306
Powyższe polecenie powinno dać ci szybkie wskazanie, czy port 3306
na localhost
odpowiada.
Od PowerShell 4.0 możesz użyć polecenia Test-NetConnection
Jeśli chcesz przetestować Port 3306 jak w twoim przykładzie, to polecenie to
Test-NetConnection -ComputerName localhost -Port 3306
Jeśli możesz telnet do portu z komputera lokalnego (używając zewnętrznego adresu IP), ale nie z innego komputera - oznacza to, że jest on blokowany gdzieś pomiędzy.
Pamiętaj, że zapora na komputerze lokalnym może uniemożliwić nawet pierwszą akcję.