路由到内部网络上的远程桌面网关

路由到内部网络上的远程桌面网关

我有一台物理主机,用作虚拟化实验室,还有多台 Hyper-V 上的虚拟机,它们通过内部网络连接到主机。我让物理主机充当远程桌面网关,路由器指向网关,一切正常,我可以通过互联网登录到我的虚拟机。

此后,我将网关移至内部网络上的虚拟机,该虚拟机位于我的活动目录 DNS remote.example.com 中,具有静态 IP 地址。这样,各个虚拟机将执行特定角色,并且我最终将能够在我的虚拟机上使用负载平衡。

目前,仅使用 1 个虚拟机作为 RDG,我便能够从主机顺利访问内部网络上的所有虚拟机,因为它可以看到 remote.example.com 的 IP 地址。我认为我需要向主机添加一些转发/路由/重定向,以使网关从“外部”可见。

(互联网)==1==>(路由器)==2==> [主机] ==3==> [remote.example.com] ==4==> [VM_1 | VM_2 | VM_3]

让我的主机代理请求到我的内部虚拟机/网关的正确方法是什么?

我当前在 ApplicationHost.config 中对 ARR 的设置:

<webFarms>
    <webFarm name="Remote" enabled="true">
        <server address="192.168.1.3" enabled="true" />
        <applicationRequestRouting>
            <protocol>
                <cache enabled="false" />
            </protocol>
        </applicationRequestRouting>
    </webFarm>
    <applicationRequestRouting>
        <hostAffinityProviderList>
            <add name="Microsoft.Web.Arr.HostNameRoundRobin" />
            <add name="Microsoft.Web.Arr.HostNameMemory" />
        </hostAffinityProviderList>
    </applicationRequestRouting>
</webFarms>

在 system.webServer/rewrite/globalRules 下:

<globalRules>
    <rule name="ARR_Remote_loadbalance_SSL" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
        <match url="*" />
        <conditions>
            <add input="{HTTPS}" pattern="on" />
            <add input="{HTTP_HOST}" pattern="remote.example.com" />
        </conditions>
        <action type="Rewrite" url="https://Remote/{R:0}" />
    </rule>
    <rule name="ARR_Remote_loadbalance" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
        <match url="*" />
        <action type="Rewrite" url="http://Remote/{R:0}" />
        <conditions>
            <add input="{HTTP_HOST}" pattern="remote.example.com" />
        </conditions>
    </rule>
</globalRules>

编辑:

在外部设备上,我可以连接到 https://remote.example.com 并查看 IIS 登陆页面。当我访问 https://remote.example.com/rpc 时,我收到 503 必须使用 post

当我尝试通过 RDP 客户端使用网关服务器时,我收到

The gateway failed to connect with the message: 404 not found

重新启动主机和虚拟机后,我能够从外部设备访问该站点,并且能够对 RDP 连接执行失败请求跟踪。

失败请求跟踪

看起来 ARR 正在尝试自己处理请求,而不是将请求转发给远程 VM

答案1

事实证明,这只是一个配置稍有错误的简单案例。我发布的 ARR 路由模式是 {HTTP_HOST} = remote.example.com。根据失败的请求日志,这并不匹配

ARR 规则匹配失败

我相信这是因为 ARR 规则只会查看主机名,即 remote.example,而不是 remote.example.com 作为各种组合,例如 remote.example。, 偏僻的。,remote* 确实匹配并且被正确转发,也许我错过了一些 ARR 模式匹配的技巧。

作为参考,我主要遵循了以下指南:http://www.msexchange.org/articles-tutorials/exchange-server-2013/mobility-client-access/iis-application-request-routing-part1.html

答案2

我很确定使用 ARR 是不受支持的,即使它可以工作。最简单的解决方法是允许网关 VM 与“外部”网络通信,以便路由器可以直接向其发送流量。或者您需要可以将流量路由到网关 VM 的“某些东西”,NATing 防火墙或类似的东西。我不会把这个“东西”放在我的 Hyper-V 盒子上,那些应该尽可能保持干净。

相关内容