如何安装和配置OpenNTPd在FreeBSD 10.2

介绍

NTP,网络时间协议,是一种标准化协议提供的方式来同步时间对各种操作系统。 OpenNTPd是一个自由和易于使用实施网络时间协议(NTP)的,最初是作为的一部分OpenBSD的项目。 它提供从远程NTP服务器同步本地时钟的能力,也可以充当服务器本身。

本教程将向您展示如何在FreeBSD上安装OpenNTPd。

先决条件

要遵循本教程,您需要具有:

  • 一个FreeBSD的10.2Droplet用root用户; 在DigitalOcean默认的FreeBSD用户的罚款。

FreeBSD Droplet需要SSH密钥才能进行远程访问。 有关设置SSH密钥帮助,请阅读如何在FreeBSD服务器上配置SSH密钥的验证 要了解更多关于登录到您的FreeBSDDroplet和基础管理,检查出入门FreeBSD的系列教程。

第1步 - 安装OpenNTPd

安装OpenNTPd之前,更新所使用的存储库的信息pkg

sudo pkg update

然后安装OpenNTPd包:

sudo pkg install openntpd

默认OpenNTPd配置使用pool.ntp.org作为其默认时间服务器和被配置为仅作为客户机的工作。 本教程的其余部分将说明如何更改所使用的时间服务器以及如何将OpenNTPd配置为时间服务器。

第2步 - 更改时间服务器((可选)

接下来的几个步骤将编辑/usr/local/etc/ntpd.conf ,默认的配置文件。 使用eevi ,或你喜欢的文本编辑器编辑配置文件。

sudo ee /usr/local/etc/ntpd.conf

供电所询问比约恩·汉森的GeoDNSpool.ntp.org通常会在服务器或接近你的国家返回的IP地址。 对于大多数用户,这将给出最好的结果。

或者,你也可以使用一个国家像区br.pool.ntp.orgde.pool.ntp.orgru.pool.ntp.org强制/极限结果以适应您的个人需要。 要了解更多关于NTP池项目,请访问pool.ntp.org

在本教程的例子中,我们将使用NTP.br ,在巴西的一个项目,保存和分布在巴西领土的法定时间。 如果您不在巴西,请在您的国家或地区使用类似的项目。

这样定义所需的时间服务器,替换pool.ntp.br与您所选择的时间服务器。

/usr/local/etc/ntpd.conf
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)

# Addresses to listen on (ntpd does not listen by default)
#listen on *

# sync to a single server
#server ntp.example.org

# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br

# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0

# use all detected timedelta sensors
#sensor *

# get the time constraint from a well-known HTTPS site
#constraints from "https://www.google.com/search?q=openntpd"

第3步 - 更改约束

自定义客户端安装还可以添加支持的限制,以便ntpd可以查询Date:从受信任的HTTPS服务器通过TLS头。

ntpd.conf(5)手册页说:“随着时间的推移下降的信息约束附近的范围之外收到的NTP包将被丢弃,这样NTP服务器将被标记为无效。” 这防止了一些MITM攻击,同时保持时钟精度。

约束添加到/usr/local/etc/ntpd.conf 请务必使用一个或多个可靠的,众所周知的HTTPS网站。 您可以通过删除第一个注释文件中提供的示例行#下方亮显的性格:

/usr/local/etc/ntpd.conf
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)

# Addresses to listen on (ntpd does not listen by default)
#listen on *

# sync to a single server
#server ntp.example.org

# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br

# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0

# use all detected timedelta sensors
#sensor *

# get the time constraint from a well-known HTTPS site
# constraints from "https://www.google.com/search?q=openntpd"

第4步 - 将OpenNTPd配置为时间服务器

本节介绍如何更改OpenNTPd的默认行为,并将FreeBSD转换为能够通过IPv4和IPv6提供时间的NTP服务器。

为服务器配置的最终结果应该是这样的,有your_server_ip您的服务器的IPv4或IPv6地址取代。

/usr/local/etc/ntpd.conf
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)

# Addresses to listen on (ntpd does not listen by default)
listen on your_server_ip

# sync to a single server
#server ntp.example.org

# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br

# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0

# use all detected timedelta sensors
#sensor *

# get the time constraint from a well-known HTTPS site
#constraints from "https://www.google.com/search?q=openntpd"

第5步 - 在引导时启动OpenNTPd

OpenNTPd的默认服务配置不会在FreeBSD的引导过程中启动守护进程。 要添加所提供的NTP服务ntpd在FreeBSD上,执行以下命令:

sudo sysrc openntpd_enable="YES"

输出应为:

Outputopenntpd_enable:  -> YES

如果你想在启动时立即设置时间,加-sopenntpd_flags-v也可以使用,以便将所有来电adjtime将被记录。 传递-sntpd将导致后台程序在前台运行长达15秒等待配置的NTP服务器中的一个回复。 不是默认设置 ,像这样的自定义安装应该配置成这样:

sudo sysrc openntpd_flags="-s -v"

输出应为:

Outputopenntpd_flags:  -> -s -v

第6步 - 管理OpenNTPd服务

现在您已经编辑和自定义配置文件以满足您的所有需求,您可以启动OpenNTPd提供的服务。

要启动服务:

sudo service openntpd start

如果成功启动,您将看到:

OutputStarting openntpd.

如果OpenNTPd守护程序的标志被配置为记录调试信息,则启动输出应如下所示:

OutputStarting openntpd.
constraint certificate verification turned off
ntp_adjtime returns frequency of 8.643158ppm

您可以管理与通常的命令OpenNTPd服务: statusrestart等。

第7步 - 疑难解答(可选)

OpenNTPd使用两个二进制文件: ntpdntpctl 第一个是守护程序本身,负责提供给客户端或服务器机器的NTP服务。 第二个用于显示关于正在运行的守护程序的信息。

本节将告诉你如何使用ntpctlncsockstat进行故障诊断OpenNTPd及其服务程序提供的NTP服务。 如果您有正在运行的服务,或只是想要一个不同的方式来检查您的服务是否正在运行,请使用此部分。

获取状态和对等项

OpenNTPd的ntpctl使用本地插座与OpenNTPd守护进程进行通信。 它默认为/var/run/ntpd.sock 本教程将介绍2种你可以用运行的查询ntpctlstatuspeers

status显示同行和传感器,以及是否系统时钟同步的状态。 当系统时钟同步时,显示层。 当系统时钟不同步,偏移系统时钟的,由报告adjtime系统调用,则显示。 当设置中位数约束时,显示与本地时间的偏移量。

使用ntpctl显示状态:

sudo ntpctl -s status

输出应类似于以下内容:

输出
8/8 peers valid, clock synced, stratum 2

peers显示有关每个对等体的以下信息:重量(重量),trustlevel(TL),地层(ST),并直到下一次更新,以对等(下一个轮询)的秒数。 偏移,网络延迟和网络抖动值以毫秒为单位。 当系统时钟同步到同行,星号(*)显示为对等的权重列的左侧。

要使用显示对等体信息ntpctl

sudo ntpctl -s peers

以下输出显示OpenNTPd正在运行并同步到作为“200.160.7.193”(从pool.ntp.br解析)的层1服务器的信息,并且您的OpenNTPd守护程序将在31秒内通过NTP更新时间:

Output        peer
           wt tl st  next  poll          offset       delay      jitter
        200.160.0.8 from pool pool.ntp.br
            1 10  2    8s   30s        -0.005ms    44.814ms     0.023ms
        200.160.7.193 from pool pool.ntp.br
         *  1 10  1   26s   31s        -0.012ms    44.814ms     0.027ms
        200.20.186.76 from pool pool.ntp.br
            1 10  1   18s   31s         0.023ms    37.481ms     0.031ms

. . .

听力插座

您可以使用sockstat列出开放的IPv4,IPv6和UNIX域套接字。 列出与NTP over IPv4和IPv6相关的侦听套接字:

sudo  sockstat -4 -6 -p 123
输出
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS     
_ntp     ntpd       44208 7  udp4   203.0.113.123:16987  200.160.0.8:123
_ntp     ntpd       44208 8  udp4   203.0.113.123:38739  200.160.7.193:123

. . .

如果您正在运行OpenNTPd服务时间在网络上,在LOCAL ADDRESS栏中会显示你与你的IP地址的行; your_ipv4_address :123 ,占IPv4套接字,并your_ipv6_address :123 ,呈现出监听IPv6套接字。

连接到互联网

使用nc解决不仅NTP,但很多网络守护进程和他们的插座(UNIX,TCP或UDP)。 该手册页说:“不像telnet ,netcat的脚本很好的和错误消息分离到标准错误,而不是因为它们发送到标准输出的telnet一些不”。

要检查是否可以通过IPv4到达NTP服务器或池主机:

sudo nc pool.ntp.br 123 -z -4 -u -v 
OutputConnection to pool.ntp.br 123 port [udp/ntp] succeeded!

要检查您是否可以通过IPv6到达NTP服务器或池主机:

sudo nc pool.ntp.br 123 -z -6 -u -v 
OutputConnection to pool.ntp.br 123 port [udp/ntp] succeeded!

使用ntpdate

使用ntpdate解决一些您可能希望使用的服务器。 你可以得到有关运行NTP服务的计算机的一些信息: stratumoffsetdelay

sudo ntpdate -q -4 ntp.cais.rnp.br

输出将类似于:

Outputserver 200.144.121.33, stratum 3, offset -0.000049, delay 0.09001
1 Sep 17:28:54 ntpdate[66740]: adjust time server 200.144.121.33 offset -0.000049 sec

请注意,该功能ntpdate现已在FreeBSD的可用ntpd程序。 请参阅-q在FreeBSD的命令行选项ntpd手册页,或者使用ntpq

警告: ntpdate工具即将退役。

阅读手册页

OpenNTPd的ntpdntpd.confntpctl没有FreeBSD的基本系统的一部分,所以它的手册页也不是操作系统的默认的一部分MANPATH 可以肯定,你将阅读OpenNTPd手册页,您应该运行man-M /usr/local/man 不要混淆与FreeBSD的默认ntpd(8)手册页。

man -M /usr/local/man ntpd

重复同样的程序来读取OpenNTPd的ntpctl(8)ntpd.conf(5)联机帮助页。

结论

时间对于工作站,服务器,路由器和网络的功能是固有重要的。 没有同步时间,在设备之间准确地相关信息变得困难,即使不是不可能的。 当涉及到安全性,如果你不能成功地比较每个路由器和所有网络服务器之间的日志,你会发现很难制定可靠的事件的图片。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏