Come determinare se una porta è aperta su un server Windows?
-
07-07-2019 - |
Domanda
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?
Soluzione
Supponendo che sia una porta TCP (anziché UDP) che stai tentando di usare:
-
Sul server stesso, utilizzare
netstat -an
per verificare quali porte sono in ascolto -
Dall'esterno, solo
telnet host port
(otelnet host:port
su sistemi Unix) per vedere se la connessione viene rifiutata, accettata o timeout
In quest'ultimo test, quindi in generale:
- connessione rifiutata significa che non è in esecuzione nulla su quella porta
- accettato significa che qualcosa è in esecuzione su quella porta
- timeout indica che un firewall sta bloccando l'accesso
Su Win7 o Vista l'opzione di default "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
Altri suggerimenti
Volevo solo aggiungere che su Windows puoi usare
netstat -na | find "your_port"
per restringere i risultati. Puoi anche filtrare per LISTENING
, ESTABLISHED
, TCP
e simili. Tuttavia, è sensibile al maiuscolo / minuscolo.
Se stai controllando 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
(Sfortunatamente questo funziona solo con PowerShell 4.0 o versioni successive. Per controllare la tua versione PS, digita $PSVersionTable
.)
(Se hai una PSVersion < 4.0, sei sfortunato. Controlla questa tabella:
Anche se puoi aggiornare la tua versione di PowerShell installando Windows Management Framework 4.0 , non ha funzionato per me, Test-NetConnection il cmdlet non è ancora disponibile).
Su un computer Windows è possibile utilizzare PortQry da Microsoft per verificare se un'applicazione è già in ascolto su una porta specifica utilizzando il seguente comando:
portqry -n 11.22.33.44 -p tcp -e 80
Mi è piaciuto:
netstat -an | find "8080"
da telnet
telnet 192.168.100.132 8080
E assicurati solo che il firewall sia spento su quella macchina.
Se telnet non è 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.
Vuoi uno strumento per farlo? C'è un sito web all'indirizzo http://www.canyouseeme.org/ . Altrimenti, è necessario qualche altro server per richiamarti per vedere se una porta è aperta ...
Usalo se vuoi vedere tutte le porte usate e in ascolto sul server Windows:
netstat -an |find /i "listening"
Vedi tutte le porte aperte, in ascolto e stabilite:
netstat -a
Su Windows Server puoi usare
netstat -an | where{$_.Contains("Yourport")}
anche psping da Sysinternals è molto buono
Penso che il migliore che ho ottenuto sia questo dove puoi controllare le tue porte e anche quelle di altri domini.
Ecco cosa ha funzionato per me
- apri il prompt dei comandi
- tipo telnet
- Microsoft Telnet > apri
Confermerà se la porta è aperta.
Altra utilità che ho trovato ed è buona e piccola, PortQry Command Line Port Scanner Versione 2.0 https://www.microsoft.com/en-us/download /details.aspx?id=17148
puoi eseguire il ping di un server e una porta e ti dirà lo stato della porta, c'è un'utilità da riga di comando e un'interfaccia utente per essa.