CentOS/Redhat Linux:安装OpenNTPD同步本地时钟
时间:2020-01-09 10:42:54 来源:igfitidea点击:
OpenNTPD是Unix系统的守护进程,它实现网络时间协议以将计算机系统的本地时钟与远程NTP服务器同步。
如何在CentOS/RHEL/Fedora Linux而非Linux操作系统提供的默认NTPD客户端/服务器下安装OpenNTPD?
与CentOS/RHEL/Fedora Linux附带的传统NTPD相比,OpenNTPD提供了简单性和安全性。
该软件提供了将本地时钟同步到远程NTP服务器的功能,并且可以充当NTP服务器本身,从而重新分配本地时钟。
OpenNTPD是OpenBSD项目的一部分。
在本教程中,您将学习如何在CentOS/RHEL/Fedora Linux上安装OpenNTPD。
编译并安装OpenNTPD
通过访问此页面下载可移植的OpenNTPD版本,执行:
# cd /tmp # wget http://ftp3.usa.openbsd.org/pub/OpenBSD/OpenNTPD/openntpd-6.0p1.tar.gz
焦油焦油球:
# tar -zxvf openntpd-6.0p1.tar.gz # cd openntpd-6.0p1
您必须在CentOS/RHEL 7服务器上安装GNU编译器。
了解如何在CentOS/RHEL 7上安装编译器以编译OpenNTPD。
要使用默认选项编译OpenNTPD,请执行:
# ./configure # make # make install
输出示例:
Making install in include
make[1]: Entering directory `/tmp/openntpd-6.0p1/include'
make[2]: Entering directory `/tmp/openntpd-6.0p1/include'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
....
..
...
make[2]: Entering directory `/tmp/openntpd-6.0p1/src'
/usr/bin/mkdir -p '/usr/local/sbin'
/bin/sh ../libtool --mode=install /usr/bin/install -c ntpd '/usr/local/sbin'
libtool: install: /usr/bin/install -c ntpd /usr/local/sbin/ntpd
make install-exec-hook
make[3]: Entering directory `/tmp/openntpd-6.0p1/src'
WARNING: the privilege separation path is specified as /var/empty,
but this directory contains files!
Please ensure that /var/empty is empty. If you installed a previous
OpenNTPD version and created a user with a home directory at /var/empty/ntpd,
please adjust that user to use /var/empty instead and delete /var/empty/ntpd.
make[3]: Leaving directory `/tmp/openntpd-6.0p1/src'
/usr/bin/mkdir -p '/usr/local/share/man/man5'
/usr/bin/install -c -m 644 ntpd.conf.5 '/usr/local/share/man/man5'
/usr/bin/mkdir -p '/usr/local/share/man/man8'
/usr/bin/install -c -m 644 ntpctl.8 ntpd.8 '/usr/local/share/man/man8'
make[2]: Leaving directory `/tmp/openntpd-6.0p1/src'
make[1]: Leaving directory `/tmp/openntpd-6.0p1/src'
make[1]: Entering directory `/tmp/openntpd-6.0p1'
make[2]: Entering directory `/tmp/openntpd-6.0p1'
make install-exec-hook
make[3]: Entering directory `/tmp/openntpd-6.0p1'
/usr/local/etc/ntpd.conf already exists, install will not overwrite
make[3]: Leaving directory `/tmp/openntpd-6.0p1'
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/tmp/openntpd-6.0p1'
make[1]: Leaving directory `/tmp/openntpd-6.0p1'
配置OpenNTPD
执行以下命令来创建_ntp用户和组,以在自己的 Jail中运行OpenNTPD:
# groupadd _ntp # useradd -g _ntp -s /sbin/nologin -d /var/empty/openntpd -c 'OpenNTP daemon' _ntp # mkdir -p /var/empty/openntpd # chown 0 /var/empty/openntpd # chgrp 0 /var/empty/openntpd # chmod 0755 /var/empty/openntpd
安装基于systemd的启动脚本
编辑/usr/lib/systemd/system/openntpd.service:
# vi /usr/lib/systemd/system/openntpd.service
添加以下行
[Unit] Description=OpenNTP Daemon After=network.target Conflicts=systemd-timesyncd.service [Service] Type=forking ExecStart=/usr/local/sbin/ntpd -s [Install] WantedBy=multi-user.target
保存并关闭文件。
ntpd.conf配置
编辑/usr/local/etc/ntpd.conf,执行:
# vi /usr/local/etc/ntpd.conf
让它在本地主机和主服务器IP上监听:
listen on 127.0.0.1 listen on 10.210.206.58 listen on ::1
同步到一个名为ntp.example.com或者ntp.isp.example.com的服务器:
server ntp.isp.example.com # Or Use a random selection of 8 public stratum 2 servers servers pool.ntp.org
关闭并保存文件。
启动OpenNTPD
执行以下命令:
$ sudo systemctl start openntpd.service
要停止openntpd,请执行:
$ sudo systemctl stop openntpd.service
要重新启动openntpd,请执行:
$ sudo systemctl restart openntpd.service
验证OpenNTPD是否正常工作
执行以下命令:
$ sudo systemctl status openntpd.service
输出示例:
? openntpd.service - OpenNTP Daemon
Loaded: loaded (/usr/lib/systemd/system/openntpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2015-11-22 10:20:08 UTC; 3s ago
Process: 15508 ExecStart=/usr/local/sbin/ntpd -s (code=exited, status=0/SUCCESS)
CGroup: /system.slice/openntpd.service
??15509 ntpd: ntp engine
??15510 ntpd: dns engine
??15511 /usr/local/sbin/ntpd -s
Nov 22 10:20:07 cenots-db systemd[1]: Starting OpenNTP Daemon...
Nov 22 10:20:07 cenots-db ntpd[15509]: listening on 127.0.0.1
Nov 22 10:20:07 cenots-db ntpd[15509]: listening on 10.210.206.58
Nov 22 10:20:07 cenots-db ntpd[15509]: listening on ::1
Nov 22 10:20:07 cenots-db ntpd[15509]: ntp engine ready
Nov 22 10:20:08 cenots-db systemd[1]: Started OpenNTP Daemon.
确保它在重新启动时启动:
$ sudo systemctl enable openntpd
执行以下命令以验证OpenNTPD(ntpd)是否正在运行:
$ netstat -tulpn $ netstat -tulpn | grep :123
或者
$ sudo ss -ltun
输出示例:
udp 0 0 10.210.206.58:123 0.0.0.0:* 31182/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 31182/ntpd
NTP是否同步?
执行以下命令:
$ timedatectl status
输出示例:
Local time: Tue 2015-11-22 10:25:46 UTC
Universal time: Tue 2015-11-22 10:25:46 UTC
RTC time: n/a
Time zone: UTC (UTC, +0000)
NTP enabled: n/a
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a

