创作立场声明:该商品免配置网关MT300N,是朋友赠送。此方案已经稳定运行1个多月,特别分享出来,希望能给那些有同样需求的朋友一些帮助。其他刷了op系统的也适用。
方案背景
最近将家里原来的3965U出售了,回归到最初的路由结构。光猫桥接,原先作无线ap的腾达路由器作为主路由。但有外网访问jellyfin媒体库的需求,把原先3965U软路由上DDNS方案迁移到现有网络架构,发现腾达路由器只内置了3个ddns供应商,分别是花生壳,88ip,dyn。用主路由分别体验了下前2者的免费方案,经过身份认证后,效果不能让我满意,经常出现ip解析错误,而且延迟较长。dyn不提供免费方案。

后来发现朋友送的免配置网关MT300N,原本主要用来去视频广告,是刷了openwrt系统,内置了DDNS服务,就准备用他,作为旁路由网关实现DDNS。
使用了openwrt系统DDNS内置的2233以及花生壳服务商,免费版本,还是会不时发生错误,导致解析失败。自己网上查了下资料,有了这篇文章。目前已经稳定运行1个多月,且没有再出现解析错误的情况,个人十分满意。
技术门槛
1.家庭网络的ip必须是动态公网ip,如果不是公网IP,请选择内网穿透,DDNS方案不适合你的家庭网络。
2.我个人选用的DDNS服务商是dynu,国内用户可能不能访问注册。针对国内用户,可选用公云2233,但需要进行身份认证。
3.openwrt系统的网关,我选用的是免配置网关MT300N,作为旁路由。如果你的主路由是openwrt,注意下面有个地方有差异。
前期准备
1.旁路由设置

进入网络-接口-lan-修改。ipv4网关地址,dns服务器,填写主路由的后台地址,我的腾达路由地址是192.168.0.1,ipv4地址填写,主路由后台地址的前3位+254,关闭dhcp服务器。旁路由设置完成。
2.注册dynu或者公云2233



这里的流程是,注册账号,进入后台,选择DDNS Services,点击添加,注册自己的域名。公云2233也是大同小异。此时你获得了一个域名用于DDNS解析,记住你的账号密码,后面要用到。
正餐开始
1.进入主路由的后台,找到静态ip分配。获取jellyfin服务器的Mac地址,将其和ip地址绑定,我设置的是192.168.0.100。注意,前3位和主路由一样,最后一位小于254。

2.进入主路由的后台,找到端口映射或者端口转发,填入jellyfin的内网地址,192.168.0.100,内网端口jellyfin和emby默认是8096,如果自己修改过,就填入对应的。外网端口可以自己设置。

3.进入旁路由后台,找到动态dns服务,输入服务名dynu,进入此界面。

4.1钩上已启用
4.2以www.abc.kozow.com为例子,自己替换进自己的信息,将www.abc.kozow.com填入查询主机名。
4.3自定义更新URL,填上
http://162.216.241.241/nic/update?hostname=abc.kozow.com&myip=10.0.0.0&password=xxx
abc.kozow.com替换成自己的域名,没有www。
password=xxx,xxx替换成你的dynu登陆密码。
如果你是公云2233自定义更新URL填上,并且在下方填入域名,用户名,密码。
http://[USERNAME]:[PASSWORD]@members.3322.net/dyndns/update?system=dyndns&hostname=[DOMAIN]

4.4旁路由从网址获取ip,主路由忽略这步。
进入高级设置,选择url,用于监测的url填上。点击保存并应用。
http://lqxx2020.f3322.net/

4.5开启ddns服务,点击启动。

4.6点击日志查看器,点击读取日志文件,出现下图,即成功。

4.7可选步骤,重启后,自动启动ddns服务。我的旁路由设置为每天2点自动重启。

进入旁路由后台,点击系统,启动项。

sleep 15s
/etc/rc.d/S95ddns start
点击提交。
4.8可选步骤,每隔30分钟检查一次ddns服务是否正常。需要有命令行操作基础。
ssh root@192.168.0.254 -p 22 //ssh进入旁路由,填写自己的旁路由地址
cd /bin//进入bin目录
vim check_ddns.sh //创建检查ddns脚本
#!/bin/sh
printf "--------------------------DDNS Checking Start !-----------------------------n"
num=ps | grep dynamic\_dns\_updater | grep -v grep | grep -v check | wc -l
# 计算进程数
if [ $num -lt 1 ] # 判断进程是否存在
then
/etc/init.d/ddns start
echo "------------ddns start------------"
fi
printf "--------------------------DDNS Checking Over !-----------------------------n"
//将以上内容复制粘贴到check_ddns.sh 按住shift+i,输入wq,保存退出
chmod 777 check_ddns.sh //赋予权限
exit//退出旁路由ssh
进入旁路由后台,系统,计划任务,输入后点击提交。

*/30 * * * * sh /bin/check_ddns.sh
后记
此DDNS方案我个人非常满意。解析效率高,运行稳定。对于为什么回归到传统的路由方案,是经过这一段时间的软路由使用后,对我个人而言,软路由是个伪需求,存在性能过剩。普通硬路由加一个小的op旁路由更符合我的需求。