Come posso determinare se una porta è aperta su un server Windows? [chiuso]


478

Sto cercando di installare un sito su una porta alternativa su un server, ma la porta potrebbe essere chiusa da un firewall. C'è un modo per eseguire il ping out o in, su una porta specifica, per vedere se è aperto?


Risposte:


732

Supponendo che sia una porta TCP (anziché UDP) che stai tentando di utilizzare:

  1. Sul server stesso, utilizzare netstat -anper verificare quali porte sono in ascolto.

  2. Dall'esterno, basta usare telnet host port(o telnet host:portsui sistemi Unix) per vedere se la connessione viene rifiutata, accettata o timeout.

In quest'ultimo test, quindi in generale:

  • connessione rifiutata significa che nulla è in esecuzione su quella porta
  • accettato significa che qualcosa è in esecuzione su quella porta
  • il timeout indica che un firewall sta bloccando l'accesso

Su Windows 7 o Windows Vista l'opzione predefinita 'telnet' non è riconosciuta come comando interno o esterno, programma eseguibile o file batch. Per risolverlo, basta abilitarlo: fare clic su * Start ** → Pannello di controlloProgrammiAttiva o disattiva Funzionalità Windows . Nell'elenco, scorrere verso il basso e selezionare Telnet Client e fare clic OK.


312
In Win7 o Vista l'opzione "telnet" non è riconosciuta come comando interno o esterno, programma eseguibile o file batch. Per risolvere questo problema, abilitalo: fai clic su Start, Pannello di controllo, Programmi, quindi Attiva o disattiva Funzionalità Windows. Nell'elenco, scorrere verso il basso e selezionare Telnet Client e fare clic su OK
volody

12
@PankajKohli usa invece il client telnet PuTTy . Non ha bisogno di essere installato.
Colin Pickard,

52
Cosa Could not open connection to the host, on port *x*: Connect failedindica?
Kenny Evitt,

2
@Alnitak Volevo solo controllare perché penso che questo risponda già alla mia domanda. Quando faccio telnet api-3t.sandbox.paypal.com 443ricevo Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedÈ questo perché il firewall sta bloccando?
Popeye,

2
c'è una differenza se si apre telnet.exe e quindi si digita o host portvs riga di comando aperta (cmd.exe) e quindi si digitatelnet host port
Pawel Cioch

185

Su Windows puoi usare

netstat -na | find "your_port"

restringere i risultati. È inoltre possibile filtrare per LISTENING, ESTABLISHED, TCPe così via. La mente è sensibile al maiuscolo / minuscolo però.


4
non puoi usare find in questo modo, cercherà i file, dovresti usare grep
Moataz Elmasry

38
@MoatazElmasry, questo è vero su Linux, ma questo è su un server Windows, dove find è il comando corretto. Grep non è disponibile su Windows. Ho appena eseguito il comando esatto menzionato qui e ha funzionato perfettamente.
Ben Wyatt,

4
Quando ho usato quel comando, cioè netstat -an | trova "19345", non ho ottenuto alcun risultato. cosa significa?
nanosoft,

14
findnon ha funzionato in Windows 10 per me, ma netstat -na | findstr "8080"ha lavorato
Arun

6
non succede nulla, non con find o findstr
utileBee

85

Se esegui il controllo dall'esterno, non dal server stesso e non vuoi preoccuparti di installare Telnet (poiché non viene fornito con le ultime versioni di Windows) o qualsiasi altro software, allora hai PowerShell nativo:

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed

(Purtroppo questo funziona solo con PowerShell 4.0 o versioni successive. Per verificare la versione di PowerShell, digitare $PSVersionTable .)

PS: Nota, in questi giorni ci sono alcune affermazioni su Twitter che suggeriscono che questa risposta potrebbe essere migliorata citando "Test-Connection" da PowerShell Core o il collegamento "tnc". Vedi https://twitter.com/david_obrien/status/1214082339203993600 e aiutami a modificare questa risposta per migliorarla, per favore!


(Se hai una PSVersion <4.0, sei sfortunato. Controlla questa tabella:

Inserisci qui la descrizione dell'immagine

Anche se puoi aggiornare la tua versione di PowerShell installando Windows Management Framework 4.0 , non ha funzionato per me, il cmdlet Test-NetConnection non è ancora disponibile).


3
Questa è la risposta migliore L'installazione di telnet non è sempre diretta sui server di altre persone!
TrojanName

Sicuramente deve essere la risposta migliore.
QtRoS

1
Questa è un'opzione più affidabile rispetto a telnet, telnet si limiterebbe a non segnalare nulla mentre segnala che la porta è disponibile nel mio caso.
axk,

42

Su un computer Windows è possibile utilizzare PortQry di Microsoft per verificare se un'applicazione è già in ascolto su una porta specifica utilizzando il comando seguente:

portqry -n 11.22.33.44 -p tcp -e 80

4
Le porte firewall vengono generalmente visualizzate come "FILTRATE".
dlanod,

Puoi usare questo strumento anche per controllare la porta UDP:portqry -n 11.22.33.44 -p udp -e 19132
Antony,

41

Mi è piaciuto quello:

netstat -an | find "8080" 

da telnet

telnet 192.168.100.132 8080

E assicurati solo che il firewall sia spento su quella macchina.


Quando ho usato quel comando, ad esempio netstat -an | trova "19345", non ho ottenuto alcun risultato. cosa significa? -
nanosoft,

2
significa che questa porta è libera
Sarvar Nishonboev il

Quando netstat -an | find "8080"no such file named "8080"
eseguo

24

Se telnetnon è disponibile, scaricare PuTTY . È un client Telnet, SSH, ecc. Di gran lunga superiore e sarà utile in molte situazioni, non solo in questo, specialmente se stai amministrando un server.


Sì, ma non per incollare il codice Forth, diciamo, con AmForth (a meno che non usi PuTTY in combinazione con Modifica overflow ).
Peter Mortensen,


12

Usa questo se vuoi vedere tutte le porte usate e in ascolto su un server Windows:

netstat -an |find /i "listening"

Vedi tutte le porte aperte, in ascolto e stabilite:

netstat -a




1

Ecco cosa ha funzionato per me:

  • Apri un prompt dei comandi
  • genere telnet
  • Microsoft Telnet> apri <nome host o indirizzo IP> <spazio> <porta>

Confermerà se la porta è aperta.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.