How to disable IPv6 on Windows Subsystem for Linux?
Solution 1
Instead of disabling IPv6 completely, you can instruct Ubuntu to prefer IPv4 connections to IPv6 by editing the precedence blocks in /etc/gai.conf
.
Using this solution:
- You may access servers in Internet with IPv4 an IPv6 servers through a NAT or a router that only understand IPv4
- Use IPv4 and IPv6 in the local network
- Avoid errors, for instance, installing gem files from rubygems.org
Preferring IPv4 over IPV6 addresses
Modifying the precedences in the gai.conf
, every time a program calls getaddrinfo()
for resolving host names, Linux will prefer the IPv4 addreses. This is very useful when you try to contact a server with both IPv4 and IPv6 addresses from a machine behind a NAT or a router. In addition, you may use IPv6 locally.
- Edit the
/etc/gai.conf
$ sudo vi /etc/gai.conf
- Uncomment the last lines. Check that file has the next uncommented lines.
#For sites which prefer IPv4 connections change the last line to
precedence ::ffff:0:0/96 100
...
# For sites which use site-local IPv4 addresses behind NAT there is
# the problem that even if IPv4 addresses are preferred they do not
# have the same scope and are therefore not sorted first. To change
# this use only these rules:
#
scopev4 ::ffff:169.254.0.0/112 2
scopev4 ::ffff:127.0.0.0/104 2
scopev4 ::ffff:0.0.0.0/96 14
Solution 2
I disabled IPv6 in the Windows network adapter properties and that took care of the problem for me. My Ubuntu subsytem started using IPv4 instead.
-
Control Panel > Network and Sharing Center > Change adapter settings
or Win+Rncpa.cpl
Enter - On your adapter (e.g. Ethernet), right-click > Properties
or double-click > Properties
or Alt+Enter
or Change settings of this connection - Uncheck Internet Protocol Version 6 (TCP/IPv6)
- OK
- Repeat as necessary for other adapters, like WiFi
Note that this will disable IPv6 for all of Windows (when using that adapter), not just WSL.
Related videos on Youtube
Comments
-
Răzvan Flavius Panda over 1 year
I tried to disable IPv6 by adding in
/etc/sysctl.conf
:net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
and then running
sudo sysctl -p
to reload the/etc/sysctl.conf
settings - but that threw the error:sysctl: cannot stat /proc/sys/net/ipv6/conf/all/disable_ipv6: No such file or directory
I tried to also disable it by changing grub configuration
/etc/default/grub.d/50-cloudimg-settings.cfg
to:GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 console=tty1 console=ttyS0"
and then run
sudo update-grub
but there is no update-grub installed:sudo: update-grub: command not found
So I am not sure if it is even possible to update grub, but the fact there is a specific configuration located there makes me thing there is.
WSL version:
Description: Ubuntu 16.04.2 LTS Release: 16.04 Codename: xenial
-
Charles Green over 6 yearsThe
update-grub
command is in the packagegrub2-common
, and generally I make changes to/etc/default/grub
. In a straight Ubuntu installation, I don't seem to have the directory that you specify for grub. -
muru over 6 yearsThere's no point to GRUB or doing core network related changes - booting and networking are in the hands of Windows. As for the config file, there's no reason for it to not exist; the files come from the unmodified Ubuntu packages that WSL uses.
-
WinEunuuchs2Unix over 6 yearsEchoing what @muru says there is no point in using grub anymore for dual booting. Indeed you can quadruple use Windows, Ubuntu, Suse and Fedora concurrently with low disk and memory requirements because not needing VM. Historically you would figuratively "bash on windows" but now you can literally run "bash on windows".
-
Jacktose about 6 yearsI also got the
cannot stat
error when runningsudo sysctl -p
, but it seemed to work anyway. At least,apt
is not throwing IPv6 errors anymore. Edit: Yes it is, sometimes. Still looking for a solid fix. -
wjandrea about 6 years@muru Could you add that as answer? This question is getting flagged as "off-topic" but it's not really off-topic if the answer is "it's not possible".
-
-
stumblebee about 6 yearsCan you give instructions on how to disable IPv6?
-
Jacktose about 6 years@stumblebee Instructions added. It would be really nice to have a way to do it just in WSL, though.
-
apokaliptis over 4 yearsI have IPv6 disabled on windows because I don't have IPv6 with my ISP, but WSL still has an inet6 (IPv6) loopback interface, which I believe is preventing certain domains from resolving properly for me. The URLs,
sh.rustup.rs
andstatic.rust-lang.org
(for installing rust build tools), wont resolve in WSL unless I use-4
flag incurl
orwget
. -
TracKer about 4 yearsSomething in Windows keeps enabling it each time WSL is running.
-
Stéphane about 4 yearsAmazing, I had no idea this file even exist ! What stands for
gai
?? -
Yvon almost 3 years@Stéphane Get Address Information
-
Admin almost 2 years