V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
realchang
V2EX  ›  宽带症候群

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

  •  
  •   realchang · 63 天前 · 1072 次点击
    这是一个创建于 63 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    5 条回复    2024-09-23 02:21:18 +08:00
    fuzzsh
        1
    fuzzsh  
       63 天前   ❤️ 1
    layer 4 都是一个 IP 一个端口,和早期 HTTPS 协议一样,后面出现 SNI 才支持单 IP 多域名

    在 host 增加多个 IP ,nginx 每个 listen 用不同 IP ,转发到不同 upstream ,域名解析到 listen IP 上
    povsister
        2
    povsister  
       63 天前   ❤️ 2
    首先,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
        3
    realchang  
    OP
       63 天前
    @fuzzsh
    @povsister
    非常感谢解答!我会尝试下各位大佬的建议。
    ysc3839
        4
    ysc3839  
       61 天前
    之前我以为 RDP 是基于 TLS 的,但是实际上不是标准 TLS ,连接时会有其他握手包,之后才使用 TLS 加密,所以不能用 nginx 反代。
    不过也许可以预先处理前面的握手包,再反向代理。不确定有没有现成的项目。
    ysc3839
        5
    ysc3839  
       61 天前
    刚才简单抓包看了下,连接后会先握手,服务端会返回要求输入密码,客户端输入密码后确定才会建立 TLS 连接,此时是有 SNI 信息的。所以理论上是能实现 RDP 的 SNI 反向代理。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2754 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 10:05 · PVG 18:05 · LAX 02:05 · JFK 05:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.