如何在 Windows、macOS、Linux 和路由器上启用 IPv6
让 IPv6 在你的设备和网络上工作。Windows、macOS、Linux 和流行路由器品牌的分步说明。
先决条件#
在启用 IPv6 之前,你需要三样东西:
- ISP 支持 - 致电你的 ISP 或查看他们的文档。如果他们不提供 IPv6,其他都无关紧要。
- 路由器支持 - 过去 5-7 年的任何路由器都应该可以工作。如果不确定,请查看规格表。
- 现代操作系统 - Windows 7+、macOS 10.7+ 或过去十年的任何 Linux 都包括 IPv6。
大多数 ISP 已经启用了 IPv6 而没有告诉任何人。你可能已经拥有它。
TL;DR - 快速摘要
要点:
- 通过访问 ping6.net 或运行
ping6 ipv6.google.com检查你是否已有 IPv6 - Windows/macOS/Linux:IPv6 默认启用——只需配置路由器
- 路由器:启用 IPv6,将连接类型设置为「原生/自动」,启用路由器通告
- 安全性:配置 IPv6 防火墙规则以匹配 IPv4 策略
- 隐私:在客户端设备上启用隐私扩展以防止 MAC 地址跟踪
跳转至: Windows 配置 | macOS 设置 | Linux 指南 | 路由器配置
检查你是否已经有 IPv6#
在配置任何东西之前,检查你的当前状态。访问 ping6.net 查看你的 IPv6 地址是否自动检测到。
从命令行,尝试 ping 仅 IPv6 主机:
# Windows
ping -6 ipv6.google.com
# macOS/Linux
ping6 ipv6.google.com如果你收到回复,你就完成了。如果没有,请继续阅读。
Windows 10/11#
Windows 上默认启用 IPv6,但以下是如何验证或重新启用它。
GUI 方法#
- 按
Win + R,键入ncpa.cpl,按 Enter - 右键单击你的网络适配器 → 属性
- 在列表中找到 Internet Protocol Version 6 (TCP/IPv6)
- 确保复选框已选中
- 选择它,单击 属性
- 选择 自动获取 IPv6 地址
- 选择 自动获取 DNS 服务器地址
- 单击 确定
PowerShell 方法#
以管理员身份打开 PowerShell:
# 检查 IPv6 状态
Get-NetAdapterBinding -ComponentID ms_tcpip6
# 在特定适配器上启用 IPv6
Enable-NetAdapterBinding -Name "Ethernet" -ComponentID ms_tcpip6
# 在所有适配器上启用
Get-NetAdapter | Enable-NetAdapterBinding -ComponentID ms_tcpip6
# 验证它工作了
Get-NetIPAddress -AddressFamily IPv6
# 测试连接
Test-NetConnection -ComputerName ipv6.google.com如果事情不工作,重置 IPv6 栈:
netsh int ipv6 reset
ipconfig /flushdns然后重启你的网络适配器或重启。
不要在 Windows 上禁用 IPv6
Microsoft 明确建议即使你不使用 IPv6 也保持启用。禁用它会破坏 DirectAccess、HomeGroup,并可能导致 DNS 解析延迟。
macOS#
默认启用 IPv6。以下是如何验证或配置它。
系统设置#
- 打开 系统设置 → 网络
- 选择你的连接(Wi-Fi 或以太网)
- 单击 详细信息
- 转到 TCP/IP 选项卡
- 在 配置 IPv6 下,选择:
- 自动 - 用于 SLAAC/DHCPv6(推荐)
- 仅链路本地 - 仅用于本地网络
- 手动 - 用于静态地址
终端#
# 检查当前 IPv6 配置
networksetup -getinfo "Wi-Fi"
# 启用自动 IPv6
networksetup -setv6automatic "Wi-Fi"
# 显示所有 IPv6 地址
ifconfig | grep inet6
# 测试连接
ping6 ipv6.google.com对于静态配置:
# 设置静态地址
sudo networksetup -setv6manual "Wi-Fi" 2001:db8::10 64 2001:db8::1Linux#
配置方法取决于你的发行版和网络管理器。
NetworkManager(Ubuntu、Fedora、RHEL)#
GUI:
- 设置 → 网络
- 单击连接旁边的齿轮图标
- 转到 IPv6 选项卡
- 将方法设置为:
- 自动 - 带路由器通告的 SLAAC(默认)
- 仅自动,DHCP - 仅 DHCPv6
- 手动 - 静态配置
- 单击 应用
使用 nmcli 的命令行:
# 检查当前设置
nmcli connection show "Wired connection 1" | grep ipv6
# 启用 SLAAC
nmcli connection modify "Wired connection 1" ipv6.method auto
# 启用 DHCPv6
nmcli connection modify "Wired connection 1" ipv6.method dhcp
# 静态配置
nmcli connection modify "Wired connection 1" \
ipv6.method manual \
ipv6.addresses "2001:db8::10/64" \
ipv6.gateway "2001:db8::1"
# 应用更改
nmcli connection up "Wired connection 1"systemd-networkd(Arch、Debian 服务器安装)#
编辑 /etc/systemd/network/20-wired.network:
[Match]
Name=eth0
[Network]
DHCP=yes
IPv6AcceptRA=yes
# 或用于静态:
# Address=2001:db8::10/64
# Gateway=2001:db8::1重启服务:
sudo systemctl restart systemd-networkd使用 ip 命令的手动配置#
对于临时配置或故障排除:
# 显示当前 IPv6 地址
ip -6 addr show
# 添加 IPv6 地址
sudo ip -6 addr add 2001:db8::10/64 dev eth0
# 添加默认路由
sudo ip -6 route add default via 2001:db8::1 dev eth0
# 检查路由表
ip -6 route show此配置不会在重启后保留。对于永久更改,使用 NetworkManager 或 systemd-networkd。
在 Linux 上测试#
# Ping IPv6 地址
ping6 2001:4860:4860::8888
# 通过 IPv6 ping 主机名
ping -6 google.com
# Traceroute
traceroute6 google.com
# 检查路由表
ip -6 route show
# 显示邻居发现缓存
ip -6 neigh show路由器配置#
你的路由器需要从你的 ISP 请求 IPv6 并向你的 LAN 通告前缀。配置因品牌而异。
消费者路由器的通用步骤#
- 登录你的路由器(通常是
192.168.1.1或192.168.0.1) - 找到 IPv6 设置(在 高级、互联网 或 WAN 下)
- 启用 IPv6
- 根据你的 ISP 选择连接类型:
- 原生/自动 - 最常见,首先使用这个
- DHCPv6 - ISP 使用 DHCPv6 前缀委派
- PPPoE - 如果你为 IPv4 使用 PPPoE
- 6rd 或 6to4 - 传统隧道(罕见)
- 为你的 LAN 启用路由器通告
- 为你的 LAN 客户端启用 SLAAC 或 DHCPv6(或两者)
- 保存并在需要时重启
重启后等待 30-60 秒,然后检查你的设备是否有 IPv6 地址。
ASUS 路由器#
- 高级设置 → IPv6
- 连接类型:原生或自动
- 接口:匹配你的 WAN 类型(PPPoE 的 PPP,DHCP 的以太网)
- DHCP-PD:启用
- 路由器通告:启用
- 应用
ASUS 路由器通常自动检测正确的设置。如果「自动」不工作,尝试「原生」。
TP-Link 路由器#
- 高级 → IPv6
- 启用 IPv6:开
- 互联网连接类型:动态 IP(SLAAC/DHCPv6)
- 保存
TP-Link 固件因型号而异很大。一些较旧的型号需要「自动配置」或「自动检测」。
Netgear 路由器#
- 高级 → 高级设置 → IPv6
- 互联网连接类型:自动检测(或自动配置)
- 应用
Netgear 的自动检测在大多数 ISP 上效果很好。如果失败,手动尝试「DHCPv6」。
UniFi(Ubiquiti)#
- 设置 → 互联网
- 选择你的 WAN 网络
- IPv6 连接:DHCPv6
- 前缀委派大小:/60(或如果你的 ISP 提供,/56)
- IPv6 RA:启用
- DHCPv6/RDNSS DNS 控制:自动
- 应用更改
UniFi 对配置更挑剔。检查你的 ISP 文档以了解正确的前缀委派大小。
pfSense / OPNsense#
WAN 接口:
- 接口 → WAN
- IPv6 配置类型:DHCPv6
- DHCPv6 前缀委派大小:60 或 56(与 ISP 核实)
- 仅请求 IPv6 前缀:未选中(你想要 WAN 地址和前缀)
- 发送 IPv6 前缀提示:如果你的 ISP 需要,请选中
- 保存 → 应用
LAN 接口:
- 接口 → LAN
- IPv6 配置类型:跟踪接口
- IPv6 接口:WAN
- IPv6 前缀 ID:0(为其他 VLAN 递增)
- 保存 → 应用
路由器通告:
- 服务 → DHCPv6 服务器和 RA
- 选择 LAN 接口
- 路由器模式:辅助(启用 SLAAC + DHCPv6)
- 路由器优先级:正常
- 保存
pfSense 和 OPNsense 给你最多的控制,但需要理解你的 ISP 的 IPv6 部署方法。大多数有线电视 ISP 使用带 /60 前缀的 DHCPv6-PD。
DNS 配置#
你的设备将通过路由器通告或 DHCPv6 接收 DNS 服务器,但你可以使用公共 IPv6 DNS 服务器覆盖它们。
公共 IPv6 DNS 服务器#
| 提供商 | 主要 | 次要 | 功能 |
|---|---|---|---|
| Google Public DNS | 2001:4860:4860::8888 | 2001:4860:4860::8844 | 快速,无过滤 |
| Cloudflare | 2606:4700:4700::1111 | 2606:4700:4700::1001 | 注重隐私,快速 |
| Quad9 | 2620:fe::fe | 2620:fe::9 | 恶意软件阻止 |
| OpenDNS | 2620:119:35::35 | 2620:119:53::53 | 可用内容过滤 |
设置 DNS 服务器#
Windows(PowerShell):
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" `
-ServerAddresses "2001:4860:4860::8888","2001:4860:4860::8844"macOS:
networksetup -setdnsservers "Wi-Fi" 2001:4860:4860::8888 2001:4860:4860::8844Linux(systemd-resolved):
编辑 /etc/systemd/resolved.conf:
[Resolve]
DNS=2001:4860:4860::8888 2001:4860:4860::8844然后重启:
sudo systemctl restart systemd-resolvedLinux(NetworkManager):
nmcli connection modify "Wired connection 1" \
ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
nmcli connection up "Wired connection 1"隐私扩展#
没有隐私扩展,你的 IPv6 地址包含你的 MAC 地址。这可以跨网络跟踪。
隐私扩展(RFC 4941)生成定期轮换的临时地址。现代系统默认启用此功能,但请验证。
Windows:
# 检查状态
netsh interface ipv6 show privacy
# 如果需要启用
netsh interface ipv6 set privacy state=enabledmacOS:
# 检查状态(应返回 1)
sysctl net.inet6.ip6.use_tempaddrmacOS 上默认启用隐私扩展。如果它返回 0,你的系统配置有问题。
Linux:
# 检查状态(2 = 优先临时地址)
sysctl net.ipv6.conf.all.use_tempaddr
# 临时启用
sudo sysctl -w net.ipv6.conf.all.use_tempaddr=2
# 永久启用
echo "net.ipv6.conf.all.use_tempaddr = 2" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p有关更多详细信息,请参阅我们关于 IPv6 隐私扩展的文章。
验证#
配置 IPv6 后,验证一切正常:
- **检查地址:**使用
ipconfig /all(Windows)、ifconfig(macOS/Linux)或ip -6 addr(Linux) - **验证连接:**访问 ping6.net 或使用我们的连接测试
- **测试 DNS:**使用我们的 IPv6 DNS 查找工具
- **检查路由:**使用我们的 Traceroute 工具追踪到
2001:4860:4860::8888的路径
你应该看到 IPv6 地址(以 2 或 3 开头,而不是 fe80)和成功连接到 IPv6 主机。
fe80 地址呢?
以 fe80:: 开头的链路本地地址是正常的,存在于每个 IPv6 接口上。它们仅用于本地网络通信,而不是互联网连接。你需要全局可路由的地址(以 2 或 3 开头)才能访问 IPv6 互联网。
故障排除#
没有 IPv6 地址#
按顺序检查:
- 你的 ISP 是否支持 IPv6?致电他们或查看他们的网站。
- 你的路由器上是否启用了 IPv6?登录并验证。
- 你的路由器上是否启用了路由器通告?它必须广播 RA 消息。
- 你的防火墙是否阻止 ICMPv6?ICMPv6 对于 IPv6 是强制性的,与 IPv4 的 ICMP 不同。
**快速测试:**将设备直接连接到你的调制解调器(绕过路由器)。如果你获得 IPv6 地址,问题在你的路由器配置中。
有地址但没有连接#
按顺序检查:
- 你有默认路由吗?运行
ip -6 route(Linux)或netstat -rn -f inet6(macOS)并查找default条目。 - 你可以 ping 你的网关吗?使用
ip -6 route找到你的网关,然后使用ping6 <gateway>ping 它。 - 你可以 ping 外部 IPv6 主机吗?尝试
ping6 2001:4860:4860::8888。 - 你的 DNS 工作吗?尝试
nslookup google.com 2001:4860:4860::8888。
大多数「无连接」问题要么是缺少默认路由,要么是防火墙规则阻止 IPv6 流量。
IPv6 缓慢或不一致#
这通常表明路径 MTU 发现(PMTUD)损坏。一些 ISP 或路由器阻止 ICMPv6「数据包太大」消息,破坏 PMTUD。
测试:
# 使用大数据包大小 ping
ping6 -s 1400 ipv6.google.com如果这失败但小 ping 工作,你有 PMTUD 问题。联系你的 ISP 或将路由器 WAN 接口上的 MTU 减少到 1480。
有关详细的故障排除,请参阅我们关于故障排除 IPv6 连接的指南。
相关文章#
- IPv6 故障排除:修复常见连接问题 - 学习如何诊断和解决 IPv6 连接问题的实用指南。
- DHCPv6 vs SLAAC:设备如何获取 IPv6 地址 - 深入了解 IPv6 地址自动配置的两种方式。