OpenWrt ACME 刷新证书提示 DNS 令牌失效
按 证书管理 的步骤去刷新 OpenWrt 的 ACME 证书一直提示 Cloudflare DNS 令牌无权限。记得最近是重新生成过过期令牌,但在 LuCI 图形界面上也替换过了。
一通排查发现真正执行 renew 所需的参数已经记录在 /etc/acme/<domain>/<domain>.conf 文件中了,得手动改这里。
多接口在同一个 IPv6 网段下的冲突
y 一直困扰我的 容器响应 IPv6 前缀变动并更新 DDNS 中未刷新 NDP 记录的疑难杂症,即便加上 ping hack 后还是不稳定。
直到我注意到 PVE 上有这样的输出,同一个 IPv6 公网网段 2409:8a1e:6940:7c20::/64 同时出现在了三个不同的接口上。
root@pve:~# ip -6 route
2409:8a1e:6940:7c20::529 dev mgmt proto kernel metric 256 expires 85054sec pref medium
2409:8a1e:6940:7c20::920 dev vmbr0 proto kernel metric 256 expires 85081sec pref medium
2409:8a1e:6940:7c20::/64 dev vmbr0 proto kernel metric 256 expires 259192sec pref medium
2409:8a1e:6940:7c20::/64 dev mgmt proto kernel metric 256 expires 258976sec pref medium
2409:8a1e:6940:7c20::/64 dev vmbr1 proto kernel metric 256 expires 258622sec pref medium
fe80::/64 dev vmbr0 proto kernel metric 256 pref medium
fe80::/64 dev vmbr1 proto kernel metric 256 pref medium
fe80::/64 dev mgmt proto kernel metric 256 pref medium
default via fe80::a236:bcff:fe70:ce58 dev vmbr0 proto ra metric 1024 expires 1792sec mtu 1492 hoplimit 64 pref medium之前配置 给 Docker 配置完整的 IPv6 macvlan 网络环境 时应该也注意过,当时应该只是歪打正着没让多个网卡有 IPv6 地址。
metric 还都一样,这会导致本应转发往 vmbr1 的包又回到了 vmbr0。一个现象是使用 ping -I vmbr1 正常,但直接 ping 就失败。
解决方法也简单,同一个二层 IPv6 广播域的网卡只分配一个 IPv6 地址。
auto vmbr0
iface vmbr0 inet dhcp
iface vmbr0 inet static
address 192.168.9.17/24
gateway 192.168.9.1
bridge-ports enp5s0
bridge-stp off
bridge-fd 0
post-up sysctl net.ipv4.ip_forward=1
post-up ethtool -K $IFACE rx-udp-gro-forwarding on rx-gro-list off
# IPv6 is enabled on mgmt interface only
post-up sysctl net.ipv6.conf.$IFACE.accept_ra=0
post-up sysctl net.ipv6.conf.$IFACE.autoconf=0
auto mgmt
iface mgmt inet dhcp
pre-up ip link add link vmbr0 name mgmt address 1c:1b:0d:95:90:d2 type macvlan mode bridge
post-up sysctl net.ipv6.conf.$IFACE.accept_ra=2
post-down ip link del mgmt
iface mgmt inet6 auto
privext 2还没完,OpenWrt 上同样有问题,相反,它的路由表上没有 2409:8a1e:6940:7c20::/64 dev br-lan 的条目
root@openwrt:~# ip -6 r
fd7a:115c:a1e0::53 dev tailscale0 metric 1024
fd7a:115c:a1e0::/48 dev tailscale0 metric 1024
2409:8a1e:6940:7c20::1 dev eth0 metric 1024
2409:8a1e:6940:7c20::/64 dev eth0 metric 256
unreachable 2409:8a1e:6940:7c20::/64 dev lo metric 2147483647
fd7a:115c:a1e0::ea37:7005 dev tailscale0 metric 256
fe80::/64 dev br-lan metric 256
fe80::/64 dev tailscale0 metric 256
fe80::/64 dev eth0 metric 256
anycast 2409:8a1e:6940:7c20:: dev eth0 metric 0
anycast fe80:: dev br-lan metric 0
anycast fe80:: dev tailscale0 metric 0
anycast fe80:: dev eth0 metric 0
multicast ff00::/8 dev br-lan metric 256
multicast ff00::/8 dev tailscale0 metric 256
multicast ff00::/8 dev eth0 metric 256对比几个正常工作的路由器,我怀疑是缺少 IPv6-PD 前缀。按照 Passthrough 下发拿不到 /64 前缀,能当个设备用,但不能加子网。总之 OpenWrt 上开启了 WAN6 的扩展前缀就能正常工作了。