百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

简单介绍如何为linux集群快速配置ntp

toqiye 2024-09-04 20:06 14 浏览 0 评论

NTP本身是一个复杂的协议,但通常我们不需要纠结于其复杂性,也可以简单使用,下面就分享一种简单为Linux集群配置ntp的方法。

  • 在当前目录创建ntp.conf文件
# 导致漏洞CVE-2013-5211,默认disable
disable monitor
server 0.cn.pool.ntp.org
server 0.asia.pool.ntp.org
server ntp.aliyun.com
# 允许上层时间服务器主动修改本机时间
restrict 0.cn.pool.ntp.org nomodify notrap noquery
restrict 0.asia.pool.ntp.org nomodify notrap noquery
restrict ntp.aliyun.com nomodify notrap noquery
# 外部时间服务器不可用时,以本地时间作为时间服务
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10


关于漏洞CVE-2013-5211:

漏洞CVE-2013-5211与molist功能有关,molist主要用于监控NTP服务器。Ntpd4.2.7p26之前的版本都会去响应NTP中的 mode7“monlist”请求,响应后会返回与NTP服务器进行过时间同步的最后600个客户端IP,响应包按每6个IP分割,最多100个响应包。

ntpd-4.2.7p26版本后,monlist功能已被mrulist取代,其使用mode6控制报文,且通过握手过程阻止对第三方主机的dos攻击。


解决方法:

若Ntpd版本低于4.2.7p26,则在ntp.conf文件增加disable monitor手动禁用该功能;

或使用restrict … noquery 或 restrict … ignore限制ntpd服务响应的源地址;

或升级ntpd版本。

对ntpd的配置需要重启ntpd才生效。

systemctl restart ntpd


常用配置含义解析:

1、server,ntp服务器地址

格式:server address [key key] [burst] [iburst] [version version] [prefer] [minpoll minpoll] [maxpoll maxpoll]

burst:当服务器可达时,间隔2s发送8个分组,而非默认一个分组。

iburst:当服务器不可达时,间隔2s发送6个分组,而非默认一个分组。

perfer:标记为首选服务器。

pool:指定NTP消息的最小轮询间隔和最大轮询间隔,是2的幂,单位为秒。最大轮询间隔默认为10 (1024 s),但可以通过maxpoll选项增加到17 (36.4 h)的上限。最小轮询间隔默认为6 (64 s),但可以通过minpoll选项减少到0 (1 s)的下限。

2、fudge,设置时间服务器的层级

格式:fudge ip [stratum int],fudge须跟在server后一行

stratum取值[0,15]

0:表示顶级

10:通常用于给局域网主机提供时间服务

fudge将本地时钟设置为stratum 10,使ntp在无上层时间服务器可用时使用本地时钟。

3、restrict,权限控制

格式:restrict address[/cidr] [mask mask] [flag …]

ignore:禁止所有NTP连接请求

nomodify:不允许客户端使用命令ntpc和ntpq来修改服务器端的时间

nopeer:拒绝可能导致调动新关联的数据包;当配置的关联不存在时,这包括对称的主动数据包。这通常发生在远程客户端在其配置文件中使用peer命令时。我们不支持这种模式。它曾经包括池服务器,但现在它们在任何限制中都戳穿了一个漏洞。

noquery:不提供NTP网络校时服务

notrap:不接受远程登录请求

notrust:不接受未经过认证客户端的请求

  • 在当前目录创建shell脚本,保存并执行它
#!/bin/bash
yum -y install sshpass
user="root"
declare -A ipPswd
ipPswd["172.0.0.1"]="pswd"
ipPswd["172.0.0.2"]="pswd"
declare -A hostIP
hostIP["node01"]="172.0.0.1"
hostIP["node02"]="172.0.0.2"
ntpdNode="node01"
function set_ntp() {
for host in ${!hostIP[*]};do
if [[ $host == $ntpdNode ]];then
ssh -tt -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@${hostIP[$host]} "yum -y install ntp"
ssh -tt -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@${hostIP[$host]} "rm -f /etc/ntp.conf"
sshpass -p ${ipPswd[${hostIP[$host]}]} scp -o "StrictHostKeyChecking no" ./ntp.conf $user@${hostIP[$host]}:/etc/ntp.conf
ssh -tt -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@${hostIP[$host]} "systemctl restart ntpd"
ssh -tt -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@${hostIP[$host]} "systemctl enable ntpd.service"
else
ssh -tt -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@${hostIP[$host]} "yum -y install ntpdate"
ssh -tt -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@${hostIP[$host]} "echo '*/1 * * * * /usr/sbin/ntpdate $ntpdNode' >> /var/spool/cron/root"
fi
done
}
set_ntp
  • 检验命令
  • 刚启动时,一般是:
[root@node01 ~]# ntpstat
unsynchronised
time server re-starting
polling server every 64 s

连接并同步后:

[root@node01 ~]# ntpstat
synchronised to NTP server (远端ntp服务器ip) at stratum 3
time correct to within 50 ms #时间校正到相差50ms 之内
polling server every 1024 s #每1024秒会向上级NTP轮询更新一次时间
[root@node01 ~]# ntpq -p
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*203.107.6.88 打码   2 u  941 1024  377   49.166   -0.587   1.162
+time.neu.edu.cn .PTP. 1 u  256 1024  377   54.313   -7.347   0.562
ntp.hkg10.hk.le 打码 2 u  17h 1024    0  304.929   18.665   0.000
LOCAL(0) .LOCL.          10 l 164d   64    0    0.000    0.000   0.000
[root@node01 ~]# date
Wed Nov 2 10:13:35 CST 2022


以上就是今天的内容,如果大家有疑问或者新的想法,欢迎联系我沟通交流。

相关推荐

在Vue中使用JSX,很easy的

?此账号为华为云开发者社区官方运营账号,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态本文分享自华为云社区《在Vue中如何使用JSX,就这么简单!【建议收藏】》,...

深度学习走进死胡同了?

人工智能真正的前路究竟在何方?今天的话题很大,咱们先从浅显的环节入手。深度学习“教父”、在世科学家中的翘楚GeoffreyHinton曾在2016年多伦多召开的一场AI大会上坦言,“放射...

“信息引导”超全总结,让你的设计有理有据

讲信息引导方式的有很多,而本文主要从“是否会打扰用户”的维度,分两个类型举例分析了其中的设计以及原理。上一篇讲了信息引导的策略层:可切入的场景和机制《系统性地教你:如何设计产品的信息引导?》。这篇就总...

Blazor 全屏按钮/全屏服务 (BootstrapBlazor组件库)

Blazor简介Blazor是一个使用.NET生成的交互式客户端WebUI的框架。和前端同学所熟知的Vue、React、Angular有巨大差异。其最大的特色是使用C#代码(理论...

一起学Vue:UI框架(element-ui)

目标使用Vue+ElementUI构建一个非常简单CRUD应用程序,以便您更好地了解它的工作方式。效果页面比如我们要实现这样列表、新增、编辑三个页面:列表页面新增页面编辑页面安装element我们使用...

在Vue.js + Element UI的表格中优雅地实现图片放大功能

引言在Web应用中,表格常常用于展示数据集,而图片则是数据可视化的重要组成部分。为了提升用户体验,我们通常需要允许用户在不跳转页面的情况下,直接从表格中查看图片的原始尺寸。本文将引导你通过Vue.js...

Element-ui简单使用

什么是Element-ui?根据官网的说法,Element-ui,是一套为开发者、设计师和产品经理准备的基于Vue2.0的由饿了么公司出品的桌面端组件库。官网:https://element.ele...

极致舒适的Vue弹窗使用方案

一个Hook让你体验极致舒适的Dialog使用方式!Dialog地狱为啥是地狱?因为凡是有Dialog出现的页面,其代码绝对优雅不起来!因为一旦你在也个组件中引入Dialog,就最少需要额外维护一个v...

VUE3+ts开发弹出框插件

1.插件页面代码取消确认˂...

十分钟,让你学会Vue的这些巧妙冷技巧

前言写了两年的Vue,期间学习到好几个提高开发效率和性能的技巧,现在把这些技巧用文章的形式总结下来。1.巧用$attrs和$listeners$attrs用于记录从父组件传入子组件的所有不被prop...

element的嵌套dialog,在打开第二个dialog的时候会被遮罩层遮住

在一个弹出层的内容区做处理打开另一个弹出层时,第二个弹出层会被遮罩层遮住。对于确实需要嵌套Dialog的场景,提供了append-to-body属性。将内层Dialog的该属性设置为true...

无代码平台之自定义组件

无代码平台就是一个一个的组件当成积木,通过拖拉拽的方式搭建起来,构建自己的应用。前端有前端组件,如果不够自己增加组件,后端有后端的组件,如果不够自己增加组件,用统一的组件间传参、组件穿透、前后端穿透等...

Tailwindcss 入门

是什么?Tailwindcss是一个功能类优先的CSS框架,通过flex,pt-4,text-center和rotate-90这种原子类组合快速构建网站,而不需要离开你的HTML。...

推荐一款比flex更强大的CSS布局——Grid布局

flex布局是一维布局Grid布局是二维布局flex布局一次只能处理一个维度上的元素布局,一行或者一列Grid布局是将容器划分成了“行”和“列”,产生了一个个的网格。Grid基础display...

前端入门——css 网格轨道详细介绍

上篇前端入门——cssGrid网格基础知识整体大概介绍了cssgrid的基本概念及使用方法,本文将介绍创建网格容器时会发生什么?以及在网格容器上使用行、列属性如何定位元素。在本文中,将介绍:...

取消回复欢迎 发表评论: