如何从Internet访问本地网络中的服务器

假设我有一个服务器应用程序,它在计算机上工作,没有直接连接到互联网,但是有路由器,所以问题是如何从不在内部网络(从互联网)内的另一台计算机连接到该服务器?

据我所知,管理员可以配置路由器将指定的端口请求重定向到该计算机,但我可以自动执行此操作吗?

我正在使用WCF和C#

如果路由器支持uPnP ,并且服务器应用程序请求它,则路由器可以代表服务器应用程序打开端口。

这真的只适用于消费级路由器,因为任何理智的管理员都会在真实的网络上关闭它。

编辑

在这里和这里有一些用于在C#中启用uPnP的代码。

另一种方法是在互联网上的知名位置安装服务器。 防火墙后面的应用程序创建与Internet服务器的持久连接。 然后,用户连接到互联网服务器,互联网服务器将数据包中继到防火墙应用程序。 像teamviewer这样的程序使用这种方法来绕过NAT。

端口转发和NAT必须在路由器上完成,你不能从给定的本地机器劫持该设置,这将导致圣经比例的利用。

不可以。您的网络应配置为在Internet上托管服务器或服务。 使用网络地址转换,端口地址转换或DMZ将是最好的方法。

管理员可以配置路由器将指定的端口请求重定向到该计算机

我认为那是你的答案。 如果内部允许您连接到它的东西(即已连接到互联网的东西)也允许您执行此类配置,则可以从外部(互联网)执行此类配置。 但考虑到离开一些没有互联网连接的计算机的全部意义,这确实是一个奇怪的设置。

对于我怀疑的头脑,这听起来更像是想要闯入,而不是想要做一些允许的事情。 对于后者,已经给出的答案非常好。 🙂