3 ms·
For Linux, there's a kernel setting for that. Just run sysctl -w net.ipv6.bindv6only=1 so IPv6 will not include IPv4-mapped addresses. https://www.kernel.
by zzq1015 1y ago
For Linux, there's a kernel setting for that.
Just run
sysctl -w net.ipv6.bindv6only=1
so IPv6 will not include IPv4-mapped addresses.
https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt https://www.kernel.org/doc/Documentation/networking/ip-sysct...
- majke 1y agousually better to set IPV6_V6ONLY in the application itself.
- eqvinox 1y agoThis affects -to my best knowledge- only bind()ing, not outgoing connect()ing. As the name implies, really. (I should try this, not entirely sure tbh.) It won't help you though if the resolver library gives you a ::ffff:ma.p.p.ed address (yes they can do that), then you just fail to connect…
- aaronmdjones 1y agoI did try this. connect(2) with an IPv4-mapped IPv6 address on an AF_INET6 socket with IPV6_V6ONLY set on it fails.
- eqvinox 1y agoVery good to know, Thanks for trying!
- jcalvinowens 1y agoIt's important to emphasize it only changes the default behavior: unprivileged programs can still use setsockopt(..., IPPROTO_IPV6, IPV6_V6ONLY, ...) to override it. That's not a terribly uncommon thing to do, since different distros have historically used different defaults for the sysctl: you'll have to handle it either way.