Como posso descobrir se uma porta está aberta ou não?

22

Eu instalei o servidor Apache no meu computador com Windows 7. Consegui exibir o index.php padrão digitando http: // localhost / na linha de endereço do meu navegador.

No entanto, ainda não consigo visualizar esta página digitando o endereço IP do meu computador (nem localmente (do mesmo computador) nem globalmente (de outro computador conectado à Internet)).

Foi-me dito que eu precisava abrir a porta 80. Fiz isso (da maneira descrita aqui ), mas não resolveu o problema.

Antes de mais, gostaria de verificar quais portas estão abertas e quais não. Por exemplo, não tenho certeza de que minha porta 80 foi fechada antes de tentar abrir. Também não tenho certeza de que ele foi aberto depois que tentei abri-lo.

Eu tentei rodar um servidor web muito simples escrito em Python. Por isso usei a porta 81 e funcionou! E eu não tentei abrir a porta 81. Portanto, ela foi aberta por padrão. Então, se 81 é aberto por padrão, por que 80 não é? Ou é?

INFORMAÇÕES ADICIONAIS:
1. No meu arquivo httpd.conf, tenho "Listen 80".
2. Este site informa que a porta 80 do meu computador está aberta.
3. Recebo respostas diferentes se eu tentar http: // myip: 80 e http: // myip: 81 . No último caso, o navegador (Chrome) me escreve que o link está quebrado. No primeiro caso, recebo: Proibido Você não tem permissão para acessar / neste servidor.
4. O IE escreve que "o site se recusou a mostrar esta página da web".

romano
fonte
3
Se o primeiro caso indicar "Proibido", o diretório raiz ou o host virtual não está configurado corretamente.
Urda
Supondo que você esteja atrás de um roteador, você configurou o encaminhamento de porta no roteador? Seu roteador (a maioria) provavelmente já usa a porta 80 para sua própria interface de administração baseada na web. De qualquer forma, você precisa encaminhar solicitações para o seu endereço IP público (o roteador) para o endereço IP local do seu computador, na porta 80 (ou o que for).
Jongosi

Respostas:

16

Se você está apenas verificando suas portas pelo lado de fora. Use esta ferramenta:

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

Ele tentará se conectar ao seu endereço IP, na porta específica, e informar se está aberto ou fechado para o mundo externo.

Questões locais também? Parece que o firewall do Windows 7 está cortando você. Adicione uma exceção neste tutorial ...

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

Urda
fonte
Eu verifiquei minhas portas com o yougetsignal.com/tools/open-ports . Este site escreve que minha porta 80 está aberta (enquanto 79 e 81 estão fechadas).
Roman
Você verificou suas exceções do Firewall do Windows 7? Isso explicaria por que você pode acessá-lo via localhoste não a partir de outros computadores.
Urda
Urda, eu abri a porta 80 dessa maneira maximumpcguides.com/windows-7/… . Portanto, ele deve ser aberto para todos os IPs. Além disso, o site que você me deu diz que a porta 80 está aberta.
Roman
1
Se o primeiro caso indicar "Proibido", o diretório raiz ou o host virtual não estará configurado corretamente na maioria dos casos. Você tem um link quebrado porque 81 não está resolvendo.
Urda
1
@Kirk é um ótimo site, afinal!
Urda
13

A execução netstat -a -nou ss -a -nem um prompt de comando mostrará todas as conexões de rede abertas e as portas de escuta em sua máquina. 0.0.0.0:80significaria que ele está escutando na porta 80de todos os endereços IP (localhost e seus endereços IP públicos / privados) onde, como 127.0.0.1:80significaria, está apenas escutando no localhost. Você pode adicionar -bao comando e ele mostrará qual executável está usando essa porta. Você pode obter as mesmas informações usando o Monitor de Recursos no Windows 7 na seção Portas de escuta da guia Rede.

Greg Bray
fonte
5

Se você quiser ver se está aberto em outro servidor, pode apenas telnet serverName 80ver se a sessão é aberta. Caso contrário, o servidor não está escutando ou a porta está bloqueada por um firewall.

Se ele abrir e fechar imediatamente, pelo menos no Windows 2003, o software (como o Exchange) pode não estar configurado para escutar nessa interface ou IP específico, mas está escutando em outras portas. Vi o IIS se comportar dessa maneira porque é estúpido, o Apache pode não.

Kyle Brandt
fonte
2

Você escreveu:

No primeiro caso, recebo: Proibido Você não tem permissão para acessar / neste servidor.

Embora isso possa parecer estranho, na verdade você não tem problemas com portas abertas (mas com a configuração do Apache).

Essa mensagem "Proibida" vem do seu servidor Apache; isso significa que seu servidor da web está acessível na Internet.

Você precisa configurar o Apache para permitir a veiculação em todos os hosts - caso contrário, eles receberão a página "Proibida". IIRC, o Apache é configurado inicialmente para permitir apenas solicitações do computador local.

Em algum lugar da sua configuração do Apache, provavelmente há uma seção como esta (o diretório real pode ser diferente):

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

Se você deseja permitir que qualquer computador veja suas páginas, é necessário alterar Deny from allpara Allow from all. Consulte a documentação do módulo de acesso para obter mais informações .

Piskvor
fonte
1

Para ver portas abertas, você provavelmente deve usar o nmap. Eles têm uma versão do Windows: http://nmap.org/dist/nmap-5.21-setup.exe

Não é suficiente se você vir a porta 80 aberta do host local - talvez algo que atrapalhe se você tentar de outro lugar, é por isso que recomendo o nmap

No cliente, você digita: nmap ip-of-your-server

raerek
fonte
1

Se você quiser testar isso em sua rede local, vá para o download nmap Se você quiser ver o clima, a porta está acessível para o mundo exterior, faça uma varredura em https://www.grc.com/x/ne.dll?bh0bkyd2

Jared
fonte
0

As portas do servidor podem ser vinculadas a um único endereço IP ou a todos os endereços IP disponíveis. Parece que sua instalação do Apache está configurada para ligar apenas ao 127.0.0.1, e você precisa configurá-lo para ligar ao *. No seu httpd.conf (no diretório conf do Apache), procure uma linha como Listen localhost:80e mude para Listen 80.

Andrew Aylett
fonte
1
Encontrei meu arquivo httpd.conf. No arquivo eu tenho "Listen 80".
Roman
0

telnet <host> <port>é seu amigo. Ele tem a virtude de ser instalado em praticamente todos os computadores do mundo.

Edita após reler a pergunta:

Aqui estão algumas dicas úteis de diagnóstico

  1. se você pode acessar o site via host local, mas não pelo IP local do site (192.168. *) de outros hosts da sua rede, provavelmente é um problema de firewall do Windows.

  2. se você pode acessar o site de outras máquinas locais, mas não da Internet para o seu IP público, é um problema de configuração do roteador / encaminhamento de porta.

jdizzle
fonte
0

Em um prompt de comandos, digite:

netstat -ano, look for 0.0.0.0:80 

... ou seu IP: 80. Isso informará se a porta 80 está aberta em sua máquina. Agora, se você quiser verificar e ver se pode acessá-lo de fora da sua rede, determinará se você possui algum tipo de firewall. Se o fizer, será necessário encaminhar a porta 80 para o servidor da web.

Jason H
fonte
0

Se você estiver no Windows, use o SysInternals TCPView . Pode dizer qual programa está usando qual porta.

Screenshto

Dio Phung
fonte
Obrigado Dio Phung. Esse utilitário do Windows é realmente útil.
-2

No comando do 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]
...
Chi-Ming Tsai
fonte