2011-03-10 207 views
0

假设我有一台服务器应用程序在计算机上工作,但并未直接连接到互联网,而是使用路由器,所以问题是如何从不在内部网络内的另一台计算机连接到该服务器来自互联网)?如何从互联网访问本地网络内的服务器

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

我使用WCF和C#

+0

为什么要结束投票?我想知道如何在不是真正的IP计算机上创建wcf服务,这是管理员无法回答的,但程序员 – 2011-03-10 20:34:56

回答

2

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

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

编辑

有在C#中herehere实现的UPnP一些代码。

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

+0

以及但如何Skype的呢? – 2011-03-10 20:30:51

+0

@ArsenMkrt,这张海报告诉你答案。 ;-) Skype将UPnP用于[高质量视频会议](http://www.gabrielweinberg.com/blog/2009/04/how-i-got-skype-high-quality-video-working.html) 。正如其他人所指出的那样,这在所有情况下都不起作用。您需要选择使用UPnP还是让路由器的管理员手动打开防火墙孔。 (告诉他们你需要哪些端口等) – mpontillo 2011-03-10 22:06:33

4

端口转发和NAT都有在路由器做,你不能劫持,从给定的本地计算机设置,这将导致圣经比例的漏洞。

+0

我同意,但从技术上讲,它当然是可能的。路由器在编程上是可配置的,并且通常不需要一个人按下设备上的物理按钮。因此,如果有人想要,可以托管某种服务,代表经过身份验证的客户端配置路由器。但我并不是说这样做不会太疯狂。 :) – 2011-03-10 20:23:26

+0

好,但如何Skype的呢? – 2011-03-10 20:29:08

+0

@The Dag我想要一般的方法,黑客所有类型的路由器的有点复杂;) – 2011-03-10 20:33:33

2

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

+0

以及但如何Skype的呢? – 2011-03-10 20:30:08

1

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

我认为这是你的答案就在这里。如果内部允许你连接到它(即已经连接到互联网的东西)也可以让你执行这样的配置,那么从外部(互联网)执行这样的配置也是可能的。但考虑到让一些电脑没有互联网连接的问题,这确实是一个奇怪的设置。

这对我怀疑的人来说,听起来更像是想要打破,而不是想做一件允许的事。对于后者,已经给出的答案是相当不错的。 :)

+0

不错,但如何Skype的呢? – 2011-03-10 20:31:10

+0

我相信Skype需要互联网接入。我不知道它使用什么端口。 :D – 2011-03-10 21:56:08

+0

显然它使用80/443端口,通常对于HTTP和HTTPS开放,但客户端上没有监听器(将在Web服务器上运行)。我推测,但基于此:http://support.skype.com/en/faq/FA528/Conflicts-with-applications-such-as-Apache-or-IIS-working-on-port-80-443 – 2011-03-10 22:00:07