Acesso ao endereço do Protocolo Proxy no HAProxy

2

Estou executando o HAProxy que está recebendo o protocolo de proxy da camada 4 de uma fonte upstream. Eu tenho a necessidade de criar um cabeçalho HTTP personalizado com o endereço contido lá. Não consigo encontrar como posso referenciar esse cabeçalho TCP.

Abaixo está uma amostra do que estou tentando fazer:

frontend http_in
    bind *:1025 accept-proxy
    mode http
    default_backend http_out

backend http_out
    mode http
    http-request set-header X-Custom-Header %[<ip from proxy protocol header>]
    server some-server some-server:80

Como posso ter certeza de que estou preenchendo o novo cabeçalho com o endereço do cabeçalho L4 e não algum cabeçalho http spoofable?

    
por Justin Talbott 16.11.2015 / 22:59

1 resposta

3

Com base nos documentos da opção accept-proxy bind e, mais genericamente, o uso do protocolo PROXY, todos os campos contidos no cabeçalho do protocolo PROXY (IP de origem e porta, IP de destino e porta) substituem os da conexão real:

...
The PROXY protocol dictates the layer 3/4 addresses of the incoming
connection to be used everywhere an address is used, with the only
exception of "tcp-request connection" rules which will only see the
real connection address. Logs will reflect the addresses indicated in
the protocol, unless it is violated, in which case the real address
will still be used.
...

Significa que o seu backend seria parecido com

backend http_out
    mode http
    http-request set-header X-Custom-Header %[src]
    server some-server some-server:80

Isso funciona porque o campo src sample conterá o IP de origem, conforme definido no cabeçalho PROXY, e não o IP de origem real.

    
por 17.11.2015 / 00:26