如何在 Linux 的 Windows 子系统上禁用 IPv6?

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)

Jai*_*ime 5

相反,完全禁用IPv6的,你可以指示的Ubuntu到喜欢到IPv6的IPv4连接通过编辑优先块/etc/gai.conf

使用此解决方案:

  • 您可以通过 NAT 或仅理解 IPv4 的路由器访问具有 IPv4 的 Internet 服务器和 IPv6 服务器
  • 在本地网络中使用 IPv4 和 IPv6
  • 避免错误,例如,从 ruby​​gems.org 安装 gem 文件

首选 IPv4 而非 IPV6 地址

修改 中的优先级gai.conf,每次程序调用getaddrinfo()解析主机名时,Linux 将更喜欢 IPv4 地址。当您尝试从位于 NAT 或路由器后面的机器上联系具有 IPv4 和 IPv6 地址的服务器时,这非常有用。此外,您可以在本地使用 IPv6。

  1. 编辑 /etc/gai.conf
$ sudo vi /etc/gai.conf
Run Code Online (Sandbox Code Playgroud)
  1. 取消注释最后几行。检查该文件是否具有下一个未注释的行。
#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。

  1. 控制面板>网络和共享中心>更改适配器设置
    Win+R ncpa.cpl Enter
  2. 在您的适配器(例如以太网)上,右键单击 >属性
    或双击 >属性
    Alt+Enter
    更改此连接的设置
  3. 取消选中Internet 协议版本 6 (TCP/IPv6)
  4. 好的
  5. 根据需要对其他适配器(例如 WiFi)重复此操作

请注意,这将为所有 Windows(使用该适配器时)禁用 IPv6,而不仅仅是 WSL。