Hi,

On Mon, Mar 05, 2012 at 12:49:18PM +0100, [email protected] wrote:
> Perhaps I'm having a problem with my specific implementation.
> If I balance source at haproxy before SSL decryption and send traffic on, I 
> get routed to a number of different backend servers from different IPs.
> 
> If I use LVS to direct incoming traffic to a group of stud SSL decryptors 
> with PROXY protocol enabled, then onto HAProxy with balance source, all my 
> traffic goes to the same backend.
> 
> example logs:
> HAProxy listening on  :443
> 
> Mar  5 10:27:46 localhost haproxy[25795]: X.26.0.161:34205 
> [05/Mar/2012:10:27:45.418] https_server https_server/server2 0/0/971 3743 -- 
> 0/0/0
> /0/0 0/0 
> Mar  5 11:27:49 localhost haproxy[25795]: X.74.241.4:6281 
> [05/Mar/2012:11:27:48.835] https_server https_server/server9 0/0/822 3743 -- 
> 0/0/0
> /0/0 0/0 
> Mar  5 11:28:22 localhost haproxy[25795]: X.4.0.11:49394 
> [05/Mar/2012:11:28:21.779] https_server https_server/server2 0/0/832 3743 -- 
> 0/0/0/0
> /0 0/0 
> Mar  5 11:29:10 localhost haproxy[25795]: X.94.93.215:50166 
> [05/Mar/2012:11:29:08.833] https_server https_server/server14 0/0/1271 3919 
> -- 0
> /0/0/0/0 0/0 
> 
> But with Stud and PROXY protocol before HAProxy everything goes to server 4
> 
> Mar  5 11:31:01 localhost haproxy[28351]: ::ffff:X.74.241.4:35759 
> [05/Mar/2012:11:31:01.141] http_server http_server/server4 98/0/0/618/716 200 
> 494 - - ---- 0/0/0/0/0 0/0 {.example.com|} {|session=YcydrYJakCICpnlCNCHozw; 
> Path=/; Domain=.example.com; Secure; HttpOnly; } "POST /login HTTP/1.1" 
> Mar  5 11:31:05 localhost haproxy[28351]: ::ffff:X.4.0.11:50993 
> [05/Mar/2012:11:31:04.304] http_server http_server/server4 102/0/0/638/740 
> 200 494 - - ---- 0/0/0/0/0 0/0 {10.2.6.104|} 
> {|session=oChlXqg4XksajMIHUcuEvA; Path=/; Domain=.example.com; Secure; 
> HttpOnly; } "POST /login HTTP/1.1" 
> Mar  5 11:31:09 localhost haproxy[28351]: ::ffff:X.94.93.215:52581 
> [05/Mar/2012:11:31:09.033] http_server http_server/server4 314/0/0/619/933 
> 200 494 - - ---- 0/0/0/0/0 0/0 {.example.com|} 
> {|session=WQbyueVe6A86Zs0fMY20WA; Path=/; Domain=.example.com; Secure; 
> HttpOnly; } "POST /login HTTP/1.1" 
> Mar  5 11:32:03 localhost haproxy[28351]: ::ffff:X.26.0.161:48867 
> [05/Mar/2012:11:32:02.762] http_server http_server/server4 60/0/0/601/661 200 
> 494 - - ---- 0/0/0/0/0 0/0 {.example.com|} {|session=w7xNRxyq-ySzLuxd7o4bjg; 
> Path=/; Domain=.example.com; Secure; HttpOnly; } "POST /login HTTP/1.1" 
> 
> The Haproxy config is here: (to stop this post being super long)
> http://pastie.org/3525275
> 
> Could stud supplying the client IP in an ipv6 format be causing this?

I don't think so, otherwise the logs would be wrong. I suspect that
somewhere we don't correctly hash all the 16 bytes of the IPv6 address
and only use the first 4 (all zero), resulting in what you're observing.

I'll check if I can reproduce here.

Thanks for the report,
Willy


Reply via email to