验证客户端设置

要验证客户端是否设置正确:

root@solarislab33# ntpq -p
remote          refid       st t  when  poll  reach   delay  offset    disp
===========================================================================
*192.168.10.10  172.30.1.1  3 u  1021  1024   377     0.64   -0.619    0.12

其中:

remote : 远程对等方的地址
refid : 参考 ID(如果参考 ID 未知,则为 0.0.0.0)
st : 远程节点的层
t :收到最后一个数据包时的对等体类型(本地、单播、多播或者广播)
when :最后一次轮询该时间服务器是多少秒前
poll :以秒为单位的轮询间隔
reach :可达性寄存器,八进制
delay, offset, disp :当前估计的对等体的延迟偏移量和离散度,均以毫秒为单位。

* in remote indicates currently selected peer
+ means that the host is an acceptable peer for synchronization but not accepted
- not acceptable

如果一切正常,延迟和偏移值应该不为零。

在非全局Zone中配置 NTP 客户端。

在非全局Zone中配置 NTP 客户端的配置设置与上述完全相同。
但是这里有一个问题,在非全局Zone中运行的 Solaris 实例无法使用 NTP 服务进行时间同步。
尝试启动 NTP 服务将失败,并在 syslog 中显示以下错误消息:

Sep 7 18:45:47 zone ntpdate[19820]: [ID 999808 daemon.error] Can't adjust the time of day: Not owner
Sep 7 18:45:47 zone xntpd[19822]: [ID 702911 daemon.notice] xntpd 3-5.93e+sun 03/08/29 16:23:05 (1.4)
Sep 7 18:45:48 zone xntpd[19822]: [ID 272427 daemon.error] sched_setscheduler(): Not owner
Sep 7 18:45:48 zone xntpd[19822]: [ID 301315 daemon.notice] tickadj = 5, tick = 10000, tvu_maxslew = 495, est. hz = 100
Sep 7 18:45:48 zone xntpd[19822]: [ID 953130 daemon.error] loop_config: ntp_adjtime() failed: Not owner
Sep 7 18:45:48 zone xntpd[19822]: [ID 266339 daemon.notice] using kernel phase-lock loop 0041, drift correction 0.00000

解决方案

在具有非全局Zone的系统中,全局Zone内核由所有非全局Zone共享。
因此,整个设置中只有一个日期/时间,而该时间通常仅由全局Zone控制。
默认情况下,更改日期和时间的权限在非全局Zone内不可用,因此 NTP 服务将无法调整时间。
非全局Zone的默认配置假定时间同步是在全局Zone中完成的,并且不需要从非全局Zone内部调整系统时间。
如果非全局Zone的管理员能够更改系统时间,那么这些更改将影响所有正在运行的Zone(包括全局Zone),这可能被视为安全风险。

如果需要,可以将时间同步委托给非全局Zone。
请记住,来自不同来源的多次时间调整可能会导致问题,并且只有一个Zone应该运行 NTP 服务。
如果要将 NTP 同步委托给非全局Zone,则建议禁用全局Zone中的 NTP 服务。

如上所述,调整时间的能力由 Solaris 权限控制。
此权限的名称称为“sys_time”,可以使用 ppriv 命令查看此权限的信息:

# ppriv -lv sys_time
sys_time
        Allows a process to manipulate system time using any of the
        appropriate system calls: stime, adjtime, ntp_adjtime and
        the IA specific RTC calls.

如果我们不确定当前是否可以使用 sys_time 权限,那么我们可以使用以下命令(以 root 身份)来检查该权限是否可用:

# ppriv -v $$ | grep sys_time

默认情况下,该命令只会在全局Zone中显示输出,而不会在任何非全局Zone中显示。
默认情况下,sys_time 权限未分配给非全局Zone。
从 Solaris 10 Update 3 (11/06) 开始,可以使用 zonecfg 命令的 limitpriv 选项更改非全局Zone的可用权限。

在默认配置中,limitpriv 设置将为空:

global-zone# zonecfg -z zonename info limitpriv
limitpriv:

如果要将 sys_time 权限添加到Zone,则可以使用 zonecfg 命令修改属性并重新启动Zone以激活更改:

global-zone# zonecfg -z zonename set limitpriv="default,sys_time"
global-zone# zoneadm -z zonename reboot

一旦非全局Zone中的 sys_time 权限可用,我们可以继续照常设置 NTP,例如:配置 /etc/inet/ntp.conf 文件并启用 ntp 服务。

使用 ntpupdate 命令

ntpdate 实用程序设置本地日期和时间。
为了确定正确的时间,它轮询作为参数给出的主机上的网络时间协议 (NTP) 服务器。
此实用程序必须在本地主机上以 root 身份运行。
它可以定期从 cron 运行,作为运行守护程序的替代方法。
每隔一到两个小时这样做一次将导致足够精确的计时,以避免步进时钟。
如果我们已经在运行 xntpd 守护程序,则不能使用 ntpdate 命令。
尝试这样做会产生以下错误:

# ntpdate champ
07 Sep 14:55:52 ntpdate[19780]: the NTP socket is in use, exiting

我们还必须是 root 用户才能运行 ntpdate 命令,否则我们将看到如下错误返回:

% ntpdate champ
23 Sep 14:44:36 ntpdate[19743]: bind() fails: Permission denied

在此示例中,我们指定要与之同步的 ntp 服务器“kala”。

# ntpdate kala
07 Sep 17:12:21 ntpdate[20963]: adjust time server 129.148.nnn.nnn offset 0.001422 sec
如何在 Solaris 8、9、10 和非全局Zone中配置 NTP 客户端

这篇文章描述了如何在 Solaris 8,9 和 10 以及非全局Zone上设置 NTP(网络时间协议)客户端。
全局Zone和非全局Zone中的配置完全相同,只是默认情况下不允许非全局Zone更改时间。
这可以通过为非全局Zone分配权限来启用。
下面是一些我们应该熟悉的术语,以便配置和排除 NTP 客户端故障。

Stratum :时间通过 NTP 服务器的层次结构分布,每个服务器采用主(层 1)服务器,这些服务器位于堆的顶部,可以访问一些外部时间源,通常是无线电时钟。
2 层服务器是当前从 1 层服务器获取时间的服务器,3 层服务器将从 2 层服务器获取时间,依此类推。
为了避免长时间的同步循环,层数限制为 15.

配置

  1. 将 /etc/inet/ntp.client 复制到 /etc/inet/ntp.conf。
# cp /etc/inet/ntp.client /etc/inet/ntp.conf
  1. 在客户端启动 xntpd 守护进程
    对于 Solaris 8 和 9:
# /usr/lib/inet/xntpd

对于 Solaris 10:

# svcadm enable ntp

有 3 种方法可以配置 NTP 客户端:

1. 使用多播地址:

指定本地服务器在多播模式下运行,客户端将通过寻址到命令中指定的多播地址的多播数据包接收 NTP 时间信息。

multicastclient 224.0.1.1

注意:这是使用/etc/inet/ntp.client模板配置/etc/inet/ntp.conf时的默认配置。

之路 on it Road.com

2.从特定服务器同步

如果要将时钟同步到特定的服务器或者服务器,请在 /etc/inet/ntp.conf 文件中指定它/它们,如下所示。

server (ipaddress)

例如 :

server 192.168.1.20

3. 与另一个系统对称的主动模式

我们还可以将系统指定为与另一个系统在对称主动模式下运行:

peer (ipaddress)

例如 :

peer 192.168.1.20
日期:2020-09-17 00:15:06 来源:oir作者:oir