所以我有一台服务器。 它正在运行。 它可以被代理服务器访问。 问题是 – 服务器可以通过其全球名称访问本地networking,不能通过该名称访问内部…
我使用Windows NAT Traversal API(UPnP)使我的服务器可以远离本地networking…
如何使它在本地networking中的计算机可用acsess我的服务器使用不localIP地址?
长篇故事与细节:
在本地机器上,我有一个服务器( VLC例如从我的webCamera广播现场video数据到一些套接字),我可以在127.0.0.1:5281(回送)和我的本地networking上访问它(我有ADSL路由器4个以太网端口+ wify)到192.168.1.13:5281 – 我的地址在路由器创build的本地networking上。
我使用免费的开源程序像这样转发(绑定)我的端口4773使用UPnP我的外部IP地址97.132.48.111(例如)作为端口33333所以现在任何一个(互联网用户,代理服务器等)有权访问直播到像97.132.48.111:33333的url
但是我或者我的本地networking用户(我的地址是192.168.1.13)不能使用97.132.48.111:33333访问我的stream,只能使用192.168.1.13:5281
我的问题是为什么我无法使用全局地址从我的stream中获取数据,对于我和我本地networking中的人员使用全局地址获取stream数据是否可能(以及如何)?
所以正如我所说的,我使用了一个使用协议请求(UPnP)来转发端口的程序。 我可以configuration(至less在理论上)我的路由器使用像UPnP这样的协议,使我的路由器\ nat聪明? 有没有这样的协议?
所以对我来说主要的一点是要尽可能使用使用开放协议的程序,因为我是一个程序员,我的观点是创build一个程序,让ADSL用户打开他们的服务器,并以我描述的方式我的问题 – 由全球地址(这btw可以是临时的 – 我有一个临时的)=)
至于现在我在我的程序中使用UPnP库来转发端口。 现在我需要一些协议来configuration路由器,使其更智能。 有人知道吗?
不幸的是,你的问题缺乏细节,但是如果我查看一下我的水晶球,就可以知道你的networking上有一个networking服务器托pipe在NAT中,并且你有DNS服务器的公共IP地址。
您可能需要设置设置分割视图DNS。 这意味着您需要为内部IP提供服务,以响应NAT内部主机的DNS请求,并将外部地址发送给外部主机。
Zoredache有正确的想法。 问题在于NAT如何工作。 没有做任何特别的事情,并且使用一个不智能的NAT网关,这就是你的数据包所发生的事情。
你有两个select。 第一个是像Zoredache指出的那样,创build一个水平分割的DNS(内部用户看到一组DNS项,外部用户看到另一个)。 这样,同一个名字就可以根据你的位置指向两个不同的IP地址。
解决这个问题的第二种方法是使用足够聪明的NAT网关来识别这个特定的路由。 而不是盲目转发192.168.1.30的数据包,它会重写它,所以源是网关本身。 这被称为Source-NAT(根据谁在卖盒子可以被称为许多其他东西)。 这反转了NAT,所以它是被重写的源,而不是目的地。
第一种方法是build立最便宜的,因为你可以在内部运行你自己的DNS服务器,其余的只是configuration各种types的变化。 第二个将花费金钱,但应该只是工作,如果你到位。