我有一个情况,我有一个小型服务器设备,我希望人们能够插入到他们的路由器,打开它,让它工作。 当设备启动时,它确定它的局域网地址,例如:192.168.1.4及其公共地址,比如4.3.2.1。 然后它build立一个监听端口3000的守护进程。然后我将从这个主机发送消息到那个端口。
我的问题是:可以这样做,而不需要用户在其路由器上configuration端口转发。 他们可能在路由器后面有N台计算机,但是该设备是唯一一个将在此端口上监听的设备。
理论上讲,你可以使用一种叫做“即插即用”(UPnP)的方法来实现这一点。 实际上,在大多数设备上(包括家庭路由器),默认情况下都是closures的,大部分有能力的networkingpipe理员都是这样。
您可能需要您的设备在您控制的networking上轮询命令和控制服务,或者在您控制的networking上设置代理服务,以便设备可以自动创buildvpn /代理连接,以便您可以打开在适当的端口上转发stream量。
首先,您的设备需要支持IPv6。 今天可能只有一小部分IPv6用户。 但是,如果您希望这些设备在被滥用之前使用五年,那么您可以期望它们在使用期限内处理比IPv4stream量更多的IPv6stream量。
任何真正的解决scheme都涉及到IPv6。 其他一切只是一个解决方法。
我可以为您提供的两种解决方法是UPnP(如Joel的答案中提到的)和IPv6隧道。
IPv6隧道既可以通过您所托pipe的服务(如果您想要控制可靠性)发送所有stream量,也可以使用Teredo协议和第三方中继(但Teredo中继的可用性非常差)。
如果您确实通过您托pipe的服务运行stream量,则该服务可以执行其他操作,而不仅仅是隧道。 例如,如果stream量是HTTP,则将基于名称的代理添加到托pipe服务可能会带来巨大优势。