Come posso sapere se una porta è aperta o no?


22

Ho installato il server Apache sul mio computer con Windows 7. Sono stato in grado di visualizzare index.php predefinito digitando http: // localhost / nella riga dell'indirizzo del mio browser.

Tuttavia, non riesco ancora a vedere questa pagina digitando l'indirizzo IP del mio computer (né localmente (dallo stesso computer) né globalmente (da un altro computer connesso a Internet)).

Mi è stato detto che devo aprire la porta 80. L'ho fatto (in un modo descritto qui ) ma non ha risolto il problema.

Prima di tutto vorrei verificare quali porte sono aperte e quali no. Ad esempio, non sono sicuro che la mia porta 80 sia stata chiusa prima di provare ad aprire. Inoltre, non sono sicuro che sia stato aperto dopo aver provato ad aprirlo.

Ho provato a eseguire un web server molto semplice scritto in Python. Per questo ho usato la porta 81 e ha funzionato! E non ho provato ad aprire la porta 81. Quindi, è stato aperto per impostazione predefinita. Quindi, se 81 è aperto per impostazione predefinita, perché 80 non lo è? O lo è?

ULTERIORI INFORMAZIONI:
1. Nel mio file httpd.conf ho "Listen 80".
2. Questo sito mi dice che la porta 80 sul mio computer è aperta.
3. Ricevo risposte diverse se provo http: // myip: 80 e http: // myip: 81 . Nell'ultimo caso il browser (Chrome) mi scrive che il collegamento è interrotto. Nel primo caso ottengo: Proibito Non hai i permessi per accedere / su questo server.
4. IE scrive che "Il sito Web ha rifiutato di mostrare questa pagina Web".


3
Se il primo caso dice "Proibito", la directory principale o l'host virtuale non è impostata correttamente.
Urda,

Supponendo di essere dietro un router, hai impostato il port forwarding sul router? Il router (la maggior parte) probabilmente utilizza già la porta 80 per la propria interfaccia di amministrazione basata sul Web. In ogni caso, devi inoltrare le richieste al tuo indirizzo IP pubblico (il router) all'indirizzo IP locale del tuo computer, alla porta 80 (o qualsiasi altra cosa).
Jongosi,

Risposte:


16

Se stai semplicemente controllando le tue porte dall'esterno. Usa questo strumento:

http://www.yougetsignal.com/tools/open-ports/

Tenterà di connettersi al tuo indirizzo IP, sulla porta specifica, e ti farà sapere se è aperto o chiuso al mondo esterno.

Anche problemi locali? Sembra che il firewall di Windows 7 ti stia tagliando. Aggiungi un'eccezione con questo tutorial ...

http://www.sevenforums.com/tutorials/542-windows-firewall-add-remove-exception.html


Ho controllato le mie porte con yougetsignal.com/tools/open-ports . Questo sito scrive che la mia porta 80 è aperta (mentre 79 e 81 sono chiusi).
Romano,

Hai controllato le eccezioni di Windows 7 Firewall? Spiegherebbe perché puoi raggiungerlo tramite localhoste non da altri computer.
Urda,

Urda, ho aperto la porta 80 in questo modo maximumpcguides.com/windows-7/… . Quindi, dovrebbe essere aperto per tutti gli IP. Inoltre, il sito che mi dai dice che la porta 80 è aperta.
Romano,

1
Se il primo caso dice "Proibito", nella maggior parte dei casi la directory principale o l'host virtuale non è impostata correttamente. Si ottiene un collegamento interrotto perché 81 non si sta risolvendo.
Urda,

1
@Kirk è un ottimo sito dopo tutto!
Urda,

13

L'esecuzione netstat -a -no ss -a -nda un prompt dei comandi mostrerà tutte le connessioni di rete aperte e le porte di ascolto sul computer. 0.0.0.0:80significherebbe che sta ascoltando sulla porta 80di tutti gli indirizzi IP (localhost e i tuoi indirizzi IP pubblici / privati) dove 127.0.0.1:80vorrebbe dire che sta ascoltando solo su localhost. È possibile aggiungere -bal comando e mostrerà quale eseguibile sta usando quella porta. Puoi ottenere le stesse informazioni utilizzando Resource Monitor in Windows 7 nella sezione Porte di ascolto della scheda Rete.


5

Se vuoi vedere se è aperto da un altro server puoi semplicemente telnet serverName 80vedere se la sessione si apre. In caso contrario, il server non è in ascolto o la porta è bloccata da un firewall.

Se si apre e si chiude immediatamente, almeno Windows 2003, il software (come Exchange) potrebbe non essere configurato per l'ascolto su quella particolare interfaccia o IP, ma è in ascolto su altre porte. Ho visto IIS comportarsi in questo modo perché è stupido, Apache potrebbe non farlo.


2

Hai scritto:

Nel primo caso ottengo: Proibito Non hai i permessi per accedere / su questo server.

Anche se può sembrare strano, in realtà non hai problemi con le porte aperte (ma con la configurazione di Apache).

Quel messaggio "Proibito" proviene dal tuo server Apache; significa che il tuo server web è accessibile da Internet.

Devi configurare Apache per consentire la pubblicazione a tutti gli host, altrimenti otterranno la pagina "Proibita". IIRC, Apache è inizialmente impostato per consentire solo le richieste dal computer locale.

Da qualche parte nella tua configurazione di Apache, probabilmente c'è una sezione come questa (la directory effettiva potrebbe essere diversa):

<Directory "/home/piskvor/www">
    Allow from 127.0.0.1
    Deny from all
(...)

Se vuoi consentire a qualsiasi computer di vedere le tue pagine, devi cambiare Deny from allin Allow from all. Vedere la documentazione del modulo di accesso per ulteriori informazioni .


1

Per vedere le porte aperte, dovresti probabilmente usare nmap Hanno una versione di Windows: http://nmap.org/dist/nmap-5.21-setup.exe

Non è abbastanza se vedi la tua porta 80 aperta da localhost - forse qualcosa ti ostacola se provi da altrove, ecco perché consiglio nmap

Dal client si digita: nmap ip-of-your-server



0

Le porte del server possono essere associate a un singolo indirizzo IP o a tutti gli indirizzi IP disponibili. Sembra che l'installazione di Apache sia configurata per il bind solo a 127.0.0.1 e che sia necessario configurarla per il bind su *. Nel tuo httpd.conf (nella directory conf di Apache), cerca una linea simile Listen localhost:80e modificala in Listen 80.


1
Ho trovato il mio file httpd.conf. Nel file ho "Ascolta 80".
Romano,

0

telnet <host> <port>È tuo amico. Ha il pregio di essere installato praticamente su tutti i computer del mondo.

Modifiche dopo aver riletto la domanda:

Ecco alcuni suggerimenti diagnostici utili

  1. se riesci ad accedere al sito tramite localhost, ma non tramite il tuo IP locale (192.168. *) da altri host della tua rete, è probabilmente un problema del firewall di Windows.

  2. se puoi accedere al sito da altri computer locali, ma non da Internet al tuo IP pubblico, si tratta di un problema di configurazione del router / port forwarding.


0

Da un prompt dei comandi digitare:

netstat -ano, look for 0.0.0.0:80 

... o il tuo IP: 80. Questo ti dirà se la porta 80 è aperta sul tuo computer. Ora, se si desidera verificare e vedere se è possibile accedervi dall'esterno della rete, si determinerà se è presente una sorta di firewall. In tal caso, sarà necessario inoltrare la porta 80 al server Web.



-2

Nel comando DOS:

C:\Windows\system32>netstat -a -b

使用中連線

  協定   本機位址               外部位址               狀態
  TCP    0.0.0.0:80             801781-N1:0            LISTENING     [Skype.exe]
  TCP    0.0.0.0:135            801781-N1:0            LISTENING      RpcSs      [svchost.exe]
  TCP    0.0.0.0:443            801781-N1:0            LISTENING     [Skype.exe]
...
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.