我尝试了几种实现这个功能的方法,包括 Squid、Pound 以及现在的 HAProxy,到目前为止,它似乎是最接近的。
我有一台 NGinx 服务器,我已将其设置为面向公众的主要 Web 服务,但连接到 MS 特定服务(如 RDP 网关和 DirectAccess)时除外。当前设置这里。
基本上,当(且仅当)主机头与名称匹配时,这需要与 MS 服务器建立连接manager.remote.tsaukpaetra.com
,否则需要与相关端口的环回连接以完成其他所有操作。
不幸的是,它似乎不能正常工作,对管理器框的正常 HTTP 请求似乎工作正常(我进入默认的登录页面https://manager.remote.tsaukpaetra.com),但涉及 RPC 的任何操作似乎都无法实现。
当然,如果我使用 hosts 文件将 DNS 条目重新映射到本地等效 IP 地址,那么一切都会顺利进行!:'(
不幸的是,MS 服务器端几乎没有任何日志记录,无论是在 IIS 日志中还是其他地方,所以我真的不知道哪里出了问题。根据 Haproxy 调试日志,它可以正常进行初始连接,例如,每次尝试连接到 RD 网关服务时都会出现以下两行:
Aug 31 22:04:02 namp haproxy[3028]: 192.168.1.1:52278 [31/Aug/2014:22:04:02.891] Listener~ manager/manager 31/0/2/1/34 401 890 - - ---- 1/1/0/1/0 0/0 "RDG_OUT_DATA /remoteDesktopGateway/ HTTP/1.1"
Aug 31 22:04:02 namp haproxy[3028]: 192.168.1.1:52278 [31/Aug/2014:22:04:02.925] Listener~ manager/manager 4/0/1/-1/5 -1 0 - - SD-- 0/0/0/0/0 0/0 "RDG_OUT_DATA /remoteDesktopGateway/ HTTP/1.1"
但连接当然会失败并立即中断。
微软的测试方式是浏览 /Rpc 以查看是否收到“访问被拒绝”(403.2 或类似)错误,显然该错误正在发生(在某种程度上,但不是正确的错误代码号/子号)。
此时我不知道该怎么做,我是不是遗漏了 haproxy.cfg 中的某些内容?遗憾的是,谷歌总体上帮不上什么忙,因为大多数帖子都是关于 Exchange 和 CAS 的,而我根本没有尝试过。我试图通过使用最少数量的服务器和复杂性来使其尽可能简单(真的,只有两台服务器怎么会出错呢?)。