老E的博客

  • 首页
  • 关于
  • 技术应用
    • VPS相关
    • AI相关
    • 盒子相关
    • 其他
  • 订阅Youtube频道
  • 网络加速
    • expressvpnNo.1 ExpressVPN
    • 最佳免费VPN-PrivadoVPN
    • NordVPN
    • 廉价王者-Surfshark
    • PrivateInternetAccess
    • 解锁一切-PrivateVPN
  • 公益资源
    • AI导航
    • 工具下载
    • Docker镜像加速
  • 友情链接
    • tickcloudTickcloud
老E的博客
专注记录并分享跨境技术应用及随想
  1. 首页
  2. 技术应用
  3. 盒子相关
  4. 正文

Linux下一键部署DDNS6

2023年9月6日 1121次阅读 0条评论
clawcloud
expressvpn best vpn
privado vpn
surfshark vpn
private vpn
pia vpn
nord vpn

上一篇是关于Windows下的DDNS一键部署,本文在简单介绍Linux下DHCP客户端的基础上,借助其hook/dispatch机制,同样避免看似鲁棒、实则毫无意义的定时检测与扫描。与Windows事件驱动不同的是,不同的DHCP客户端对IPv6及IPv4动态地址分配相关的“Reason”或“Action”有非常明确的定义乃至细分,可以进行更为精准的hook触发,最大程度地降低开销,让你的系统更“聪明”。

1.测试环境与部署

Linux分支太多,即便同样硬件规格的arm盒子,主板方案和系统也可能天差地别,所以先说明LaoE自用的设备:S905 M401A机顶盒、armbian kernel 6.1.30,无内核参数修改。同时,脚本在Ubuntu 22.04、Debian 11(均为虚拟机)中运行、触发正常。

消费终端的Linux下,DHCP客户端主要是NetworkManager(netplan基于NM)和dhcpcd,以及新系统中已被弃用很少的DHClient。无论哪个客户端,都有相应的hook/dispatch机制,客户端系统会在发生相关事件时调用hook脚本(入口处调用、出口处调用,enter或exit),也允许用户自定义hook脚本,这就为最小开销的DDNS提供了基础。官方明确的DHCP客户端包括树莓派下的dhcpcd、Armbian下的NM、Debian下的DHClient、Android(原生)下的dhcpcd等等。当然,不排除不同OS小版本会有差异,掌握基本原理,都可以自由发挥。

这里仅仅就不同发行版对DHCP客户端hook列举一二,更多信息可以自行搜索。

  • https://manpages.ubuntu.com/manpages/trusty/man8/dhcpcd-run-hooks.8.html
  • https://man.archlinux.org/man/dhcpcd-run-hooks.8
  • https://manpages.debian.org/buster/isc-dhcp-client/dhclient-script.8.en.html
  • https://networkmanager.dev/docs/api/latest/NetworkManager-dispatcher.html

可以通过【工具下载】栏目搜索下载安装脚本,再通过SFTP上传至设备,也可以在终端shell下直接运行如下指令(curl一般都是默认安装好):

curl -o intstall-cf-ddns6.sh -sSL https://appscross.com/as-tools/pub%20Tools/DDNS6/install-cf-ddns.sh && chmod +x intstall-cf-ddns6.sh
./intstall-cf-ddns6.sh

安装脚本运行后,和Windows下的脚本相同,仅需获取Cloudflare API Key。依次输入账号邮箱、API key、根/主域名、主机名(域名前缀),脚本将自动检测、创建记录及完成其他工作。

2.Android和OpenWRT

Andoid理论上是可以适配的,但不建议优化适配。首先,Android明确只支持SLAAC,国内的机顶盒固件都阉割掉了服务框架(GMS等),同时进行了大量的自定义,但保留并启用了dhcpcd作为DHCP Server(Android分为Client和Server)的就可以较为简单地进行适配。ATV系统默认curl、busybox会自带,jq等可以通过curl下载或在其他系统上自行下载后,通过adb push到盒子中,可以参考本文将Android盒子一键部署上DDNS6,应做如下基本检查:

  • 原生ATV固件
  • 系统使用并加载了dhcpcd作为服务
  • /system/etc或/vendor/etc下存在完整的dhcpcd目录(/etc是指向/system/etc的链接)
  • 已root
  • adb正常工作

现实是:国内TVBox除了阉割之外,网络服务方面“异彩纷呈”,同一厂家、同一SoC规格在Android系统层面也可能有很大差异,更不用说各种改版的固件了,除了几个预装apk、桌面和 root,作者自己也不会知道网络服务用的是什么。启用了dhcpcd的ATV系统,默认会在初始化阶段加载如下的原生服务,同时,配置文件为/system/etc/dhcpcd/dhcpcd.conf。

service dhcpcd_wlan0 /system/bin/dhcpcd -ABKLG
    class late_start
    disabled
    oneshot
service dhcpcd_p2p /system/bin/dhcpcd -ABKLG
    class late_start
    disabled
    oneshot
service iprenew_p2p /system/bin/dhcpcd -n
    class late_start
    disabled
    oneshot

检查项中如果系统未启用dhcpcd作为服务端,建议不要继续,因为花费的时间和精力远超刷写Armbian/OpenWRT或者ELEC。至于Android下的应用服务端,至少Plex、Emby和Jellyfin都提供了Server的apk包,其他类别的应用服务多数也是可以找到对应apk包的。需要强调的是,符合条件的Android盒子的DDNS6安装、部署没问题,理论上触发机制工作、更新脚本执行也不会有问题,但需要留意、必要时自己动手排障。

外贸盒子、OpenWRT可以自由编译定制,了解Hook机制的基本原理,愿意折腾的自行折腾吧。各类软路由也都有第三方的DDNS工具,基本都是采用了定时检测方式,不要用定时检测工具和Hook脚本作比较。自行折腾需要注意IPv6的DHCPv6或SLAAC配置模式的区别。

3.最后

从Windows到Linux,其实关键字无非就是事件驱动、hook,用最简单、开销最低的方式实现单一的部署目标,老E也从不否定任何优秀的工具,但上网应该是一件简单的事。就愿意三五分钟定时检测那就检吧,别有蹭推销或者欠教养的多余置评,那就该回炉好好学学语文、让家长教教怎么说话。

需要适配其他DNS解析服务(DNSpod、阿里、火山等)的,短期内要自己修改脚本,相比CF而言,DNSPod、阿里以及火山TrafficDNS的Request构造更为简单,但验证、授权方面可能不太友好。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: ddns IPv6 Linux系统运维 一键脚本
最后更新:2024年5月27日

老E

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

站内搜索
归档
  • 2025 年 5 月
  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 10 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 7 月
  • 2023 年 6 月

Copyright ©2023-2025 Appscross. All Rights Reserved.