linux命令运维 - ntp, 时间服务器 - NTP

作者: LinuxStack

时间服务器 - NTP

一、NTP 简介

网络时间协议(英语:Network Time Protocol,缩写:NTP)是在数据网络潜伏时间可变的计算机系统之间通过分组交换进行时钟同步的一个网络协议,位于 OSI 模型的应用层。自 1985 年以来,NTP 是目前仍在使用的最古老的互联网协议之一。NTP 由特拉华大学的 David L. Mills(英语:David L. Mills)设计。

NTP 意图将所有参与计算机的协调世界时(UTC)时间同步到几毫秒的误差内

NTP 要点:

  • 地球共有 24 个时区,而以格林威治时间 (GMT) 为标准时间;
  • 中国本地时间为 GMT +8 小时;
  • 最准确的时间为使用原子钟 (Atomic clock) 所计算的,例如 UTC (Coordinated Universal Time) 就是一例;
  • Linux 系统本来就有两种时间,一种是 Linux 以 1970/01/01 开始计数的系统时间,一种则是 BIOS 记载的硬件时间;
  • Linux 可以透过网络校时,最常见的网络校时为使用 NTP 服务器,这个服务启动在 udp port 123
  • 时区档案主要放置于 /usr/share/zoneinfo/ 目录下,而本地时区则参考 /etc/localtime
  • NTP 服务器为一种阶层式的服务,所以 NTP 服务器本来就会与上层时间服务器作时间的同步化, 因此 nptdntpdate 两个指令不可同时使用;
  • NTP 服务器的联机状态可以使用 ntpstatntpq -p 来查询;
  • NTP 提供的客户端软件为 ntpdate 这个指令;
  • 在 Linux 下想要手动处理时间时,需以 date 设定时间后,以 hwclock -w 来写入 BIOS 所记录的时间。
  • NTP 服务器之间的时间误差不可超过 1000 秒,否则 NTP 服务会自动关闭。

更多 NTP 详情可以参考:鸟哥的 Linux 私房菜– NTP 时间服务器

二、ntpd 服务

环境:CentOS

yum 安装

CentOS 安装 NTP 很简单,执行以下命令即可:

yum -y install ntp

ntpd 配置

ntp 的配置文件路径为: /etc/ntp.conf ,参考配置:

# 1. 先处理权限方面的问题,包括放行上层服务器以及开放区网用户来源:
# restrict default kod nomodify notrap nopeer noquery     # 拒绝 IPv4 的用户
# restrict -6 default kod nomodify notrap nopeer noquery  # 拒绝 IPv6 的用户
restrict default nomodify notrap nopeer noquery
#restrict 192.168.100.0 mask 255.255.255.0 nomodify # 放行同局域网来源(根据网关和子网掩码决定)
restrict 127.0.0.1   # 默认值,放行本机 IPv4 来源
restrict ::1         # 默认值,放行本机 IPv6 来源

# 2. 设定 NTP 主机来源
# 注释掉默认 NTP 来源
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
# 设置国内 NTP 来源
server cn.pool.ntp.org prefer # 以这个主机为优先
server ntp1.aliyun.com
server ntp.sjtu.edu.cn

# 3. 预设时间差异分析档案与暂不用到的 keys 等,不需要更改它:
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
includefile /etc/ntp/crypto/pw

注意:如果更改配置,必须重启 NTP 服务(systemctl restart ntpd)才能生效。

放开防火墙限制

NTP 服务的端口是 123,使用的是 udp 协议,所以 NTP 服务器的防火墙必须对外开放 udp 123 这个端口。

如果防火墙使用 iptables,执行以下命令:

iptables -A INPUT -p UDP -i eth0 -s 192.168.0.0/24 --dport 123 -j ACCEPT

如果防火墙使用 firewalld,执行以下命令:

firewall-cmd --zone=public --add-port=123/udp --permanent

ntpd 服务命令

systemctl enable ntpd.service  # 开启服务(开机自动启动服务)
systemctl disable ntpd.service # 关闭服务(开机不会自动启动服务)
systemctl start ntpd.service   # 启动服务
systemctl stop ntpd.service    # 停止服务
systemctl restart ntpd.service # 重启服务
systemctl reload ntpd.service  # 重新载入配置
systemctl status ntpd.service  # 查看服务状态

查看 ntp 服务状态

验证 NTP 服务正常工作

执行 ntpstat 可以查看 ntp 服务器有无和上层 ntp 连通,,如果成功,可以看到类似以下的内容:

$ ntpstat
synchronised to NTP server (5.79.108.34) at stratum 3
   time correct to within 1129 ms
   polling server every 64 s

查看 ntp 服务器与上层 ntp 的状态

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp1.ams1.nl.le 130.133.1.10     2 u   36   64  367  230.801    5.271   2.791
 120.25.115.20   10.137.53.7      2 u   33   64  377   25.930   15.908   3.168
 time.cloudflare 10.21.8.251      3 u   31   64  367  251.109   16.976   3.264

三、ntpdate 命令

注意:NTP 服务器为一种阶层式的服务,所以 NTP 服务器本来就会与上层时间服务器作时间的同步化, 因此 nptdntpdate 两个指令不可同时使用。

手动执行时间同步

ntpdate 命令是 NTP 的客户端软件,它可以用于请求时间同步。

语法:

/usr/sbin/ntpdate <ntp_server>

ntp_server 可以从 [国内 NTP 服务器](#国内 NTP 服务器) 中选择。

示例:

$ ntpdate cn.pool.ntp.org
11 Feb 10:47:12 ntpdate[30423]: step time server 84.16.73.33 offset -49.894774 sec

自动定时同步时间

如果需要自动定时同步时间,可以利用 Crontab 工具。本质就是用 crontab 定时执行一次手动时间同步命令 ntp。

示例:执行如下命令,就可以在每天凌晨 3 点同步系统时间:

echo "0 3 * * * /usr/sbin/ntpdate cn.pool.ntp.org" >> /etc/crontab # 修改 crond 服务配置
systemctl restart crond # 重启 crond 服务以生效

四、国内 NTP 服务器

以下 NTP 服务器搜集自网络:

cn.pool.ntp.org  # 最常用的国内NTP服务器,参考:https://www.ntppool.org/zh/use.html
cn.ntp.org.cn    # 中国
edu.ntp.org.cn   # 中国教育网
ntp1.aliyun.com  # 阿里云
ntp2.aliyun.com  # 阿里云
ntp.sjtu.edu.cn  # 上海交通大学
s1a.time.edu.cn  # 北京邮电大学
s1b.time.edu.cn  # 清华大学
s1c.time.edu.cn  # 北京大学
s1d.time.edu.cn  # 东南大学
s1e.time.edu.cn  # 清华大学
s2a.time.edu.cn  # 清华大学
s2b.time.edu.cn  # 清华大学
s2c.time.edu.cn  # 北京邮电大学
s2d.time.edu.cn  # 西南地区网络中心
s2e.time.edu.cn  # 西北地区网络中心
s2f.time.edu.cn  # 东北地区网络中心
s2g.time.edu.cn  # 华东南地区网络中心
s2h.time.edu.cn  # 四川大学网络管理中心
s2j.time.edu.cn  # 大连理工大学网络中心
s2k.time.edu.cn  # CERNET桂林主节点

参考资料

更多推荐

更多
  • Linux二进制-一、Linux 环境及其工具 Linux 工具,有用的设备和文件,与连接器相关的环境点,GDB,Objdump from GNU binutils,Objcopy from GNU binutils,strace,追踪,基本 ltrace 命令,ftrace,rea
    Apache CN

  • Linux二进制-零、前言 这本书的内容,你需要什么来写这本书,这本书是写给谁的,约定,读者反馈,客户支持,示例代码下载,勘误表,盗版,问题, 软件工程是创造一项在微处理器上存在、存在和呼吸的发明。 我们称之为程序。 逆向工程的行为发现这个项目如何生活和呼吸,而且
    Apache CN

  • Linux二进制-二、ELF 二进制格式 ELF 文件类型,ELF 程序头文件,ELF 节标题,精灵符号,ELF 重置,ELF 动态链接,编写 ELF 解析器,pt_load,PT_DYNAMICPhdr 为动态段,pt_note,pt_interp,PT_PHDR,文本部
    Apache CN

  • Linux二进制-五、Linux 二进制程序保护 ELF 二进制封隔器哑保护,存根机制和用户域执行,由保护根执行的其他工作,已有的 ELF 二进制保护,下载 maya 保护的二进制文件,反调试二进制保护,抗仿真,模糊处理方法,保护控制流的完整性,其他资源,保护器的一个例子,DacryF
    Apache CN

  • Linux二进制-九、Linux `/proc/kcore`分析 九、Linux /proc/kcore分析Linux 内核取证和 rootkit,普通 vmlinux 没有符号,/proc/kcore 和 GDB 探索,直接修改 sys_call_table,Kprobe rootkits,VFS
    Apache CN

  • Linux二进制-三、Linux 进程跟踪 ptrace 的重要性,进程寄存器状态和标志,一个简单的基于实践的调试器,一个简单的 ptrace 调试器,具有进程附加功能,高级功能跟踪软件,ptrace 和法医学分析,处理图像重建从内存到可执行文件,简单的例子并不总是那么微不足道,
    Apache CN

  • 四、ELF 病毒技术——Linux/Unix 病毒 ELF 病毒技术,ELF 病毒工程挑战,ELF 病毒寄生虫感染方法,PT_NOTE 到 PT_LOAD 转换感染方法,感染控制流程,ELF 防调试和包装技术,ELF 病毒检测及消毒,寄生代码必须是自包含的,字符串存储的复杂性,寻找存储寄
    Apache CN

  • Linux二进制-七、进程内存取证 流程是什么样子的?,进程内存感染,Linux ELF 核心文件,可执行内存映射,程序堆,共享库映射,堆栈、vdso 和 vsycall,进程感染工具,工艺感染技术,Azazel userland rootkit 检测,进程地址空间的映射
    Apache CN

  • Linux二进制-八、扩展核心文件快照技术 历史,ECFS 理念,ECFS 入门,libecfs 用于解析 ECFS 文件的库,readecfs,使用 ECFS 检查受感染的进程,ECFS 参考指南,使用 ECFS 处理巫术,了解更多有关 ECFS,将 ECFS 插入核心处理器,
    Apache CN

  • Linux二进制-六、Linux 中的 ELF 二进制取证 检测入口点修改的科学,检测其他形式的控制流劫持,寄生虫代码特征识别,识别反向文本填充感染,识别文本段填充感染,标识受保护的二进制文件,IDA Pro,正在修补。ctors/。 init_array 节,检测 PLT/GOT 挂钩,检测蹦
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多