在OpenWrt路由器或Windows本地DDNS的方法记录

想通过web域名访问家里的电脑、监控、NAS

需要将公网ip地址映射到域名上,但家庭用户只有动态的公网

大多还都是ipv6的动态公网

这样就只能使用ddns(动态DNS)了( •̀ ω •́ )

DDNS:动态DNS(英语:Dynamic DNS,简称DDNS)是域名系统(DNS)中的一种自动更新名称服务器(Name server)内容的技术。根据互联网的域名订立规则,域名必须跟从固定的IP地址。但动态DNS系统为动态网域提供一个固定的名称服务器(Name server),透过即时更新,使外界用户能够连上动态用户的网址。 –来自wiki

Windows DDNS解析

一、DDNS-Go

最新下载页面没看到Windows版本

点击Show all 31 assets(ZH 显示全部31项资产)

下载符合自己系统架构的压缩包

一般是64位windows系统

ddns-go_6.1.2_windows_x86_64.zip

ddns-go_版本_系统_架构.zip

将下载的压缩包解压并放在一个文件夹里

二、配置DDNS-Go

运行DDNS-Go并输入Token令牌

双击ddns-go.exe

会跳出安全中心 选择允许

接着是运行终端 并默认监听端口9876

http://localhost:9876

DNS服务商选择自己的域名注册商

Token 令牌: 可以参考创建Cloudflare API令牌

默认保存的配置文件位于C:\Users\用户名\.ddns_go_config.yaml

DDNS-GO

IPv6获取

一般情况下直接使用通过网卡获取,如果网卡获取出现ip地址混乱

比如openwrt会下发两个IPv6地址

短地址是路由DHCPv6服务根据DUID分配的IPv6 GUA (Global Unicast Address) 全球单播地址

长地址是客户端根据路由器RA信息,根据SLAAC自动生成的IPv6 GUA (Global Unicast Address) 全球单播地址

参考 openwrt分配了2个ipv6是什么原因? 恩山lgs2007m评论

可以将本地IPv6通过EUI-64固定后缀

在这之前需要在位于其他项 禁止公网访问 ☑️

填写用户名密码 并保存

通过命令获取 详情参阅 图下面有Windows命令获取IPv6的执行代码

通过命令获取

1
2
3
4
Get-NetRoute -AddressFamily IPv6 | Where-Object { $_.DestinationPrefix.StartsWith("240") -and $_.DestinationPrefix.endsWith("/64") } | ForEach-Object { ($_.DestinationPrefix -split '::/')[0] + ":suffix of other mac" }
# suffix of other mac (ZH 其他mac的后缀) 这段文字删除输入IPv6固定后的后缀
# 例如
Get-NetRoute -AddressFamily IPv6 | Where-Object { $_.DestinationPrefix.StartsWith("240") -and $_.DestinationPrefix.endsWith("/64") } | ForEach-Object { ($_.DestinationPrefix -split '::/')[0] + ":2452:310b:8924:bdfa" }

OpenWrt 路由器DDNS

你可以选择路由器自带的动态DDNS 或者 Lucky 大吉

动态DDNS

有一些固件是没有CloudFlare的

需要在软件源点击更新列表​后,在筛选器中输入 ddns-scripts-cloudflare​ 并回车

然后安装 ddns-scripts-cloudflare

配置

登录OpenWrt后台界面,依次点击服务、动态DNS、添加新服务(或者编辑已有的未运行服务)

  • 基本设置修改如下

    已启用 ☑️

    查询主机名:你的域名(例:img.bakaxiaofang.moe)

    IP地址版本:互联网协议(例:IPv6地址)

    DDNS服务提供商:(例:cloudflare.com-v4)

    确认切换服务? 点击 切换服务 按钮

    切换IPv6

    域名:你的域名(例:img.bakaxiaofang.moe)

    用户名:邮箱账号

    密码: Token 令牌-可以参考创建Cloudflare API令牌

    基本设置

  • 高级设置修改如下

    IP地址来源: 如果是通过路由器转发选择网络

    网络: 选择获取IPv6的接口名称​​​​

    需要设置好防火墙的转发和通行规则

    关于IPv6防火墙的转发和通信规则 可以参考OpenWrt IPv6防火墙通行规则放行

    网络​​​​

    如果是是想直接DDNS设备IPv6选择脚本

    脚本: 脚本的绝对路径

    事件网络: 选择获取IPv6的接口名称​​​​

    脚本

    • 脚本配置详情参考OpenWrt DDNS通过脚本获得IPv6

      你需要将写好的脚本上传到路由器里

      Windows可以用WinSCP上传文件

      • 然后在脚本这里填写上传的绝对路径 记得对脚本文件提权
    1
    2
    3
    4
    5
    #关于提权
    ssh root@192.168.1.1
    #用户名@路由器IPv4地址
    chmod +x sh脚本上传的绝对路径
    #提权

    事件网络: 选择要获取的IPv6所在的接口

Lucky 大吉

下载ipk包并上传安装

恩山吉大羊帖子-(2023.7.13)lucky,端口转发,DDNS,反向代理,WOL,stun穿透,计划任务,acme,webdav,ftp

软件包没有这个

有istore软件中心的固件可以直接安装

GitHub gdy666/luci-app-lucky

  • 根据路由器系统CPU架构下载对应的lucky核心包

    在状态>概览下可以看到我的路由器CPU架构是ARMv8 Processor rev 4 (v8l) x 2

    实际上ARMv8就是Arm64

    状态>概览

    GitHub gdy666/luci-app-lucky releases

    Releases

    如果你的Lucky大吉版本过旧 需要更新,或者你之前卸载了但没卸载干净

    1
    2
    3
    4
    5
    6
    ssh root@192.168.1.1  
    #用户名@路由器IPv4地址
    #执行以下命令 卸载删除干净之前的文件
    opkg remove lucky
    opkg remove luci-i18n-lucky-zh-cn
    opkg remove luci-app-lucky

    打开OpenWrt后台管理界面,依次点击系统、文件传输、选择文件

    将那三个下载的ipk包依次上传上去

    依次安装 记得安装要等待页面图标转圈结束出现红字

    • lucky_版本_Openwrt_架构.ipk

    • luci-app-lucky_版本_all.ipk

    • luci-i18n-lucky-zh-cn_版本_all.ipk

    重新进入Openwrt后台管理界面

    会看到服务多出Lucky大吉

Lucky 大吉配置

打开OpenWrt后台管理界面

依次点击服务、Lucky、启动、确定

Lucky 启动

这时Lucky后台管理会显示地址 一般是路由地址+16601端口

管理后台登录信息会显显示默认登陆账号密码 一般是账号666 密码666

进入Lucky后台管理界面之后在动态域名、添加任务与动态DDNS相同配置

  • DDNS任务添加

    任务名称: 随意

    任务开关: 启用

    操作模式: 简易模式

    托管服务商: Cloudflare

    Token: 令牌-可以参考创建Cloudflare API令牌

    类型: IPv6

    获取公网IP方式: 建议通过指令获取

    自定义获取IP指令:

    具体参考 OpenWrt DDNS通过脚本获得IPv6

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    pd=$(ubus call network.interface.SSS status | grep  -A 2 '"ipv6-prefix-assignment"' | 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后缀
    #这里修改完用指令测试一下看有没有获取IPv6地址
    例子:
    pd=$(ubus call network.interface.lan status | grep -A 2 '"ipv6-prefix-assignment"' | 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}"

    添加任务

    域名列表: 你的域名 一行一条域名

    添加任务

效果如图

启用