1. 为什么家庭网络需要IPv6?
家里装了500M宽带,测速却总跑不满?手机连WiFi看4K视频偶尔卡顿?这些问题的根源可能在于你的网络还停留在IPv4时代。IPv6作为下一代互联网协议,不仅能解决IP地址枯竭问题,还能带来更直接的端到端连接。我去年给父母家改造网络时,实测开启IPv6后,抖音加载速度提升了30%,微信视频通话画质明显改善。
IPv6最直观的优势是地址数量近乎无限。想象一下,IPv4的地址总量约42亿个,相当于给地球上每人分不到一个IP;而IPv6的地址数量是2的128次方,足够给每粒沙子都分配上万个IP。实际使用中,这意味着:
- 智能家居设备不再需要NAT转换
- 远程访问家庭NAS更简单
- 视频会议延迟更低
2. 环境准备与基础检查
2.1 硬件设备清单
我的测试环境采用主流家庭组网方案:
- 光猫:华为HS8145V(运营商提供)
- 主路由:斐讯K3刷OpenWrt 21.02
- 测试终端:小米手机、MacBook Pro
关键点在于确认光猫是否支持IPv6。有个简单判断方法:用网线直连光猫,在电脑上打开test-ipv6.com,如果显示"支持IPv6互联网",说明运营商已开通该功能。我遇到过某地移动宽带需要打客服电话手动开通IPv6的情况。
2.2 OpenWrt基础配置
登录OpenWrt管理界面(默认地址192.168.1.1),首先检查系统版本:
cat /etc/openwrt_release建议使用较新的21.02及以上版本,老版本对IPv6支持可能不完善。我曾在18.06版本遇到DHCPv6分配异常的问题,升级后解决。
3. 核心接口配置详解
3.1 WAN口配置关键步骤
进入"网络→接口",点击WAN口的"编辑":
基本设置:
- 协议:PPPoE(与光猫拨号方式一致)
- 获取IPv6地址:自动
- 使用内置IPv6管理:取消勾选
高级设置:
- 使用默认网关:勾选
- 使用DNS服务器自动获取:勾选
防火墙设置:
- 分配到wan区域
这里有个坑我踩过:如果光猫是桥接模式,需要确保WAN口MTU值为1492(PPPoE默认值),否则会导致部分网站无法访问。可以通过ping测试验证:
ping -s 1472 www.baidu.com如果出现"Packet needs to be fragmented"提示,就需要调小MTU值。
3.2 WAN6接口创建指南
很多新手卡在找不到WAN6接口,其实需要手动创建:
- 点击"添加新接口"
- 名称填"WAN6"
- 协议选择"DHCPv6客户端"
- 接口选择与WAN口相同的物理接口(通常是eth0.2)
重点在高级设置:
- 请求IPv6地址:try
- 请求IPv6前缀:force
- 使用自定义DNS服务器:2400:3200::1(阿里云IPv6 DNS)
实测发现,不同运营商对前缀委派的支持不同。中国电信一般会分配/60前缀,而中国移动可能只给/64。可以通过以下命令检查:
ubus call network.interface.wan6 status | grep -A 3 ipv6-prefix4. LAN侧IPv6部署方案
4.1 DHCPv6服务器配置
进入LAN口设置→DHCP服务器→IPv6设置:
- 路由器通告服务:服务器模式
- DHCPv6服务:服务器模式
- NDP代理:禁用
- 总是通告默认路由:启用
这里有个实用技巧:设置IPv6分配长度为64。有些教程建议设为60,但实际测试发现,家用设备可能无法正确处理非64位前缀。我家的智能音箱就因此无法获取IPv6地址。
4.2 防火墙注意事项
在"网络→防火墙"设置中,确保:
- 入站数据:接受
- 出站数据:接受
- 转发:接受
- 添加一条允许ICMPv6的规则:
ip6tables -A INPUT -p icmpv6 -j ACCEPT
特别提醒:某些OpenWrt版本存在IPv6防火墙的bug,会导致外网无法访问内网设备。可以通过临时禁用防火墙测试:
/etc/init.d/firewall stop如果此时IPv6连通性恢复,就需要调整防火墙规则。
5. 实战测试与排错
5.1 基础连通性测试
完成配置后,建议按顺序验证:
- 检查WAN6口是否获取到公网IPv6:
ifconfig eth0.2 | grep inet6 - 查看LAN口IPv6前缀分配:
ubus call network.interface.lan status | grep -A 5 ipv6-prefix - 在客户端测试:
ping6 2400:da00::6666 # 百度IPv6测试地址
5.2 常见故障排除
症状1:能ping通IPv6地址但打不开网页
- 原因:DNS解析失败
- 解决方案:
echo 'nameserver 2400:3200::1' > /tmp/resolv.conf.auto
症状2:设备获取到fe80开头的地址
- 原因:路由器通告未生效
- 检查:
可能需要重启路由通告服务:logread | grep radvd/etc/init.d/odhcpd restart
症状3:部分网站加载不全
- 原因:MTU设置不当
- 调试方法:
逐步减小-s参数值,直到能正常ping通。ping6 -s 1400 -M do www.qq.com
6. 高级优化技巧
6.1 前缀委派持久化
有些运营商会频繁变更IPv6前缀,导致内网设备地址变化。可以通过hook脚本固定后缀:
cat << "EOF" > /etc/hotplug.d/iface/99-ipv6 #!/bin/sh [ "$ACTION" = ifup ] || exit 0 [ "$INTERFACE" = wan6 ] || exit 0 sleep 5 uci set network.globals.ula_prefix="$(uci get network.wan6.prefix | cut -d: -f1-4):1::/64" uci commit network /etc/init.d/network reload EOF chmod +x /etc/hotplug.d/iface/99-ipv66.2 智能QoS配置
IPv6环境下传统QoS可能失效,推荐使用sqm-scripts:
opkg install sqm-scripts配置示例:
uci set sqm.lan=queue uci set sqm.lan.interface=eth0.1 uci set sqm.lan.download=500000 # 500Mbps uci set sqm.lan.upload=100000 # 100Mbps uci set sqm.lan.qdisc=fq_codel uci commit sqm /etc/init.d/sqm start7. 安全加固建议
IPv6环境会直接暴露内网设备,需要特别注意:
- 启用NAT66(不推荐,但能增加安全性):
ip6tables -t nat -A POSTROUTING -o eth0.2 -j MASQUERADE - 限制ICMPv6类型:
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -m limit --limit 5/s -j ACCEPT - 关闭不必要的服务IPv6监听:
uci set uhttpd.main.listen_http='0.0.0.0:80' uci commit uhttpd /etc/init.d/uhttpd restart
最后提醒,每次修改配置后,建议按顺序重启服务:
/etc/init.d/network restart /etc/init.d/firewall restart /etc/init.d/odhcpd restart