博主头像
mxd's Blog

以技术为翼,以生活为魂

OpenWrt 定时自动刷新 IPv6 前缀 的 2 种姿势

为什么要“刷新 PD”?

国内大多数家宽只给 /56 或 /64 的 动态 IPv6 前缀,且租期短(12-16 小时)。(反正我这边移动是这样的,抠门的一批)
一旦前缀过期而路由器没及时续租,外网就 ping 不到家里的 NAS、监控、PT 盒子……
最干脆的解决办法就是 周期性地让路由器重新向 ISP 索要前缀
下面把我在 OpenWrt 上用的两套方案打包奉上,复制粘贴就能用。

方案 A:整接口重启(简单粗暴)

适用场景:

  • 小白用户
  • IPv4/IPv6 双栈拨号,不介意 3 秒闪断
  • 任何版本 OpenWrt 均自带 ifup/ifdown

1. 写定时任务

SSH 登录路由,执行

crontab -e

添加一行(每 4 小时整点刷新,可自行改)

0 */4 * * * ifdown wan6 && sleep 5 && ifup wan6

保存退出,cron 自动生效。

2. 原理拆解

  • ifdown wan6 → 内核把 wan6 接口 DOWN,odhcp6c 进程退出,向 ISP 发送 Release。
  • sleep 5 → 给光猫/局端留点反应时间。
  • ifup wan6 → netifd 重新拉起 odhcp6c,发 Solicit → ISP 回 Advertise → 路由器 Request → ISP 回 Reply(里面就带新的 /56 PD)。

3. 验证

logread -e odhcp6c | tail -20

看到 Got PD 240e:abcd:ef00::/56 且前缀与上次不同,说明刷新成功。

方案 B:只重启 DHCPv6 客户端(不断 IPv4)

适用场景:

  • 24h 挂 PT、游戏加速,不想 IPv4 闪断
  • 想 10~20 分钟级高频刷新(ISP 允许)

1. 新建脚本

cat > /root/refresh_pd.sh << 'EOF'
#!/bin/sh
killall -SIGTERM odhcp6c      # 温和退出
sleep 3
logger -t IPv6 "PD refresh triggered by cron"
EOF
chmod +x /root/refresh_pd.sh

2. 写定时任务

crontab -e

添加

*/20 * * * * /root/refresh_pd.sh

即每 20 分钟刷新一次,间隔随意改。

3. 原理

odhcp6c 被 kill 后,netifd 检测到进程退出,会自动再启动一个,同样走完 Solicit→Advertise→Request→Reply,PD 更新完成;IPv4 的 pppoe/ dhcp 客户端完全不受影响,WAN 口不会掉线。

常见问题 FAQ

  1. 刷新后 LAN 设备地址没变?
    把 LAN 口的 “IPv6 分配长度” 设成 60(或 64),并开启 RA + SLAAC,终端会在前缀变化后自动重新生成地址。
  2. ISP 一直给同一个前缀?
    运营商把前缀绑定了 DUID。想真正“换”地址,需删除旧 DUID:

    rm /var/lib/dhcpv6/*
    reboot

    重启后会生成新 DUID,ISP 才会丢新前缀给你。

  3. 最短多久刷一次?
    家用宽带建议 ≥2 h,商业专线别超过 ISP 租期 1/2 即可,太频繁可能被限速或拒绝响应。

一行总结

把下面任意一行丢进 crontab,就能让 OpenWrt 周期性“重新要前缀”,IPv6 永不断:

0 */4 * * * ifdown wan6 && sleep 5 && ifup wan6

*/20 * * * * killall -SIGTERM odhcp6c

收工,去喝杯咖啡,家里的 NAS 又能被外网顺利访问啦!

OpenWrt 定时自动刷新 IPv6 前缀 的 2 种姿势
https://blog.mxdyeah.com/post/openwrt-scheduled-ipv6-prefix-refresh
本文作者 mxdyeah
发布时间 2025-11-23
许可协议 CC BY-NC-SA 4.0
仅有 1 条评论
  1. 评论头像

    只恨自己家的网络太差,300M的宽带我的飞牛在外面只能看看图片。😂

    Mooe November 24, 2025 09:11   Mac OS X 10.15.7(Mac OS X 10.15.7) / Safari 26.1(Safari 26.1) 回复
发表新评论

AD: