sviluppo-web-qa.it

Come verificare se una porta è bloccata su un computer Windows?

Sulla piattaforma Windows, quali opzioni native devo verificare se una porta (3306, ad esempio) sul mio computer locale (come in localhost), è bloccata?

109
Boris Pavlović

Dal momento che sei sul computer Windows, queste cose possono essere fatte,

  • Esegui il seguente comando e cerca un listener ": 3306" (non hai menzionato UDP/TCP). Ciò confermerà che c'è qualcosa in esecuzione sulla porta.

    netstat -a -n

  • Dopodiché, se ti aspetti connessioni in entrata su questa porta e ritieni che il firewall potrebbe bloccarle, potresti farlo avviare la registrazione del firewall di Windows e controllare i registri per le connessioni interrotte

    • Vai a Windows Firewall, Impostazioni avanzate
    • Fai clic sul pulsante Impostazioni accanto a "Connessione alla rete locale"
    • Seleziona "Registra i pacchetti rilasciati"
    • Guarda il percorso del file di registro (se non presente definirne uno)
    • Clicca OK
    • Ora, quando viene effettuato il tentativo di connessione (supponendo che tu sappia quando è stato fatto), guarda il file di registro per un rilascio sulla porta 3306.
    • Se viene visualizzato, ti consigliamo di aggiungere un'eccezione per questa porta.
  • Esiste ancora un comando per controllare lo stato del firewall
    (Aggiornamento per utenti di Windows 7 - come indicato da Nick di seguito - usa netsh advfirewall firewall )

    firewall netsh mostra lo stato

    • questo elencherà le porte bloccate e le porte di ascolto attive con le associazioni delle applicazioni
  • Questo comando scaricherà i dettagli di configurazione del firewall di Windows

    firewall netsh mostra config


Se si dispone di un blocco attivo (le connessioni in arrivo vengono eliminate dal firewall) dopo aver avviato la registrazione, è necessario visualizzarlo nel registro.

Se si esegue un'applicazione/servizio in ascolto su 3306, il configurazione del firewall dovrebbe mostrare che è abilitato. Se questo non viene visualizzato, probabilmente hai perso l'aggiunta di un'eccezione con il firewall per consentire questa app/servizio.

Infine, la porta 3306 viene in genere utilizzata per MySQL. Quindi, presumo che tu stia eseguendo il server MySQL su questa macchina Windows. Dovresti quindi vedere un listener per 3306 che accetta connessioni in entrata. Se non lo vedi, devi lavorare con la tua applicazione (MySQL) per iniziare prima.

113
nik

NETSTAT ti dirà se la porta è in ascolto ma non ti dirà se la porta è aperta al mondo esterno. Ciò che intendo con questo è che NETSTAT potrebbe mostrare che 0.0.0.0 è in ASCOLTO sulla porta 3306 ma un firewall potrebbe ancora bloccare quella porta che impedisce connessioni esterne; quindi non è sufficiente fare affidamento solo su NETSTAT.

Il modo migliore per verificare se una porta è bloccata è eseguire una scansione della porta dal computer client.

Esistono molti modi per eseguire una scansione delle porte, ma poiché hai menzionato di essere su Windows, suggerirò l'utilità della riga di comando di Microsoft PortQry e la versione grafica PortQryUI

Per testare tutte le porte aperte:

portqry.exe -n #.#.#.#   

Per testare una porta specifica:

portqry.exe -n #.#.#.# -e #

Ad esempio per testare l'interfaccia Web di un router in 192.168.1.1:

portqry.exe -n 192.168.1.1 -e 80

Che ritorna:

TCP port 80 (http service): LISTENING

Dove come ritorna su un computer locale senza HTTPD in esecuzione:

TCP port 80 (http service): NOT LISTENING

Utilizzando un'utilità PortScan otterrai uno dei 3 risultati.

  • Listening indica che il server è in ascolto sulla porta specificata
  • Filtered significa che ha ricevuto un TCP pacchetto di riconoscimento con il flag di reset impostato che probabilmente indica un firewall o un problema software
  • Not Listening significa che non ha ricevuto alcuna risposta

telnet è un'altra opzione della riga di comando che di solito è installata sul sistema operativo per impostazione predefinita. Questa utility da riga di comando può essere utilizzata in modo rapido per vedere se una porta risponde a una richiesta di rete.

Per usare telnet dovresti semplicemente emettere il seguente comando da un prompt dei comandi:

telnet localhost 3306

Il comando sopra dovrebbe darti una rapida indicazione se la porta 3306 su localhost sta rispondendo.

25
Tim Penner

Da PowerShell 4.0 puoi usare il comando Test-NetConnection

Se si desidera testare la porta 3306 come nell'esempio, il comando è

Test-NetConnection -ComputerName localhost -Port 3306

documentazione TechNet Test-NetConnection

21
Marcel Janus

Se è possibile telnet alla porta dal computer locale (utilizzando l'indirizzo IP esterno), ma non da un altro computer, viene bloccato da qualche parte tra di loro.

Nota che un firewall sul tuo computer locale potrebbe impedisce anche la prima azione.

5
Brent