我试图在父母的笔记本电脑上安装VNC服务器,以便我可以提供远程协助。 我login(通过Chrome远程桌面),安装了TightVNC,并在路由器上设置了端口转发,但无法连接到它。 经过一番search后,我发现问题是ISP没有给他们分配一个静态IP(路由器的WAN IP地址是172.17.xx.xx)。
有什么我可以自我托pipe,让我远程访问他们的机器? (也就是说,我想在我自己的盒子上安装一些服务器,它有一个静态IP,然后在他们的笔记本电脑上的一个客户端,让我远程login,沿着logmein / teamviewer /等线,但自我-hosted)
你需要一个这样的VNC中继器 。 这是詹姆士B这本优秀指南的摘录:
有两种方法可以运行VNC代理:
这项技术最初是由UltraVNC开发的,但现在已经相当stream行,可用于许多VNC衍生产品。 这是从马的口中解释它是如何工作的。 您希望使用模式2,因为这是使服务器和客户端都处于NAT后面的模式。
您可以从UltraVNC网站下载中继器软件; 但除非您打算在中继器操作系统上使用Windows,否则我build议您从其他地方获取它们,因为它们更新频率更高。
转发器软件具有以下特点:需要编译和构build自己的C源代码(最好在代理机器上;或者至less在与代理机器相同的操作系统上运行的机器上); 和一个Perl脚本,你可以直接运行。 两者都要求您在代理机器上将它们作为守护程序(即服务器进程)运行; 不断监听来自服务器和客户端的连接。
无论哪种情况,请注意,为了达到此目的,您将需要VNC客户端和服务器都支持UltraVNC中继器扩展。 标准服务器和客户端将无法工作。 与这些中继器一起工作的VNC客户端的例子是SSVNC 。
Perl脚本版本在这里可用。 找一个名为ultravnc_repeater.pl的文件(或者你可以直接从这个链接下载文件)。 我已经testing了这个脚本,它运行的很好。
C源代码版本在这里可用。 这是原始的UltraVNC中继器版本(这是只有Windows)的端口,所以它或多或less是“官方”版本。
还有其他非官方的版本:
http://code.google.com/p/uvncrepeater https://code.google.com/p/vncrepeater
我还没有testing任何C版本,所以我不能评论他们的可用性。 最后一个链接是特别有趣的,因为它声称可以使用标准VNC客户端而不是UltraVNC扩展客户端。
一旦代理服务器被设置,在服务器端启动到代理的连接:
x11vnc -connect repeater=ID:1234+host:port
其中“1234”是向中继器标识该服务器的唯一ID。
在客户端:
ssvncviewer -repeater ID:1234 host:port
客户端使用相同的ID,以便中继器可以将其连接到正确的服务器。
服务器和客户端上的主机:端口是指代理服务器。 港口是不一样的; 通常服务器端口是5500,客户端口是5900.本例中使用了x11vnc和ssvnc,但您可以轻松地使用其他UltraVNC兼容的服务器和客户端。
VNC连接器是中继器的一个相对较新的发明。 它使标准服务器和客户端能够相互连接。 从使用angular度来看,它与中继器的工作方式类似,但内部工作方式不同。
该软件可以作为CGI Perl脚本或者Karl Runge(ssvnc和ultra_repeater Perl脚本的作者)提供,在这里: vncxfer 。
为了使用它,你需要在代理服务器上运行一个web服务器,并将其configuration为以CGI的身份运行vncxfer脚本。 连接时,脚本将创build一个服务器进程,该进程将处理服务器和客户端连接。 服务器进程将创builddynamic分配的临时端口对; 一个用于服务器,一个用于客户端。
通过使用Web浏览器访问CGI URL来启动连接。 你看到的网页将要求一个“会话ID”; 一旦给定,它将启动一个随机端口为服务器和客户端的会话。 您必须在给定的时间内(默认为300秒)启动客户端和服务器连接,否则会话将被取消。
像往常一样使用-connect启动VNC服务器以连接到代理(不需要ID):
x11vnc -connect host:port
并像往常一样启动客户端(不需要重传string)
vncviewer host:port
服务器和客户端上的主机:端口是指代理服务器。 港口是不一样的; 该网页将告诉你哪个端口是服务器和哪个端口是客户端。 本例中使用了x11vnc,但您可以轻松地使用其他服务器和客户端。
一旦连接结束,vncxfer将终止临时会话。
注意:你不能在普通的虚拟主机帐户上运行这个。 您需要VPS帐户,因为: