Windows上的远程桌面+隧道

阿拉什夫

抱歉,长话短说,我试图保持清晰。

*一点背景*

作为项目的一部分,我们需要能够从具有有效IP地址的服务器上使用远程桌面(RDP)访问某些计算机(以下称为客户端)。这些客户端位于NAT之后(例如,在DSL Mode + Router后面),因此它们没有有效的IP地址,而Modem + Router却有。假设它们都在Windows 7 Ultimate上运行,并且没有防火墙,防病毒或任何阻止流量的内容。

* 至今 *

首先想到的也是最合乎逻辑的事情是使用调制解调器上的端口转发选项。但是,现实生活中的场景是这些客户端正在运行一个应用程序(使用C#编写,我们已经提供),并且我们需要该应用程序执行端口转发而不是调制解调器,因为在部署系统之后,我们赢得了不知道路由器的型号,配置等。此外,我们将无法访问调制解调器设置。因此,假定此选项不可用。

*对我们来说是可行的选择,当然还有问题!*

转到下一个使用反向隧道(又称为远程端口转发)的选项,我们将应用程序更改为创建2个套接字。On用于与客户端上的RDP服务器进行通信,另一个用于连接到服务器(一个具有有效IP)以建立隧道。在服务器上有另一个应用程序,该应用程序从客户端获取所有流量,并将其发送到远程桌面客户端(通过另一个套接字),反之亦然。所以架构看起来像:

|RDP SERVER|<->|Socket1|<->|Socket2|<->The Internet<->|Socket3|<->|Socket4|<->|RDP Client|
------------ Client side ----------                   ------------- Server Side ----------  

套接字1在客户端的端口17001上,并且与客户端(RDP服务器)的端口3389通信。
套接字2在客户端的端口17002上,并且与服务器的端口17002通信。
套接字3在服务器的端口17002上,并且与端口17002通信。客户端
Socket 4的端口位于服务器的端口17002上,并且与服务器的端口3389(RDP客户端)进行通信

从那时起,每当服务器上的用户想要与NAT后的客户端建立远程桌面连接时,他都将连接到套接字4,所有流量都重定向到套接字3,后者又将流量传输到套接字2和从插座2到插座1,反之亦然。

问题是,无论客户端和服务器如何连接,即使服务器和客户端位于彼此相邻的同一网络中,RDP向我询问客户端密码后,它也会随机执行以下操作之一:1 。有时它可以正常连接,我可以与计算机进行交互2.有时它在那里停止3.有时它进入并在显示它死去的客户端屏幕之前。

我检查了连接,更改了调制解调器,更改了客户端和服务器,但仍然相同。我什至在客户端(freesshd上尝试了ssh服务器,并使用腻子将其转发到远程端口,结果是腻子发生奇怪的错误,导致连接断开。我开始拔头发了!有什么想法吗?

阿拉什夫

首先,谢谢大家不回答我的问题!它帮助我弄清楚出了什么问题。

我想在这里分享解决方案,以便其他人寻找类似问题的答案可能会有所想法。

答案 :

信不信由你,它与调试有关!!!发布此问题几天后,我发现如果不调试代码,它就可以正常工作。我的问题解决了,所以我不用再去想原因了。

但是,大约三天前,在编写必须与用户交互的Windows服务的过程中,我不小心碰到了一篇文章,这使我了解出了什么问题。

我越来越深入,发现当您开始远程连接时,您实际上是在开始一个新的会话你猜怎么着?您的调试器已附加到在另一个Windows会话中运行的进程,因此视频渲染器未分配给新的会话,并且所有事情都会崩溃!

当然,这是我对问题的理解,但似乎揭示了奥秘!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过SSH反向隧道的远程桌面以替换TeamViewer

来自分类Dev

通过远程桌面连接建立TCP / IP连接的隧道

来自分类Dev

网页上的SSH隧道

来自分类Dev

通过反向隧道在服务器上创建隧道

来自分类Dev

从Windows自动进行SSH隧道

来自分类Dev

在 Windows 上使用 MobaXterm 创建 SSH 隧道

来自分类Dev

诊断Windows远程桌面

来自分类Dev

远程桌面-Windows 7

来自分类Dev

Windows 7上的慢速远程桌面连接

来自分类Dev

在端口80上设置Windows远程桌面?

来自分类Dev

无法在Windows 7 Professional上启用远程桌面

来自分类Dev

Windows Server 2012上的远程桌面客户端

来自分类Dev

Windows 10-“幽灵”屏幕上的远程桌面

来自分类Dev

在Windows 10 Pro上禁用了远程桌面

来自分类Dev

从Windows到AWS上的Debian的远程桌面?

来自分类Dev

将Windows远程桌面转换为远程桌面

来自分类Dev

通过SSH隧道与远程服务器上的PostgreSQL交互?

来自分类Dev

设置ssh隧道以访问远程服务器上的FTP

来自分类Dev

在远程服务器上公开反向SSH隧道

来自分类Dev

在关键的cloudfoundry上设置SSH隧道以进行远程调试

来自分类Dev

如何在远程网络上隧道和浏览Web

来自分类Dev

通过SSH隧道与远程服务器上的PostgreSQL交互?

来自分类Dev

Linux串行默认外壳上的IP隧道

来自分类Dev

Rust中SSH上的TCP隧道

来自分类Dev

ipconfig上的隧道适配器?

来自分类Dev

Linux串行默认外壳上的IP隧道

来自分类Dev

来自Windows的SSH隧道作为后台进程?

来自分类Dev

在Windows中管理隧道的SSH端口

来自分类Dev

在azure ubuntu上启用远程桌面