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?
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:
Supponendo che sia una porta TCP (anziché UDP) che stai tentando di utilizzare:
Sul server stesso, utilizzare netstat -an
per verificare quali porte sono in ascolto.
Dall'esterno, basta usare telnet host port
(o telnet host:port
sui sistemi Unix) per vedere se la connessione viene rifiutata, accettata o timeout.
In quest'ultimo test, quindi in generale:
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 controllo → Programmi → Attiva o disattiva Funzionalità Windows . Nell'elenco, scorrere verso il basso e selezionare Telnet Client e fare clic OK.
Could not open connection to the host, on port *x*: Connect failed
indica?
telnet api-3t.sandbox.paypal.com 443
ricevo 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?
o host port
vs riga di comando aperta (cmd.exe) e quindi si digitatelnet host port
Su Windows puoi usare
netstat -na | find "your_port"
restringere i risultati. È inoltre possibile filtrare per LISTENING
, ESTABLISHED
, TCP
e così via. La mente è sensibile al maiuscolo / minuscolo però.
find
non ha funzionato in Windows 10 per me, ma netstat -na | findstr "8080"
ha lavorato
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:
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).
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
portqry -n 11.22.33.44 -p udp -e 19132
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.
netstat -an | find "8080"
no such file named "8080"
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 ...
Su Windows Server puoi usare
netstat -an | where{$_.Contains("Yourport")}
Anche PsPing di Sysinternals è molto buono.
Un'altra utilità che ho trovato ed è buona e piccola, è PortQry Command Line Port Scanner versione 2.0 .
Puoi eseguire il ping di un server e una porta e ti dirà lo stato della porta. Esiste un'utilità della riga di comando e un'interfaccia utente.