Looking at the code, and testing it for TCP servers it does seem to be
supported. To confirm I tried to use a "bad" source address, and it
fails as expected:

> [ALERT]    (104635) : Cannot bind to source address before connect() for 
> backend mybaddns. Aborting.

Using a correct address I see haproxy connecting using the proper
address (at least on the initial attempt)

(dns over tcp properly leverages stream applet so server options
relevant to tcp should work)

So if it doesn't work consistently we're more likely hitting a bug indeed :/

Aurelien


On 3/7/25 16:47, Willy Tarreau wrote:
> Hi Luke,
> 
> On Fri, Mar 07, 2025 at 02:28:04PM +0700, Luke Seelenbinder wrote:
>> Hi list,
>>
>> We had a quick question. Does `nameserver` support the `source` parameter? 
>> It appears to in the documentation and the config validates, but it seems 
>> HAProxy may ignore it.
>>
>> Our relevant config:
>>
>> resolvers default
>>   # Note: we prefer using AWS, but we can't due to: 
>> https://github.com/haproxy/haproxy/issues/1845
>>   #nameserver aws1 tcp6@[2600:9000:5300:f500::1]:53 source [{{ public_ipv6 
>> }}]
>>   #nameserver aws2 tcp6@[2600:9000:5302:cc00::1]:53 source [{{ public_ipv6 
>> }}]
>>   nameserver g1         tcp6@[2001:4860:4860::8888]:53 source [{{ 
>> public_ipv6 }}]
>>   nameserver g2         tcp6@[2001:4860:4860::8844]:53 source [{{ 
>> public_ipv6 }}]
>>   nameserver opendns    tcp6@[2620:0:ccc::2]:53        source [{{ 
>> public_ipv6 }}]
>>   accepted_payload_size 8192
>>   resolve_retries 4
>>
>>   hold valid      60s
>>   hold obsolete   30s
>>   hold timeout    300s
>>
>>   timeout resolve 20s
>>   timeout retry   1s
>>
>> In practice, we've found it may use another IPv6 (e.g., one bound for 
>> failover), which results in resolution failures.
> 
> I must confess I have no idea :-/  Normally it should work if it's
> accepted by the config, but maybe you've hit a big. I'm CCing Emeric.
> 
> Thanks,
> Willy
> 
> 
> 



Reply via email to