路由和远程访问端口映射不适用于本地主机

我已经设置了路由和远程访问(Windows Server 2003)将publicip:80转发到专用内部networking上的服务器,这很好。 从互联网到端口80的传入请求被正确地转发到我们的内部Web服务器,一切都很好。

但是, 服务器本身的请求不会被转发。 也就是说,如果我打开一个控制台窗口并在服务器上input“telnet publicip 80”,则请求不会被转发到私有服务器。

我明白,在RRAS中,我已经将公共接口上的端口80映射到私有服务器,这就是为什么它不工作; 但我不知道如何configuration它,以便来自本地PC的请求也被转发到私有服务器。

我很感谢在这个问题上的任何帮助或反馈。

谢谢!

你在找什么叫做“发夹NAT”,微软的NAT实现似乎不支持它。 没有穿越NAT接口的数据包不能使用NAT(即从私有接口或本地接口发送到私有接口)。

微软的文档不是特别清楚(至less我曾经能够find),但RRAS显然不表示支持发夹式NAT。

您至less可以通过在本地DNS服务器中为公用名称创build一个DNS区域,并引用私有IP地址来达到相同的效果。 (因此,如果您的网站是“www.mydomain.com”,请创build一个DNS区域“www.mydomain.com”,其中包含一个空白的“A”logging,指的是Web服务器的私有IP地址。

你唯一的select是切换到一个NAT实现,如Linux iptables,它支持发夹式NAT。

我已经通过使用'netsh接口portproxy'解决了它的详细信息在http://technet.microsoft.com/en-us/library/cc776297(WS.10).aspx

这不能像RRAS那样在networking层解决它,但是它解决了这个问题,而不需要使用第三方软件。 由于只有本地主机将通过RRASfilter,所以在软件层解决这个问题不是问题。

其他选项。 如果按名称访问,则可以在RRAS服务器上的本地主机文件中input一个条目,将名称指向interal ip。 如果您正在通过IP访问,您应该能够放置一条静态路由,表示路由通过私人信息传播。 在privateip的服务器应该看到数据包说“嘿,这就是我”,并适当地处理它,虽然你可能需要一个路由在另一端取回数据包取决于您的networking设置。