Eu tentei várias idéias sobre como fazer isso funcionar, incluindo o Squid, Pound e agora o HAProxy, que parece ser o mais próximo até agora.
Eu tenho um servidor NGinx que defini para ser o serviço da Web primário voltado para o público, exceto ao se conectar a serviços MS Specific (como RDP Gateway e DirectAccess). Configuração atual aqui .
Basicamente, isso implica uma conexão com o servidor MS se (e somente se) o cabeçalho do host corresponder ao nome manager.remote.tsaukpaetra.com
e, caso contrário, uma conexão com o loopback na porta relevante para todo o restante.
É claro que, se eu remapear a entrada DNS para o endereço IP equivalente local usando o arquivo hosts, tudo funcionará apenas como dandy! : '(
Infelizmente, não há praticamente nenhum registro no servidor MS, seja nos logs do IIS ou de outra forma, então estou realmente sem noção do que está errado. De acordo com os logs de depuração do Haproxy, ele faz a conexão inicial muito bem, como exemplo, essas duas linhas aparecem em todas as tentativas de conexão ao serviço de Gateway 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"
mas é claro que a conexão falha e morre imediatamente.
A maneira da Microsoft testar isso é procurar / Rpc para ver se eu recebo um erro Access Denied (403.2 ou algo assim), que aparentemente está acontecendo (até certo ponto, mas não o número correto de código de erro / número de sub).
Neste momento estou com uma perda sobre como proceder, estou faltando alguma coisa no haproxy.cfg? Infelizmente, o google não é de muita ajuda em geral, já que a maioria das postagens é sobre o Exchange e o CAS, e nem eu estou tentando de forma alguma. Eu estou tentando manter isso o mais burro e simples possível usando apenas uma quantidade mínima de servidores e complexidade (realmente, como você pode dar errado com apenas dois servidores?).