光猫桥接后,手把手教你用EdgeRouter-X搞定电信/联通/移动的IPv6(DHCPv6-PD + SLAAC)
EdgeRouter-X全屋IPv6实战三网通用配置指南家里那台EdgeRouter-X已经默默工作两年多了直到上个月给NAS升级双万兆网卡时才发现内网设备竟然还在用IPv4互相访问。这就像在5G时代用2G网络传文件一样别扭。更让我惊讶的是电信师傅上门调试时随口说了句你们小区早支持IPv6了我才意识到自己错过了什么。1. 为什么你的家庭网络需要IPv6去年帮朋友调试智能家居时他家的30多个IoT设备把192.168.1.x的地址池占得满满当当。当时不得不划分子网来解决但NAT转换带来的延迟让智能门铃总是慢半拍。这就是典型的IPv4局限——地址枯竭和NAT穿透问题。IPv6带来的改变是颠覆性的地址空间爆炸理论3.4×10³⁸个地址足够给地球上每粒沙子分配IP无NAT直连每台设备都有公网可达地址当然需要防火墙更好的QoS视频会议、云游戏等实时应用延迟更低未来必备苹果App Store已要求支持IPv6-only网络我的ER-X跑的是v2.0.9-hotfix.5固件这个版本对IPv6的支持已经相当完善。下面就以电信/联通/移动三大运营商的真实环境为例带你一步步解锁全屋IPv6。2. 前期准备光猫桥接与ER-X基础配置上周邻居老王抱怨他的小米路由器获取不到IPv6地址我去看了才发现问题出在光猫上——电信默认光猫是路由模式只会给自己分配IPv6地址。必须完成的准备工作进入光猫后台通常是192.168.1.1找到宽带连接设置将模式改为桥接记录原有的VLAN ID不同运营商不同电信一般是41保存重启后用网线连接光猫LAN1口和ER-X的eth0注意改桥接会重置光猫建议先记下LOID/密码等认证信息。部分地区运营商禁止桥接可能需要特殊方法。我的网络拓扑是这样的[光猫]-(eth0)-[ER-X]-(switch0)-[内网设备] PPPoE拨号 |__PC |__NAS |__AP3. 核心配置DHCPv6-PD与SLAAC实战ER-X最让人头疼的就是Config Tree界面第一次见可能觉得像在看天书。但其实理解了这三个关键概念就简单了DHCPv6-PD运营商通过PPPoE给你分配IPv6前缀比如240e:1234:5678::/56SLAAC设备根据路由器通告自动生成自己的IPv6地址Router Advertisement路由器告诉内网设备我这有IPv6可以用具体配置步骤登录ER-X网页后台进入Config Tree导航到interfaces ethernet eth0 pppoe 0启用以下参数{ dhcpv6-pd: { prefix-only: true, pd: { 0: { interface: switch0, prefix-length: 56, host-address: ::1, prefix-id: 0, service: slaac } } } }这里有个关键点prefix-length要根据运营商调整电信常用/56联通可能是/60移动可能是/64如果设置后拿不到地址就像调收音机一样多试几个频段。我在深圳电信用/56成功北京联通的同事则需要设为/60。4. 运营商特调三网适配技巧上个月出差时带着ER-X在不同城市酒店测试发现三大运营商的IPv6分配策略确实有差异运营商前缀长度认证方式特殊要求电信/56PPPoE需开启IPv6CP联通/60PPPoE需设置MTU1492移动/64DHCPv6需关闭RA的M标志电信用户特别注意 在interfaces pppoe 0下需要添加ipv6 enable enable-ipv6cp true移动用户可能遇到 获取到前缀但设备无法上网需要在ipv6 router-advert设置managed-configuration false other-configuration true5. 防火墙与安全加固拿到IPv6公网地址后我的NAS第二天就收到了扫描尝试。这提醒我必须要设置防火墙configure set firewall ipv6-name WANv6_IN default-action drop set firewall ipv6-name WANv6_IN rule 10 action accept set firewall ipv6-name WANv6_IN rule 10 protocol icmpv6 set firewall ipv6-name WANv6_IN rule 20 action accept set firewall ipv6-name WANv6_IN rule 20 protocol tcp set firewall ipv6-name WANv6_IN rule 20 destination port 22,80,443 set firewall ipv6-name WANv6_IN rule 30 action drop set firewall ipv6-name WANv6_IN rule 30 protocol all commit save这个规则集允许必要的ICMPv6邻居发现等开放SSH和Web常用端口默认丢弃其他所有入站请求6. 疑难排查常见问题解决方案调试过程中我踩过的坑可能你也正在经历问题1能ping通IPv6网站但浏览器打不开原因MTU设置不当导致分片丢失解决在PPPoE接口设置MTU1480set interfaces ethernet eth0 pppoe 0 mtu 1480问题2设备获取到fe80开头的本地地址原因Router Advertisement未正确传播检查show ipv6 routers应该能看到ER-X发出的RA问题3前缀频繁变更导致设备离线原因运营商DHCPv6租期太短解决在DHCPv6客户端配置快速续约set interfaces ethernet eth0 pppoe 0 dhcpv6-pd rapid-commit enable7. 高级玩法IPv6 DDNS与远程访问有了稳定的IPv6环境后我在ER-X上实现了通过DDNS远程唤醒家里电脑直接访问NAS的IPv6地址传输文件智能家居设备间直连控制用这个脚本自动更新DNS记录#!/usr/bin/env python3 import requests import socket import time DOMAIN yourdomain.ddns.net API_KEY your_api_key def get_prefix(): with open(/var/run/dhcp6c/prefix) as f: return f.read().split(/)[0] while True: try: current_ip socket.getaddrinfo(DOMAIN, None, socket.AF_INET6)[0][4][0] new_prefix get_prefix() 1 # ::1地址 if new_prefix ! current_ip: requests.post(fhttps://api.dyn.com/v3/update?hostname{DOMAIN}ipv6{new_prefix}apikey{API_KEY}) except Exception as e: print(fError: {e}) time.sleep(300)把这个脚本放在/config/scripts/post-config.d/下就能开机自启。现在我的游戏本即使在外面也能用IPv6远程桌面回家延迟比传统内网穿透低了40ms左右。8. 性能优化与监控最后分享几个提升IPv6体验的技巧QoS配置set traffic-policy shaper HOSTv6 bandwidth 1000mbit set traffic-policy shaper HOSTv6 default bandwidth 80% set interfaces switch switch0 traffic-policy out HOSTv6监控命令实时流量show interfaces switch0 trafficDHCPv6状态show dhcpv6-pd leases邻居缓存show ipv6 neighbors在ER-X的Dashboard添加IPv6监控面板后我注意到一个有趣现象智能电视的IPv6流量比IPv4少了约15%的开销这应该得益于更精简的协议头。