<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>It should work, yes. Hmm.. I've tried what I've recommended in production and it does not work without this patch:</div><div><br></div><div>```</div><div>diff --git a/lib/host-resolve.c b/lib/host-resolve.c<br>index b685264f9..66915fe47 100644<br>--- a/lib/host-resolve.c<br>+++ b/lib/host-resolve.c<br>@@ -144,6 +144,7 @@ resolve_hostname_to_sockaddr_using_getaddrinfo(GSockAddr **addr, gint family, co<br> hints.ai_family = family;<br> hints.ai_socktype = 0;<br> hints.ai_protocol = 0;<br>+ hints.ai_flags = AI_V4MAPPED | AI_ADDRCONFIG;<br> <br> if (getaddrinfo(name, NULL, &hints, &res) == 0)<br> {<br>```<br></div><div><br></div><div>With that patch, this configuration worked even if no ipv6 address was available:</div><div>destination d_ipv6 {<br></div><div> network("<a href="http://host.name.somewhere.com">host.name.somewhere.com</a>" ip-protocol(6));<br>};</div><div><br></div><div>The flags above basically mean the following logic (quoting from getaddrinfo):</div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> If hints.ai_flags includes the AI_ADDRCONFIG flag, then IPv4 addresses are returned in the list pointed to by res only if the local system has at least one IPv4 address config‐<br> ured, and IPv6 addresses are returned only if the local system has at least one IPv6 address configured. The loopback address is not considered for this case as valid as a con‐<br> figured address. This flag is useful on, for example, IPv4-only systems, to ensure that getaddrinfo() does not return IPv6 socket addresses that would always fail in connect(2)<br> or bind(2).<br><br> If hints.ai_flags specifies the AI_V4MAPPED flag, and hints.ai_family was specified as AF_INET6, and no matching IPv6 addresses could be found, then return IPv4-mapped IPv6<br> addresses in the list pointed to by res. If both AI_V4MAPPED and AI_ALL are specified in hints.ai_flags, then return both IPv6 and IPv4-mapped IPv6 addresses in the list pointed<br> to by res. AI_ALL is ignored if AI_V4MAPPED is not also specified.<br></blockquote><br></div><div>This means that as long as you have a local ipv6 address configured (loopback does not count) and the server has an IPv6 address, syslog-ng would be using that. If the server does not have one or there's no local ipv6 address, it'd be using an IPv4-mapped address (e.g. ::ffff:1.2.3.4) and would continue to use ipv4 on the wire.</div><div><br></div><div>I am posting this fix as a PR on github in a moment.<br></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Sep 25, 2018 at 3:59 PM David Hauck <<a href="mailto:davidh@netacquire.com">davidh@netacquire.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Balázs,<br>
<br>
Thanks for your thoughts. Please see below.<br>
<br>
On Fri, 21 Sep 2018 at 04:52:00, syslog-ng <<a href="mailto:syslog-ng-bounces@lists.balabit.hu" target="_blank">syslog-ng-bounces@lists.balabit.hu</a>> On Behalf Of Scheidler, Balázs wrote:<br>
> The reason you need to explicitly ask for ip-protocol(6) is that <br>
> sometimes, syslog-ng by itself can create such a socket, can even <br>
> resolve DNS names to ipv6 addresses and then communication wouldn't <br>
> work without an actual ipv6 tunnel/connectivity. Setting ip-protocol(6) <br>
> everywhere would achieve auto-detection and it probably would make sense <br>
> to make this configurable globally, not on a per-destination basis.<br>
<br>
Independent of a potential globally configurable hint would it work to use ip-protocol(6) in all of my destination configurations directly, regardless of whether the specified <destination-address> is a hostname (which may be resolve to an IPv4 or IPv6 address), an IPv4 address string, or an IPv6 address string?<br>
<br>
I would really like to just specify this once for each/all destinations (I don't mind doing it for each destination, I just don't want to have to evaluate whether to use ip-protocol([46])*).<br>
<br>
Regards,<br>
-David<br>
<br>
* The destination configurations are performed programmatically and the extra determination for whether the configured <destination-address> falls into any of the above three categories is cumbersome/tricky at the locale where this done.<br>
<br>
> That would probably be something like this:<br>
> <br>
> * introduce ipv6 related attributes in GlobalConfig, defaulting to ipv4<br>
> <br>
> * have those attributes configurable through cfg-grammar.y (e.g.<br>
> the main configuration parser)<br>
> * in each destination that supports ipv6, inherit the global value<br>
> unless overridden locally<br>
> <br>
> There are similar patterns in the configuration/destination relation, <br>
> for instance with log-fifo-size() where there's a global and a local setting as well.<br>
> <br>
> <br>
> With that said, I'd say that patches are welcome, I couldn't work on <br>
> it myself right now, but I am happy to review any solutions.<br>
> <br>
> <br>
> On Thu, Sep 20, 2018 at 6:03 PM David Hauck <<a href="mailto:davidh@netacquire.com" target="_blank">davidh@netacquire.com</a> <mailto:<a href="mailto:davidh@netacquire.com" target="_blank">davidh@netacquire.com</a>> > wrote:<br>
> <br>
> <br>
> Hi Balazs,<br>
> <br>
> On Wednesday, September 19, 2018 9:21 PM, syslog-ng <br>
> <<a href="mailto:syslog-ng-bounces@lists.balabit.hu" target="_blank">syslog-ng-bounces@lists.balabit.hu</a><br>
> <mailto:<a href="mailto:syslog-ng-bounces@lists.balabit.hu" target="_blank">syslog-ng-bounces@lists.balabit.hu</a>> > On Behalf Of Balazs Scheidler wrote:<br>
> > Ip protocol v6 should support both ipv4 and v6. So if you use that and<br>
> > the name resolves to a v4 address or should work.<br>
> <br>
> OK, interesting.<br>
> <br>
> For a different reason it would also be good if I could always <br>
> specify ip-protocol(6) (non-default) for any value of "myhost" below - <br>
> i.e., even when this is an explicit IPv4 or IPv6 address string. Would <br>
> this also work? And if this were to work (I see no reason why it <br>
> wouldn't if what you say about hostname resolution above) then I guess there is no value in specifying ip-protocol() at all, right (i.e., syslog-ng could also just know to do the right thing in these cases)?<br>
> <br>
> Thanks,<br>
> -David<br>
> <br>
> > On Wed, Sep 19, 2018, 19:23 David Hauck <<a href="mailto:davidh@netacquire.com" target="_blank">davidh@netacquire.com</a> <br>
> <mailto:<a href="mailto:davidh@netacquire.com" target="_blank">davidh@netacquire.com</a>> <mailto:<a href="mailto:davidh@netacquire.com" target="_blank">davidh@netacquire.com</a><br>
> <mailto:<a href="mailto:davidh@netacquire.com" target="_blank">davidh@netacquire.com</a>> > >> wrote: > > Hi, > > <br>
> Thought I would reach out again to see if anyone had any thoughts on the<br>
> item below. > > Thanks for the consideration, > -David ><br>
> > On Wednesday, September 12, 2018 3:39 PM, syslog-ng<br>
> <<a href="mailto:syslog-ng-bounces@lists.balabit.hu" target="_blank">syslog-ng-bounces@lists.balabit.hu</a><br>
> <mailto:<a href="mailto:syslog-ng-bounces@lists.balabit.hu" target="_blank">syslog-ng-bounces@lists.balabit.hu</a>> ><br>
> <mailto:<a href="mailto:syslog-ng-bounces@lists.balabit.hu" target="_blank">syslog-ng-bounces@lists.balabit.hu</a><br>
> <mailto:<a href="mailto:syslog-ng-bounces@lists.balabit.hu" target="_blank">syslog-ng-bounces@lists.balabit.hu</a>> > > On Behalf Of David Hauck<br>
> > wrote: > Hi, > > I have a question regarding how to<br>
> specify a network > destination when using a hostname when the ><br>
> hostname can be resolved > to either IPv4 or IPv6. In particular what<br>
> should be specified by the > ip- > protocol() parameter? There are<br>
> some configuration scenarios > and/or target installations that don't <br>
> > know a priori whether the DNS > configuration will resolve to an<br>
> IPv4 or IPv6 address.<br>
>>> E.g., > ><br>
> > destination d_tcp6 { > network( > "myhost"<br>
>> <br>
> > port(514) > transport(udp) ><br>
> ip-protocol(6 or 4 or ??)<br>
> > > ); > }; > > It seems like it would<br>
> simple enough to have<br>
> > syslog-ng simply validate the resulting IP address string to<br>
>> <br>
> > determine which of ip-protocol(4) or ip-protocol(6) is actually needed.<br>
> > In fact, I would argue that > specifying an IP address<br>
> string (as the<br>
> > "<destination-address>" value) could result in the same<br>
>> determination<br>
> > (the address string necessarily unambiguously determines whether the<br>
> > reference is an > IPv4 or an IPv6 address and I would think<br>
> there is a > 1-1 relationship between this determination and ><br>
> whether > ip-protocol(4) or ip-protocol(6) is used - (in other words it<br>
> would > never make sense to have > these mixed: "::1" and<br>
> ip-protocol(4) would > be invalid). > > Thanks, -David ><br>
> <br>
> ________________________________________________________________________<br>
> ______ Member info: <a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" rel="noreferrer" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a><br>
> Documentation:<br>
> <a href="http://www.balabit.com/support/documentation/?product=syslog-ng" rel="noreferrer" target="_blank">http://www.balabit.com/support/documentation/?product=syslog-ng</a> FAQ:<br>
> <a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a><br>
> <br>
><br>
______________________________________________________________________________<br>
Member info: <a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" rel="noreferrer" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a><br>
Documentation: <a href="http://www.balabit.com/support/documentation/?product=syslog-ng" rel="noreferrer" target="_blank">http://www.balabit.com/support/documentation/?product=syslog-ng</a><br>
FAQ: <a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a><br>
<br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Bazsi</div>