【发布时间】:2017-04-15 12:10:51
【问题描述】:
我有兴趣连接到我在 Raspberry Pi 上的家庭网络中运行的 Web 服务器。我一直在阅读 STUN 服务器的工作原理,并收集它们确定面向外部的路由器用于将 HTTP 请求重定向回本地网络内的设备的端口。
我有一个外部网站,我在那里放了一个 php 文件来报告请求来自的 IP 和端口。我可以看到请求来自我家路由器的 IP,并且每个设备在发出请求时都使用一致的端口。
如果我们假设我的路由器的外部地址为 123.123.123.123,并且我的 Pi 分配了端口 50500 用于返回请求,我想我因此可以通过将这些组合为 http://123.123.123.123:50500 来访问我的 Pi 上的网站。但是,这不起作用。这应该工作吗?
(注意:端口转发不是一个选项,所以请不要建议)。
【问题讨论】:
-
不清楚。从您的问题中,您想要以何种方式连接到什么。我可以猜测,但如果你的问题不是那么模糊,那就更好了。如果您想从家庭网络外部发起到家庭网络内部 NAT 后面的 Raspberry Pi Web 服务器的连接,那么端口转发是您唯一的选择。为什么要排除?很高兴知道。
-
虽然我不明白“连接到 Web 服务器”是如何不清楚的,但我很乐意解释。这意味着对 Web 服务器进行 http 调用,通常通过端口 443 或端口 80。
-
端口转发不是一个选项,因为我的路由器不支持它,而且我希望这个解决方案对非技术用户来说很容易。例如,我可以将 liblinphone 作为 python 进程运行,并使用 SIP 电话通过 NAT 呼叫我的 Pi。那么,如果我知道 NAT 用来识别它的 IP 和端口,为什么我不能轻松地连接到 Pi 上的网站。
-
NAT 为与外部世界建立的每个新连接动态分配一个新的外部端口号,该连接是从本地网络中的计算机建立的。当你启动 liblinphone 时,它会连接到一个 SIP 代理,告诉它它的位置(IP 和端口),这样它就可以将呼叫路由到它。构建这样的代理可能非常复杂,用支持端口转发的更好模型替换路由器要容易得多。这样的路由器可能还支持 UPnP(通用即插即用)。请参阅:en.wikipedia.org/wiki/Universal_Plug_and_Play,但这也不完美。
-
您的回答没有帮助,只是分散注意力。这正是我说不建议端口转发的原因。我正在为非技术用户和所有硬件设计解决方案。