华硕ASUS RT-AC66U无线路由器部署NTP Server最佳实践

作为《局域网内所有设备时间一致性方法探究》一文的延续,今天我来尝试在华硕ASUS RT-AC66U无线路由器(以后简称为“路由器”)上来部署NTP Server。

相关软硬件

  • 硬件:华硕ASUS RT-AC66U (非B1) 一台
  • 固件:Asus-Merlin 380.70,下载地址(MD5:bdf27327a7ce336ae310835f635e8ffc)
  • ntp.conf: 下载地址
  • service-start: 下载地址
  • SSH客户端:顺手就行

路由器升级

如图所示,直接通过界面完成。


JFFS、SSH和NTP相关设置

升级完成后,对JFFS、SSH和NTP相关功能进行参数配置,即开启JFFS用户脚本和配置,开启局域网内的SSH功能和配置互联网NTP服务器地址,如下图所示:


建立ntp.conf配置文件

使用SSH客户端访问路由器:

  • 在jffs目录下建立ntp子目录
  • 在ntp目录中建立ntp.conf配置文件,可参考或直接使用前面共享的文件。
server 0.cn.pool.ntp.org iburst
server 1.cn.pool.ntp.org iburst
server 2.cn.pool.ntp.org iburst
server 3.cn.pool.ntp.org iburst

完成后的目录结构是:/jffs/ntp/ntp.conf

建立services-start脚本

路由器系统ntp服务只能识别内存中/etc目录中的ntp.conf文件,因此每次路由器重启后需要将/jffs/ntp/ntp.conf文件重新复制到/etc目录中。建立脚本的目的就是要自动完成这个步骤。
参考文档是利用post-mount来实现,但在380.70固件下,通过测试post-mount,service-start和wan-event三个脚本,发现只有service-start脚本在系统重启后能够正常调用,因此,最终使用services-start脚本。可参考或直接使用前面共享的文件。
注意:脚本执行前,需要执行以下命令:

chmod a+rx /jffs/scripts/*

以下为脚本内容:

#!/bin/sh
#脚本执行验证,用于判断系统重启后脚本是否执行,验证完成后屏蔽
#DATE=$(date +"%Y-%m-%d-%H%M%S")
#mkdir -p /tmp/logs
#touch /tmp/logs/$DATE-services-start
#开始检测ntp服务状态
retry=1
while [ "$(nvram get ntp_ready)" == "0" ] && [ "$retry" -lt "300" ]; do
  retry=$((retry+1))
  sleep 1
done
# Only start the NTP server if router has itself synchronised with Internet
cp /jffs/ntp/ntp.conf /etc/
logger -st "($(basename $0))" $$ "***SUCCESS Router copied ntp.conf-file to /etc!"
ntpd   -l
logger -st "($(basename $0))" $$ "***SUCCESS Router initialized NTP Server!"

完成后的目录结构是:jffs/scripts/services-start

验证

重启路由器后,将局域网内的其他设备的ntp地址指向路由器地址,并手动执行时间同步操作,如提示同步失败,需进一步检查上述步骤和脚本是否正确操作和执行。
自此,华硕ASUS RT-AC66U无线路由器成为局域网内的NTP服务器,只需确保其同互联网的NTP服务时间同步,就能保证局域网内的所有设备的时间一致。

参考资料

阅读原文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容