如何使IIS在路由器后面的网络外部正常工作并可以访问?[关闭]


9

我的机器正在运行Windows 7 Ultimate。到目前为止,这是我已成功完成的操作:

  1. 通过FastCGI用PHP安装IIS 7.5
  2. 得到它的工作!当我转到http://localhost/index.php时,我的PHP脚本运行良好。
  3. 运行ipconfig找出我的本地IP地址是192.168.1.102。我确认http://192.168.1.102/index.php的功能与上面的localhost地址完全相同。
  4. 进入路由器管理(我有Linksys WRT54G2)并在端口80上设置端口转发到192.168.1.102。现在端口80正在转发到我的机器。
  5. 在Windows防火墙中设置入站规则,以允许端口80上的所有活动。
  6. 找出我的外部IP地址来自Google。我们称它为XXX.XX.XX.XX。

但是,当我尝试从自己的计算机或远离网络但不在网络上的计算机访问http://XXX.XX.XX.XX/index.php时,无论哪种方式……我一无所获。它尝试连接一段时间(不成功),但最终只是放弃了。

这是我想知道的:

  1. 我想念什么?我忘记/忽略了什么?我如何才能在我自己的本地网络之外工作并访问它?
  2. 假设我确实可以正常工作,那么我该如何使用端口80以外的端口?为了使之成为可能,我需要进行哪些更改(例如IIS,Windows防火墙,路由器管理等)?

首先十分感谢!


1
在这里查看您的端口是否成功转发yougetsignal.com/tools/open-ports
smohamed 2012年

Answers:


5

这听起来像您遇到的HTTP.SYS问题。

下面是Scott Hanselman博客的摘录,描述了如何在localhost之外公开IISExpress。博客文章更长,还描述了如何全部连接SSL。但是我相信我从他的帖子中拉出的下面发布的命令将帮助您解决遇到的问题。

首先,我们需要在内核级别告诉HTTP.SYS,可以通过进行“ URL保留”使每个人都可以与该URL进行通信。在管理命令提示符下:

netsh http add urlacl url=http://<LocalComputerName>:80/ user=everyone

接下来,由于我希望能够从外部(网络上的人们等,而不仅仅是本地主机)与IIS Express通讯,因此我需要允许Windows Express通过Windows防火墙。我可以从Windows以图形方式执行此操作,或键入:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

由于您声明已经创建了防火墙规则,因此可能不需要最后一条命令。


我运行了第一个netsh命令来添加URL保留,但这没有做任何事情(仍在本地运行,但不在我的网络外部)。还有其他想法吗?
soapergem

这看起来不对。您不需要弄乱http.sys即可获得端口转发的实际IIS 7.5实例(不是IIS Express)。
TristanK '02

2
  1. (从网络外部进行访问)许多住宅ISP(和某些商业ISP)将阻止某些服务端口(例如端口80或25)上的入站流量。这通常是由于带宽使用而使您无法在住宅线路上运行商业服务。另一种方法是在另一个端口上运行它(见下文)。

  2. (从网络内部访问)您描述的情况听起来像发夹式NAT。这是Hairpin NAT的高级概述。您将需要向路由器添加NAT规则,以始终使发往外部IP的流量流经您的路由器,而不是直接在网络内部的主机之间通过端口80。注意:您的路由器实际上可能无法执行此操作。

  3. 在IIS中更改端口绑定,然后重新启动网站。


我添加了对IIS的绑定,使其可以在端口8080上运行,再次,它确实在本地运行。因此192.168.1.102:8080/index.php可以正常工作。我还在端口8080的Windows防火墙中添加了入站规则,但是它在我的网络之外仍然无法正常工作。我考虑将NAT规则添加到我的Linksys WRT54G2路由器中,我在网上找到的帮助说这将涉及设置其“端口触发”选项。我设置好了,但仍然...没有骰子。还有其他建议吗?
soapergem

1
如果您可以在内部访问它,那么Windows防火墙不是您的问题。端口触发不是您想要的。您将使用端口转发(如果您的路由器支持的话)。将路由器外部接口上的端口8080上的流量转发至192.168.1.102:8080
Joel E Salas

在我问这个问题之前,我已经在做(端口80和8080上的端口转发)。显然,我仍然缺少一些东西。
soapergem

路由器是否有任何实际的防火墙规则(除了NAT规则)可能会阻止流量?如果有可能,请设置一个运行pfSense的盒子以用作调试目的的路由器。您的路由器(不是为托管服务而设计的)几乎肯定是造成您麻烦的原因。
乔尔·萨拉斯

看来您在IIS级别上没有做错任何事情,只是路由器不直观/您的ISP阻止了您。您认为您的IP也可能是双重间接的;检查路由器对外部IP是什么的想法。
TristanK '02

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.