如何确定端口是否打开?


22

我已经在Windows 7计算机上安装了Apache服务器。通过在浏览器的地址栏中输入http:// localhost /,我可以显示默认的index.php 。

但是,我仍然无法通过键入计算机的IP地址(本地(从同一台计算机)到全局(从连接到Internet的另一台计算机)到本地)来查看此页面。

有人告诉我我需要打开端口80。我这样做了(以此处描述的方式),但是它不能解决问题。

首先,我想检查哪些端口已打开,哪些未打开。例如,在尝试打开之前,我不确定端口80是否已关闭。我也不确定在尝试打开它之后是否将其打开。

我试图运行一个用Python编写的非常简单的Web服务器。为此,我使用了端口81,它起作用了!而且我没有尝试打开端口81。因此,默认情况下它是打开的。那么,如果默认打开81,为什么不打开80?还是它?

其他信息:
1.在我的httpd.conf文件中,我有“ Listen 80”。
2. 该站点告诉我计算机上的端口80已打开。
3.如果尝试使用http:// myip:80http:// myip:81,则会得到不同的响应。在最后一种情况下,浏览器(Chrome)告诉我该链接已损坏。在第一种情况下,我得到:禁止访问您无权访问此服务器上的/。
4. IE写道:“该网站拒绝显示此网页”。


3
如果第一种情况为“禁止”,则说明您的根目录或虚拟主机未正确设置。
Urda 2010年

假设您在路由器后面,是否已在路由器上设置端口转发?您的路由器(大多数)可能已经将端口80用于其自己的基于Web的管理界面。无论如何,您都需要在端口80(或其他任何端口)上将对您的公用IP地址(路由器)的请求转发到计算机的本地IP地址。
Jongosi 2015年

Answers:


16

如果您只是从外部进行端口检查。使用此工具:

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

它将尝试在特定端口上连接到您的IP地址,并让您知道它是否对外界开放。

也是本地问题?听起来Windows 7防火墙使您无法正常工作。在本教程中添加例外...

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


我使用yougetsignal.com/tools/open-ports检查了我的端口。该站点写道我的端口80已打开(而79和81已关闭)。
罗马2010年

您是否检查了Windows 7防火墙例外?它将解释为什么您可以通过localhost而不是从其他计算机访问它。
Urda 2010年

乌尔达(Urda),我以这种方式打开了端口80maximumpcguides.com/windows-7/…。因此,应该为所有IP打开它。此外,您给我的站点说端口80是开放的。
罗马2010年

1
如果第一种情况显示“禁止”,则在大多数情况下,您的根目录或虚拟主机未正确设置。由于81无法解析,因此链接断开。
Urda 2010年

1
@Kirk毕竟是一个很棒的网站!
Urda

13

运行netstat -a -nss -a -n从命令提示符运行将显示所有网络连接已打开以及计算机上的侦听端口。0.0.0.0:80表示它正在侦听80所有IP地址(本地主机和您的公共/私有IP地址)的端口,127.0.0.1:80这意味着它仅侦听localhost。您可以添加-b到命令,它将显示哪个可执行文件正在使用该端口。您可以使用Windows 7中“网络”选项卡的“侦听端口”部分下的资源监视器获取相同的信息。


5

如果要查看它是否已从另一台服务器打开,则可以telnet serverName 80查看会话是否打开。如果不是,则表明服务器未在侦听,或者端口被防火墙阻止。

如果至少在Windows 2003上打开然后立即关闭,则该软件(例如Exchange)可能未配置为在该特定接口或IP上侦听,但在其他端口上侦听。我已经看到IIS如此运行,因为它很愚蠢,而Apache可能不是。


2

你写了:

在第一种情况下,我得到:禁止访问您无权访问此服务器上的/。

尽管这听起来有些奇怪,但实际上开放端口并没有问题(但是Apache配置)。

该“禁止”消息来自您的Apache服务器。这意味着你的网络服务器从Internet访问。

您需要配置Apache以允许为所有主机提供服务-否则它们将显示“禁止”页面。IIRC,Apache最初设置为仅允许来自本地计算机的请求。

在Apache配置中的某处,可能会有这样的部分(实际目录可能不同):

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

如果要允许任何计算机查看页面,则需要将更Deny from all改为Allow from all有关更多信息,请参阅访问模块文档


1

要查看打开的端口,您可能应该使用nmap。它们具有Windows版本:http : //nmap.org/dist/nmap-5.21-setup.exe

如果您从本地主机打开端口80是不够的-如果您从其他地方尝试打开端口80可能会遇到阻碍,这就是为什么我建议nmap的原因

从客户端键入:nmap ip-of-your-server



0

服务器端口可以绑定到单个IP地址或每个可用IP地址。听起来您的Apache安装设置为仅绑定到127.0.0.1,并且需要将其设置为绑定到*。在您的httpd.conf(位于Apache的conf目录中)中,查找like Listen localhost:80并将其更改为Listen 80


1
我找到了我的httpd.conf文件。在文件中,我有“听80”。
罗马2010年

0

telnet <host> <port>是你的朋友。它的优点是可以安装在世界上几乎每台计算机上。

重新阅读问题后进行编辑:

以下是一些有用的诊断提示

  1. 如果您可以通过本地主机访问站点,但不能从网络上的其他主机通过站点本地IP(192.168。*)访问站点,则可能是Windows防火墙问题。

  2. 如果您可以从其他站点本地计算机访问站点,但不能从Internet访问公共IP,则可能是路由器/端口转发配置问题。


0

在命令提示符下键入:

netstat -ano, look for 0.0.0.0:80 

...或您的IP:80。这将告诉您端口80是否在您的计算机上打开。现在,如果您要检查并查看是否可以从网络外部访问它,则将确定您是否有适当的防火墙。如果这样做,则需要将端口80转发到Web服务器。


0

如果您使用的是Windows,请使用SysInternals TCPView。它可以告诉您哪个程序正在使用哪个端口。

屏幕截图


感谢Dio Phung。Windows实用程序确实很有帮助。

-2

在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]
...
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.