Răz*_*nda 7 ipv6 networking 16.04 ipv4 windows-subsystem-for-linux
我试图通过添加以下内容来禁用 IPv6 /etc/sysctl.conf:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Run Code Online (Sandbox Code Playgroud)
然后运行sudo sysctl -p以重新加载/etc/sysctl.conf设置 - 但这引发了错误:
sysctl: cannot stat /proc/sys/net/ipv6/conf/all/disable_ipv6: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我还尝试通过将 grub 配置更改/etc/default/grub.d/50-cloudimg-settings.cfg为以下内容来禁用它:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 console=tty1 console=ttyS0"
Run Code Online (Sandbox Code Playgroud)
然后运行sudo update-grub但没有安装 update-grub:
sudo: update-grub: command not found
Run Code Online (Sandbox Code Playgroud)
所以我不确定是否有可能更新 grub,但事实上有一个特定的配置位于那里让我觉得有。
WSL 版本:
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial
Run Code Online (Sandbox Code Playgroud)
相反,完全禁用IPv6的,你可以指示的Ubuntu到喜欢到IPv6的IPv4连接通过编辑优先块/etc/gai.conf。
使用此解决方案:
首选 IPv4 而非 IPV6 地址
修改 中的优先级gai.conf,每次程序调用getaddrinfo()解析主机名时,Linux 将更喜欢 IPv4 地址。当您尝试从位于 NAT 或路由器后面的机器上联系具有 IPv4 和 IPv6 地址的服务器时,这非常有用。此外,您可以在本地使用 IPv6。
/etc/gai.conf$ sudo vi /etc/gai.conf
Run Code Online (Sandbox Code Playgroud)
#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
Run Code Online (Sandbox Code Playgroud)
小智 4
我在 Windows 网络适配器属性中禁用了 IPv6,这解决了我的问题。我的 Ubuntu 子系统开始使用 IPv4。
ncpa.cpl Enter请注意,这将为所有 Windows(使用该适配器时)禁用 IPv6,而不仅仅是 WSL。