如何使用反向代理结合二级域名访问内网远程桌面?

62 天前
 realchang

内网有多台主机有远程桌面需求,但是目前只能在网关上开放多个端口来实现访问。我想只在网关上开放 3389 或者其他指定端口,使用反向代理解析转发 rdp1.exmple.comrdp2.exmple.com 等二级域名来区分内网不同主机。开头我是想用 nginx 来实现,结果发现不支持 rdp 协议的域名解析。各位高人,我想请教下有何种方式可以实现我的需求?谢谢!

1068 次点击
所在节点    宽带症候群
5 条回复
fuzzsh
62 天前
layer 4 都是一个 IP 一个端口,和早期 HTTPS 协议一样,后面出现 SNI 才支持单 IP 多域名

在 host 增加多个 IP ,nginx 每个 listen 用不同 IP ,转发到不同 upstream ,域名解析到 listen IP 上
povsister
62 天前
首先,rdp 是 L7 协议,运行于 tcp 、udp 之上。
所以,nginx 只有 stream module 可以处理,且一般只能处理 sni 和 ALPN ,rdp 并不运行在标准 TLS 协议下,所以,应该没啥用。

其次,域名,在这个 case 下,只负责解析实际 IP 地址,rdp 客户端会直接使用解析后 ip+3389 端口访问,此访问中,理论不携带任何域名信息。nginx stream module 自然无用。

综上,仅通过不同域名+同一个 IP ,不可能做到根据域名分流至不同 rdp 目标。

提示,研究 RDP gateway ,用于解决你 rdp 分流问题
realchang
62 天前
@fuzzsh
@povsister
非常感谢解答!我会尝试下各位大佬的建议。
ysc3839
60 天前
之前我以为 RDP 是基于 TLS 的,但是实际上不是标准 TLS ,连接时会有其他握手包,之后才使用 TLS 加密,所以不能用 nginx 反代。
不过也许可以预先处理前面的握手包,再反向代理。不确定有没有现成的项目。
ysc3839
60 天前
刚才简单抓包看了下,连接后会先握手,服务端会返回要求输入密码,客户端输入密码后确定才会建立 TLS 连接,此时是有 SNI 信息的。所以理论上是能实现 RDP 的 SNI 反向代理。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1074597

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX