<div dir="auto"><div dir="auto">Developer had refused to apply happy eyeballs. </div><div dir="auto"><br></div><div dir="auto">See <a href="https://github.com/nodejs/node/issues/6307">https://github.com/nodejs/node/issues/6307</a></div><div dir="auto"><br></div><div dir="auto">I can't fix the application, so I need to fix my network.</div><div dir="auto"><br></div><div dir="auto">Kim</div><br><div class="gmail_quote"><div dir="ltr">On Tue, May 1, 2018, 5:44 PM Mark Andrews <<a href="mailto:marka@isc.org" target="_blank" rel="noreferrer">marka@isc.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">If you have a IPv6 only network then there should be no default IPv4 route so<br>
the connect(), sendto() etc. should all fail immediately with network unreachable.<br>
If they don’t then complain to your OS developer. If the application does not<br>
detect these failures complain to the application developer.<br>
<br>
Applications should fail over immediately if there is not a covering route.<br>
<br>
If you have a local default IPv4 route, the router should be returning network<br>
unreachable and the OS should be processing them. This should cause network<br>
errors to be delivered to the application.<br>
<br>
The application should also be implementing happy eyeballs where you fail<br>
over to other addresses with sub second delays when there are multiple<br>
addresses to try.  There is nothing wrong with having multiple connection<br>
attempts happening in parallel.<br>
<br>
Mucking with DNS responses is only covering up application defects.  Filtering<br>
A records also breaks DNS64 for applications that are using DNSSEC as they<br>
need to see the A records as well as the AAAA responses.<br>
<br>
Notify the application vendor they they have a denial-of-service bug.<br>
<br>
Mark<br>
<br>
> On 2 May 2018, at 9:00 am, Kim Ebert <<a href="mailto:kim@developmint.work" rel="noreferrer noreferrer" target="_blank">kim@developmint.work</a>> wrote:<br>
> <br>
> Hi All,<br>
> <br>
> I recently came across an issue where the user program preferred IPv4 over IPv6. This is a problem because I've created a network that is IPv6 only. I'm currently using NAT64 to provide access to services that don't have any IPv6 access.<br>
> <br>
> Now this particular program could work if the DNS records didn't provide A records. I would rather do everything I can as an admin to make the network just work instead of waiting for all of the end user programs to be fixed, so I started working on filter-a functionality to filter out A responses. Currently implementation status is that it sort of works, which is further than I expected to get in 2 days.<br>
> <br>
> I wonder if anyone in the community is interested in me sharing the work, and if I should go to the effort to publish the effort?<br>
> <br>
> If anyone is curious, the offending program is nodejs and npm.<br>
> <br>
> Thanks,<br>
> <br>
> Kim<br>
> _______________________________________________<br>
> Please visit <a href="https://lists.isc.org/mailman/listinfo/bind-users" rel="noreferrer noreferrer noreferrer" target="_blank">https://lists.isc.org/mailman/listinfo/bind-users</a> to unsubscribe from this list<br>
> <br>
> bind-users mailing list<br>
> <a href="mailto:bind-users@lists.isc.org" rel="noreferrer noreferrer" target="_blank">bind-users@lists.isc.org</a><br>
> <a href="https://lists.isc.org/mailman/listinfo/bind-users" rel="noreferrer noreferrer noreferrer" target="_blank">https://lists.isc.org/mailman/listinfo/bind-users</a><br>
<br>
-- <br>
Mark Andrews, ISC<br>
1 Seymour St., Dundas Valley, NSW 2117, Australia<br>
PHONE: +61 2 9871 4742              INTERNET: <a href="mailto:marka@isc.org" rel="noreferrer noreferrer" target="_blank">marka@isc.org</a><br>
<br>
</blockquote></div></div><div class="gmail_extra"><br><div class="gmail_quote">On May 1, 2018 5:44 PM, "Mark Andrews" <<a href="mailto:marka@isc.org">marka@isc.org</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">If you have a IPv6 only network then there should be no default IPv4 route so<br>
the connect(), sendto() etc. should all fail immediately with network unreachable.<br>
If they don’t then complain to your OS developer. If the application does not<br>
detect these failures complain to the application developer.<br>
<br>
Applications should fail over immediately if there is not a covering route.<br>
<br>
If you have a local default IPv4 route, the router should be returning network<br>
unreachable and the OS should be processing them. This should cause network<br>
errors to be delivered to the application.<br>
<br>
The application should also be implementing happy eyeballs where you fail<br>
over to other addresses with sub second delays when there are multiple<br>
addresses to try.  There is nothing wrong with having multiple connection<br>
attempts happening in parallel.<br>
<br>
Mucking with DNS responses is only covering up application defects.  Filtering<br>
A records also breaks DNS64 for applications that are using DNSSEC as they<br>
need to see the A records as well as the AAAA responses.<br>
<br>
Notify the application vendor they they have a denial-of-service bug.<br>
<br>
Mark<div class="elided-text"><br>
<br>
> On 2 May 2018, at 9:00 am, Kim Ebert <<a href="mailto:kim@developmint.work" target="_blank" rel="noreferrer">kim@developmint.work</a>> wrote:<br>
> <br>
> Hi All,<br>
> <br>
> I recently came across an issue where the user program preferred IPv4 over IPv6. This is a problem because I've created a network that is IPv6 only. I'm currently using NAT64 to provide access to services that don't have any IPv6 access.<br>
> <br>
> Now this particular program could work if the DNS records didn't provide A records. I would rather do everything I can as an admin to make the network just work instead of waiting for all of the end user programs to be fixed, so I started working on filter-a functionality to filter out A responses. Currently implementation status is that it sort of works, which is further than I expected to get in 2 days.<br>
> <br>
> I wonder if anyone in the community is interested in me sharing the work, and if I should go to the effort to publish the effort?<br>
> <br>
> If anyone is curious, the offending program is nodejs and npm.<br>
> <br>
> Thanks,<br>
> <br>
> Kim<br></div>
> _______________________________________________<br>
> Please visit <a href="https://lists.isc.org/mailman/listinfo/bind-users" rel="noreferrer noreferrer" target="_blank">https://lists.isc.org/mailman/listinfo/bind-users</a> to unsubscribe from this list<br>
> <br>
> bind-users mailing list<br>
> <a href="mailto:bind-users@lists.isc.org" target="_blank" rel="noreferrer">bind-users@lists.isc.org</a><br>
> <a href="https://lists.isc.org/mailman/listinfo/bind-users" rel="noreferrer noreferrer" target="_blank">https://lists.isc.org/mailman/listinfo/bind-users</a><div class="signature-text"><br>
<br>
-- <br>
Mark Andrews, ISC<br>
1 Seymour St., Dundas Valley, NSW 2117, Australia<br>
PHONE: +61 2 9871 4742              INTERNET: <a href="mailto:marka@isc.org" target="_blank" rel="noreferrer">marka@isc.org</a><br>
<br>
</div></blockquote></div><br></div>