在NAT后面实现restful Web服务

implement restful webservice behind NAT

本文关键字:restful Web 服务 实现 NAT      更新时间:2023-10-16

据我所知,在NAT后面的设备上实现rest Web服务是不可能的。所以我一直在寻找一些解决方案。

是否可以使用long polling来实现Web服务?这样,本地设备将调用远程客户端(这正是我想要的),客户端必须保持连接打开(保持活动?),直到客户端想要调用webservice方法。它可以这样做,因为连接仍然打开。呼叫后,客户端将立即向客户端发送另一个轮询。。。等有可能以这种方式实施吗?

我遇到的另一个解决方案:

ReverseHTTP-我对此不太了解,但听起来我可以用它实现Web服务。正确的

还有其他几种解决方案,如TURN或STUN,但它们似乎非常复杂。

你有什么建议吗?我在网络设备上使用c++/linux。

编辑:端口转发不是一个选项。

这个问题中有很多不同的概念。您当然可以在防火墙/NAT后面实现RESTful服务。。。您只需要配置防火墙/NAT即可将连接转发到您的服务。存在防火墙/NAT设备超时连接的问题。。。在这里,你可以再次配置你的设备不这样做,或者你可以用某种"保持活力"来更新你的通信机制。"长轮询"在某种程度上是不相关的,它被用作从服务器获得"交互式响应"的一种方式。。。基本上,服务器会处理来自客户端的轮询请求,直到它有东西可以响应,或者请求超时,客户端发出另一个请求。STUN和TURN是更多与语音/视频通信相关的技术。我建议从简单地让你的防火墙/NAT设备将基于网络的请求转发到你的网络服务器开始。

您没有说明您使用的传输协议,我假设是HTTP。

HTTP使用TCP/IP,因此您的设备NAT需要将连接请求重定向到服务器。

还有其他方法,比如如果你有多个互联网IP地址,那么请求也可以指向服务器,但这比端口转发更复杂,所以我认为这不是你所拥有的。

因此,基本上您需要配置端口转发。就像PABX一样,从外线打来的电话需要知道一个ramal才能接通电话,这是一个遥远的想法。

如前所述,你所说的建议并不是为了这个目的,主要是为了客户端连接,对于许多NAT来说,这是不必要的,因为NAT已经做好了这样做的准备。