RHEL5配置ntp服务器端与客户端

一、原理
 NTP是用来使系统和一个精确的时间源保持时间同步的协议。建议大家在自己管理的网络中建立至少一台时间服务器来同步本地时间,这样可以使得在不同的系统上处理和收集日志和管理更加容易,而且不会出错。
 官方网站是:http://www.ntp.org/
 从上面我们可以获得Linux下的源代码,以及互联网上的公开的NTP服务器,其地址列表如下:
http://ntp.isc.org/bin/view/Servers/NTPPoolServers
http://ntp.isc.org/bin/view/Servers/WebHome
 NTP协议是通过Server和Client的方式进行的,通讯的过程是:


1.首先,主机需要启动这个NTP服务


2.Client 会向 NTP Server 发送出调校时间的 message


3.然后 NTP Server 会送出目前的标准时间给 Client


4.Client 接收了来自 Server 的时间后,会据以调整自己的时间,以实现网络校时。
 虽然网络上有很多公开的NTP服务器,但在使用的时候需要注意。由于网络传输是有延时的,当Client对一个延时比较厉害的服务器发送请求后,直到最后Client获得时间,期间可能会出现一个由于网络延时导致的的时间差。所以,建议大家选择离自己最近的NTP服务器作为校验的标准。
☆系统环境:RHEL5

 

二、配置
 安装rpm -ivh ntp*.*.*.i386.rpm

◎规划
 很多时候,作为提供数据应用的服务器都不能直接联通互联网。此时,我们就需要在局域网内部署一台专用于时间同步的机器(通常是网管机),这样,服务器通过局域网对网管机进行时间同步即可。当然,如果你只要保证多台服务器之间的时间一致,那可以更简单,只要其中一台服务器为基准,然后其他服务器对它做同步,那是最简单的。


1、配置服务端
 NTP服务端的配置比较简单,只有一个配置文件:/etc/ntp.conf。而且文件中已经有很多例子可以参考,描述一下:
→语法1:

引用
restrict IP mask 掩码 参数
IP是允许或不允许访问的地址,配合掩码可以对一段网段使用;
参数包括:
ignore:关闭所有NTP联网服务
nomodify:客户端不能修改服务端的时间,但可以作为客户端的校正服务器
notrust:除通过认证外,否则指定的网段为不信任网段
noquery:不提供时间查询

(若不设置参数,表示对该IP或网段没有任何限制)
 而配置文件中有几个是默认设置好的,包括:

引用
restrict default nomodify notrap noquery
#default就是0.0.0.0,也就是关闭所有
restrict 127.0.0.1
#这是允许本级查询

→语法2:

引用
server [IP|FQDN] [prefer]
IP|FQDN就是给出作为你服务端同步的基准NTP服务器
prefer是用于指定主次服务器的,有标识的就是主要服务器咯

而配置文件默认的包括了:

引用
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org

这些都是比较公开的、常用的NTP服务器,也可以改为你指定的服务器,如:

server 210.72.145.44 prefer (中国国家授时中心服务器地址 prefer表示优先注意把默认的server更改成这样)  

server 218.21.130.42 (cn.pool.ntp.org的IP)

其他:

引用
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay  0.008

要注意的就是driftfile定义,driftfile 规定我们的主机在与Time Server沟通时所花费的时间,时间记录在 driftfile 后面接的文件内
→添加:
这里就添加上允许访问这台服务器的IP或网段,在配置文件上增加:

引用
restrict 192.168.228.0 mask 255.255.255.0 nomodify

这样,在192.168.228.0/24网段内的服务器就可以通过这台NTP Server进行时间同步了!

2、启动NTP服务端
 在启动NTP服务前,先对提供服务的这台主机手动的校正一次时间咯。(因为启动服务器,端口会被服务端占用,就不能手动同步时间了

# ntpdate cn.pool.ntp.org
25 Apr 14:33:51 ntpdate[8310]: step time server 80.85.129.2 offset 6.655976 sec

 然后,启动ntpd服务:

# service ntpd start

 查看端口:

# netstat -ln|grep 123
udp        0      0 192.168.228.153:123         0.0.0.0:*   
udp        0      0 127.0.0.1:123               0.0.0.0:*            
udp        0      0 0.0.0.0:123                 0.0.0.0:*            
udp        0      0 :::123                      :::* 

3、设置客户端
 NTP的客户端可以是Linux,也可以是通过软件在Windows上实现。
Linux客户端
 同步的方法非常简单,运行一个命令即可:
# ntpdate 192.168.228.153
 当然,这只是修改系统时间,你需要用hwclock -w把系统时间写入硬件时间中。也可以用计划任务做定时更新:
# crontab -e
0 0 * * * /usr/sbin/ntpdate 192.168.228.153;/sbin/hwclock -w;
Windows XP professional客户端
可以用下面的命令进行:

NET TIME /SETSNTP:192.168.228.153
NET TIME /QUERYSNTP
NET START w32time

第一行是配置同步的服务器,第二行是察看设置结果,第三行是启动“Windows Time”服务。Windows Time服务默认是自动启动的,并会定时
同步指定的服务器。
若系统是Home版等,可以通过日期/时间属性里面的Internet同步服务器,指定服务器地址为192.168.228.153即可。


三、可能出现的问题
 虽然NTP服务的配置非常的简单,但总是可能出现问题的,可以从下面几方面入手:
1、相关命令

# ntptrace 服务器IP
可以最终NTP服务器的通讯路径
# ntpq -p
检查时间服务器同步的状态

 

2、检查配置文件
 保证配置文件中没有使用ignore参数,如没有restrict default ignore等。


3、检查防火墙配置
 由于NTP服务是使用UDP 123端口的,有防火墙的话,需要打开该端口。


4、常见错误

引用
25 Apr 15:30:17 ntpdate[11520]: no server suitable for synchronization found

 这个提示最为常见,很多文章都介绍了ntp服务但并没有对该服务进行此处错误信息的详细解释。其实,这不是一个错误。而是由于每次重启NTP服务器之后大约要3-5分钟客户端才能与server建立正常的通讯连接。当此时用客户端连接服务端就会报这样的信息。一般等待几分钟就可以了!若之后还有问题,则才是真正有故障咯!

 

转贴:http://blog.sina.com.cn/s/blog_5e13feeb0100cm7d.html

<think>我们正在解决一个具体问题:在无网络环境中配置本地NTP服务器。 根据用户需求,我们需要在离线环境中搭建NTP服务器,这意味着服务器无法访问互联网上的公共NTP服务器。 解决方案是使用本地时钟作为时间源(通常是一个硬件时钟,但可能不够精确,所以需要设置层级为较高值,表示它不是一个可靠的时间源,但可以作为内部网络的时间源)。 同时,我们还需要配置客户端这台服务器同步。 步骤: 1. 安装NTP软件包(在无网络环境中,需要提前下载好安装包并离线安装) 2. 配置NTP服务器(使用本地时钟源) 3. 启动NTP服务并设置开机自启 4. 配置客户端指向这台服务器 5. 验证同步 参考引用[2]中提到了在离线环境中搭建本地NTP服务器,并使用了本地时钟源(127.127.1.0)和设置层级(stratum)为10(表示较低的优先级,因为它是本地时钟,不是来自更高层级的源)。 具体步骤: 一、服务器端配置(在无网络环境中,这台机器将作为NTP服务器1. 离线安装NTP 在能够联网的机器上下载NTP的安装包(RPM或DEB,根据发行版),然后复制到无网络环境的服务器上安装。 例如,对于CentOS/RHEL: 下载:在联网机器上执行 `yum install --downloadonly --downloaddir=./ntp-packages ntp` 然后将整个目录复制到目标服务器,使用 `yum localinstall *.rpm` 安装。 对于Ubuntu/Debian: 下载:`apt download ntp`,然后复制deb包到目标服务器,使用 `dpkg -i ntp*.deb` 安装。 2. 配置NTP服务器 编辑配置文件 `/etc/ntp.conf`,主要设置本地时钟源和层级。 示例配置: # 使用本地时钟作为时间源 server 127.127.1.0 # 本地时钟 fudge 127.127.1.0 stratum 10 # 设置层级为10,表示如果无法访问外部源,则使用本地时钟 # 禁止修改其他节点的时间(因为我们是服务器) restrict default kod nomodify notrap nopeer noquery restrict 127.0.0.1 # 允许内网网段访问(例如192.168.1.0/24) restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # 其他设置保持默认,如日志、drift文件等 3. 启动NTP服务 sudo systemctl start ntpd sudo systemctl enable ntpd 4. 检查服务器状态 ntpq -p # 应该可以看到本地时钟源(LOCAL(0))被标记为*,表示当前正在使用 二、客户端配置 1. 同样需要安装NTP软件(离线安装,方法同上) 2. 配置客户端:编辑 `/etc/ntp.conf`,注释掉原有的server行,添加指向本地NTP服务器的IP。 server 192.168.1.100 # 假设服务器IP是192.168.1.100 3. 启动NTP服务 sudo systemctl start ntpd sudo systemctl enable ntpd 4. 检查同步状态 ntpq -p # 应该可以看到服务器IP,前面有*表示已同步 ntpstat # 查看同步状态 注意:在无网络环境中,所有客户端都只能这台本地服务器同步,因此服务器的时间准确性依赖于其硬件时钟。如果服务器重启,时间可能会重置,所以建议在服务器配置硬件时钟同步(hwclock)或使用电池供电的硬件时钟(RTC)。 另外,如果服务器本身的时间偏差很大,NTP服务可能会拒绝同步给客户端(默认允许的最大偏差是1000秒),可以通过在服务器配置中添加`tinker panic 0`来禁用这一检查(但需谨慎,因为时间跳变可能影响应用)。 引用说明: 引用[1]提到了一些公共NTP服务器,但在无网络环境中不可用,所以我们不使用。 引用[2]提供了在离线环境中搭建本地NTP服务器配置示例,其中使用了本地时钟源和设置层级。 因此,我们在回答中会参考引用[2]的配置方法。 最后,生成相关问题。</think>### 无网络环境中搭建本地 NTP 服务器的完整指南 在无网络环境中配置本地 NTP 服务器,需使用本地时钟作为时间源,并通过层级(stratum)设置建立内部时间同步体系。以下是详细步骤: --- #### 1. **离线安装 NTP 服务** **适用场景**:无法连接互联网的服务器 ```bash # CentOS/RHEL(需提前下载 RPM 包) sudo rpm -ivh ntp-*.rpm # Ubuntu/Debian(需提前下载 DEB 包) sudo dpkg -i ntp_*.deb ``` --- #### 2. **配置 NTP 服务器端** 编辑配置文件 `/etc/ntp.conf`: ```bash sudo nano /etc/ntp.conf ``` 关键配置项: ```conf # 使用本地时钟作为时间源(127.127.1.0 是本地时钟标识) server 127.127.1.0 # 设置层级为 10(stratum 10 表示次级时间源) fudge 127.127.1.0 stratum 10 # 允许内网客户端访问(例如 192.168.1.0/24 网段) restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # 禁用外部 NTP 服务器访问 disable monitor ``` > **说明**: > - `stratum 10` 表示该服务器是内部网络的最终时间源 > - `nomodify notrap` 允许客户端同步但禁止修改服务器配置[^2] --- #### 3. **启动并验证服务** ```bash # 启动服务并设置开机自启 sudo systemctl start ntpd sudo systemctl enable ntpd # 检查同步状态 ntpq -p ``` 预期输出: ``` remote refid st t when poll reach delay offset jitter ============================================================================== *LOCAL(0) .LOCL. 10 l 12 64 7 0.000 0.000 0.001 ``` > **关键指标**: > - `LOCAL(0)` 表示使用本地时钟源 > - `st=10` 表示层级为 10(公式:$ \text{stratum} = \text{上级层级} + 1 $) --- #### 4. **客户端配置**客户端机器编辑 `/etc/ntp.conf`: ```conf # 指向本地 NTP 服务器 IP server 192.168.1.100 iburst # iburst 加速初始同步 ``` 启动客户端服务: ```bash sudo systemctl restart ntpd ntpstat # 应显示 "synchronised to NTP server" ``` --- #### 5. **时间同步验证** - **服务器时间基准设置**(首次需手动校准): ```bash sudo date -s "2024-06-15 10:00:00" # 设置初始时间 sudo hwclock --systohc # 同步到硬件时钟 ``` - **客户端同步检查**: ```bash timedatectl show | grep NTP # 查看同步状态 ntpq -c "rv 0 offset" # 获取时间偏差(单位:毫秒) ``` --- #### 6. **防火墙配置(可选)** ```bash # 开放 UDP 123 端口 sudo firewall-cmd --add-port=123/udp --permanent sudo firewall-cmd --reload ``` --- ### 关键注意事项 1. **时间漂移问题**: 本地时钟源每天可能漂移数秒,建议定期通过 `sudo hwclock --systohc` 同步系统硬件时钟。 2. **层级继承规则**客户端层级 = 服务器层级 + 1(例如服务器 stratum=10客户端 stratum=11)[^2]。 3. **大偏差处理**: 在 `/etc/ntp.conf` 添加 `tinker panic 0` 可强制同步大偏差时间。 > **网络环境优势**: > - 完全隔离外部网络,安全性高 > - 避免公共 NTP 服务器不可达风险 > - 满足内网设备毫秒级同步需求[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值