Paul B. Henson wrote:
> We currently run our openLDAP service on our campus behind an F5 load 
> balancer which preserves the IP address of the connecting client through to 
> the backend
> servers, which we rely on for a small amount of IP address based 
> authorization differentiating between on-campus and off-campus access.
> 
> However, management is strongly pushing us to migrate the service to the 
> Amazon cloud, using Amazon's load balancer. Unfortunately, Amazon's load 
> balancer only
> supports client NAT for directing connections to the back end servers, so 
> they have no idea who the actual client is, it just appears to be the load 
> balancer
> itself.
> 
> Amazon's solution for that is to support HAProxy's proxy protocol in their 
> load balancer:
> 
>     https://www.haproxy.com/blog/haproxy/proxy-protocol/
> 
> Basically, this is an in band signaling mechanism that inserts an additional 
> header in the initial connection data containing the original client IP
> address/source port and destination IP address/source port, allowing the 
> server to utilize that information for the connection rather than the actual 
> details of
> the network connection from the proxy itself.
> 
> This requires support from the application running on the server, as it must 
> remove and process that proxy header from the connection data before moving 
> on with
> whatever data would normally be passed on the connection.
> 
> There are some fair number of services that support this proxy, including of 
> course HAProxy itself, such as the apache web server and the postfix mail 
> server.
> 
> openLDAP does not support the protocol, and I was unable to find any past 
> discussion of it.
> 
> I was wondering if this feature would be something acceptable for inclusion 
> to openLDAP, or if from an architectural perspective it would be considered
> undesirable.
> 
> In general, I believe applications listening on a specific port are either 
> expecting the proxy protocol header, or not, I do not think it is dynamically
> determined. As such, from an implementation perspective, my initial thought 
> is that it would be implemented in terms of configuration as an additional URL
> specified via the -h option, something like "ldapp://" or "ldap_p://", 
> "ldapsp://" or "ldaps_p://" or whatever seems most desirable. A server might 
> listen on
> the standard ports accepting only proxied connections, or it might listen for 
> normal connections on the standard ports and for proxy connections on 
> alternative
> ports.

Yeah, that agrees with my read of the document. I think "ldapp://" and 
"ldapsp://"
would be usable.

> When a connection is accepted on a port marked as requiring the proxy 
> protocol, it would read and process the proxy header to populate the 
> appropriate data
> structures regarding connection, and then move on as it normally would to 
> deal with the connection.
> 
> If this feature is of interest, I will probably spend a little time poking at 
> it and seeing how much trouble it will be to implement.

Doesn't seem too problematic. I would only support the version 2 (binary) 
header,
seems silly to implement the version 1 support for such an old spec.

-- 
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/

Reply via email to