使用Openwrt DDNS为IPV6设备分别DDNS
配置静态ip
脚本是根据设定一段固定的v6后缀,再与运营商下发前缀拼合得到一串ip。由于设定的v6后缀固定,所以需要设备的v6后缀固定。在路由里对需要DDNS的设备配置v6的静态后缀即可,Linux一般采用eui64
分配,win需在适配器选项里也设置好。
配置基础DDNS
需要在IP地址版本处勾选IPV6
,并在cf里为查询主机名添加一个任意的AAAA记录
。在高级设置中,需要把IP地址来源改为脚本
,并在下方事件网络处选择br-lan
。脚本内容往下看。
编写脚本并上传
适用于luci-app-ddns
,搭配ddns-scripts-cloudflare
使用。
参考以下脚本,保存成.sh
文件。SUFFIX
后面写设备固定的v6后缀。我用的immortalwrt,如使用其他固件,首行按需求改为#!/bin/bash
,否则会报错not found
。
1 | #!/bin/ash |
如果你在接口的全局网络选项中设置了IPv6 ULA 前缀
,则使用上述脚本会获取到2个ip,其中一个是本地唯一地址,需要调整awk
过滤条件。以下命令只会获取以2xxx
开头的地址。
1 | ip -6 addr show dev $INTERF | awk '/inet6 2/ && !/fe80::|deprecated/ {print $2}' | cut -d':' -f1-4 | sed "s/$/:$SUFFIX/" |
我在Windows上编辑完后上传,immortalwrt没有sftp服务,使用cat
上传。
1 | scp C:\Users\Administrator\Documents\v6script.sh root@192.168.2.1:/www/v6script.sh |
上传完成后,使用vim手动删除每行最后^M
的dos换行符,并记得使用chmod +x v6script.sh
授予运行权限。然后回到DDNS设置界面填写上脚本绝对路径。
如使用ddns-go
,可改用以下命令,各参数参照上述说明修改。
1 | INTERF=br-lan; SUFFIX="6dcb:1863:2bd1:b28f"; ip -6 addr show dev $INTERF | awk '/inet6/ && !/fe80::|deprecated/ {print $2}' | cut -d':' -f1-4 | sed "s/$/:$SUFFIX/" |
放行DDNSv6的设备
通信规则里,匹配ip规则自定义为::6dcb:1863:2bd1:b28f/::ffff:ffff:ffff:ffff
,意思为只要匹配后缀为::6dcb:1863:2bd1:b28f
则接受转发,避免前缀变化造成无法访问。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 筱晓の第二小窝~!
评论