C# 如何从internet访问本地网络中的服务器

C# 如何从internet访问本地网络中的服务器,c#,wcf,networking,C#,Wcf,Networking,假设我有一个服务器应用程序,它在没有直接连接到internet的计算机上工作,但使用路由器,所以问题是如何从内部网络以外的另一台计算机(从internet)连接到该服务器 据我所知,管理员可以将路由器配置为将指定的端口请求重定向到该计算机,但我可以自动执行此操作吗 我使用的是WCF和C#端口转发和NAT必须在路由器上完成,你不能从给定的本地机器上劫持该设置,这将导致利用圣经中的比例。不。你的网络应该配置为在Internet上承载服务器或服务。利用网络地址转换、端口地址转换或DMZ将是最好的方法

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

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


我使用的是WCF和C#

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

不。你的网络应该配置为在Internet上承载服务器或服务。利用网络地址转换、端口地址转换或DMZ将是最好的方法

管理员可以将路由器配置为 将指定的端口请求重定向到 那台电脑

我想这就是你的答案。如果内部允许您连接的东西(即已连接到internet的东西)也允许您执行此类配置,则可以从外部(internet)执行此类配置。但考虑到让某些计算机无法连接互联网的整个意义,这确实是一个奇怪的设置

在我怀疑的头脑中,这听起来更像是想闯入,而不是想做自己被允许做的事情。对于后者,已经给出的答案相当不错

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

这实际上只适用于消费者级路由器,因为任何理智的管理员都会在真正的网络上关闭这一功能

编辑

有一些代码用于在C#和中启用uPnP

另一种选择是在互联网上一个众所周知的位置安装一台服务器。防火墙后面的应用程序创建到internet服务器的持久连接。
然后,用户连接到internet服务器,该服务器将数据包中继到防火墙应用程序。像这样的程序使用这种方法绕过NAT。

我同意,但从技术上讲,这当然是可能的。路由器当然是可编程配置的,一般来说不需要人按下设备上的物理按钮。因此,如果需要,可以托管某种服务,代表经过身份验证的客户机配置路由器。但我并不是说这样做不会是疯狂的@我想要的Dag通用方法,破解各种路由器有点复杂;)为什么要进行最后投票?我想知道如何在非真实的IP计算机上创建wcf服务,管理员无法回答,但程序管理员认为Skype需要访问互联网。我不知道它使用什么端口DApparently使用端口80/443,该端口通常对HTTP和HTTPS开放,但客户端上没有侦听器(将在web服务器上)。我推测,但基于此:@ArsenMkrt,这张海报告诉了你答案Skype使用UPnP进行类似的操作。正如其他人所指出的,这并非在所有情况下都有效。您需要提供使用UPnP或让路由器管理员手动打开防火墙漏洞的选项。(告诉他们您需要哪些端口等)