在使用OpenWrt DDNS的时候,总不能IPv6下还要进行转发端口使用

那可太怪了(´・ω・`)?,可以将设备IPv6后缀固定 然后防火墙放行

OpenWrt DDNS通过脚本命令来获得设备IPv6

通过MAC获得设备IPv6

来自 恩山尉迟申棠帖子-openwrt ipv6 配置分享; 新增加了一种ddns方式;

不推荐 因为可能会获得路由DHCPv6服务根据DUID分配的IPv6 GUA (Global Unicast Address) 全球单播地址

而且不固定IPv6后缀,需要将整个IPv6防火墙打开,安全性大大降低

Windows MAC地址

右键任务栏 依次点击任务栏设置、网络和Internet、属性

就能看到物理地址(MAC)

注意这里的MAC地址必须是将大写字母与连字符改成小写字母与冒号

网络和 Internet>以太网

1
2
3
4
5
6
7
8
9
10
11
12
13
排除本地IPv6
MAC=00:00:00:00:00:00
PREFIX=$(ip -6 addr show br-lan | awk '/([0-9a-f:]+:+)+[0-9a-f]+/' | awk -F '/|inet6 ' 'NR==1{print $2;}' | sed 's/::.//g')
ip nei | grep $MAC | grep $PREFIX | awk '{print $1}'
#'/([0-9a-f:]+:+)+[0-9a-f]+/' ipv6 正则匹配
#awk -F '/|inet6 ' 'NR==1{print $2;}' 指定文件分隔符为 '/' and 'inet6 '
# NR 代表行号; NR==1 代表第一行第一个字段;
可以获得本地IPv6
MAC=00:00:00:00:00:00
PREFIX=$(ip -6 addr show br-lan | grep 'scope global' | awk -F '/|inet6 ' 'NR==1{print $2;}' | sed 's/::.//g')
ip neigh | grep "$MAC" | grep -E "^$PREFIX" | sed 's/ .*//'
# NR 代表行号; NR==1 代表第一行第一个字段;
# NR==2 本地IPv6

通过固定IPv6后缀获得设备IPv6

来自 恩山kob帖子-[k2p] OPENWRT在路由器上实现网内各设备的IPV6 ddns(支持阿里云)

关于固定IPv6后缀,可参考通过EUI-64固定IPv6后缀

1
2
3
4
5
6
7
8
9
10
11
12
13
14
pd=$(ubus call network.interface.SSS status | grep  -A 3 '"ipv6-prefix":' | grep address | awk '{print $2}' | awk '{print substr($0,1,length($0)-4)}' | sed 's/^.//')
hz=":xxxx:xxxx:xxxx:xxxx"
wanip6=${pd}${hz}
echo "${wanip6}"
#还要根据网络接口的名称修改SSS
#比如在有wan6的情况下 将wan的获取IPv6地址从手动改成 自动
#可能会出现一个wan_6名称的新
#多个lan口根据获取IPv6的lan口名字修改 wan口也是
#xxxx:xxxx:xxxx:xxxx IPv6后缀
例子:
pd=$(ubus call network.interface.wan6 status | grep -A 3 '"ipv6-prefix":' | grep address | awk '{print $2}' | awk '{print substr($0,1,length($0)-4)}' | sed 's/^.//')
hz=":2452:310b:8924:bdfa"
wanip6=${pd}${hz}
echo "${wanip6}"