如何将linux系统部署成ntp服务器
三、什么是NTP
为了实现时间同步,我们就需要用户NTP(Network Time Protocol)这个协议。如图1所示。简单地说,NTP是用来使系统和一个精确的时间源保持时间同步的协议。笔者建议管理员最好在自己管理的网络中建立至少一台时间服务器来同步本地时间。
如 果在一个公司的局域网中,如果让每个员工通过手动的方式每隔一段时间去校准时间,不但不利于管理,而且校准目标时间源也不一定准确。公司局域网络中不同计 算机的时间偏差尤其是客户机/服务器之间的时间偏差,就会对一些要求时间同步的服务产生影响。比如,为了管理方便,服务器设置了一到下班时间便 账号过期,用户无法访问Internet网络。而如果你的电脑时间与服务器的时间不同步,当你为你下班时间未到,正准备发送邮件时,或许在服务器的时间 上,你的账号便过期了,从而导到无法发送邮件。解决这种问题的方法很简单,就是建立一个能提供精确时间的服务器,局域网内的所有电脑统一通过这台时间服务 器进行时间同步、校准。
四、NTP服务器安装
现在,我们就来介绍一下,如何在Linux系统下,建立一个NTP服务器吧。在本文中,我们采用的是Fedora 2操作系统作为例子 (其它版本Linux也可以,系统的配置类似)。
使用 RPM 安装
首先输入如下指令
rpm -q ntp
查询本机是否安装了NTP软件包。如果没有安装的话,找到您的 Linux 的安装光盘,mount 上后,查找以NTP开头的软件包名,然后安装上去,就可以了!
rpm –ivh ntp-412-5i386rpm
五、NTP服务的设置
1.NTP软件包的结构
NTP服务的配置文件:
/etc/ntpconf :这个是 NTP 服务的主要配置文件,不同的Linux版本文件所在的目录可能会不同!
与NTP服务有关的Linux 系统文件及目录:
/usr/share/zoneinfo:这是个目录,在这个目录下是规定了各主要时区的时间设定文件,例如中国大陆地区的时区设置文件是 /usr/share/zoneinfo/Asia/Shanghai 。
/etc /sysconfig/clock:这个文件是Linux 的主要时区设定文件。每次启动后,Linux 会自动读取这个文件来设定系统预设要显示的时间!比如这个文件内容为“ZONE=Asia/Shanghai”,这表示我们的时间设定使用 /usr/share/zoneinfo/Asia/Shanghai 这个文件!
/etc/localtime:这个文件是本地系 统的时间设定文件! 假设clock 文件里面规定了使用的时间设定文件为 /usr/share/zoneinfo/Asia/Shanghai, Linux 系统就会将 Shanghai那个文件复制一份为 /etc/localtime ,所以系统的时间显示就会以 Shanghai 那个时间设定文件为准。假设这台主机到了美国纽约,您只要将 /etc/sysconfig/clock 里面的ZONE 设定成为ZONE="America/New_York" 并且将/usr/share/zoneinfo/America/New_York复制成为 /etc/localtime ,其它什么设置都不需要改动,系统的显示时间就是美国纽约当地的时间了!
与 NTP 及系统时间有关的执行文件:
/bin/date: Linux 系统上面的日期与时间修改及输出命令。
/sbin /hwclock:因为主机的 BIOS 时间与 Linux 系统时间是分开的,所以使用 date 这个指令调整了时间之后,只是调整了linux的系统时间,还需要使用 hwclock 才能将修改过后的时间写入 BIOS。这个命令必须root用户才能执行 。
/usr/sbin/ntpd:NTP服务的守护进程文件,需要启动它才能提供NTP服务。
/usr/sbin/ntpdate:NTP客户端用来连接NTP服务器命令文件。
2.NTP服务端的设置
编辑 /etc/ntpconf 文件
关于权限设定部分
权限的设定主要以 restrict 这个参数来设定,主要的语法为:
restrict IP地址 mask 子网掩码 参数
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!
上级时间服务器的设定
由于我们配置的NTP 服务器需要网络上面时间比较准确的NTP服务器来更新自己的时间,所以在我们的 NTP 服务器上面要配置一部上级时间服务器来进行校准!在 Internet 上面提供了许多时间服务器,从下面地址找一个离你最近的
http://wwweecisudeledu/~mills/ntp/clock1ahtml
用server这个参数设定上级时间服务器,语法为:
server IP地址或域名 [prefer]
IP地址或域名就是我们指定的上级时间服务器,如果 Server 参数最后加上 prefer,表示我们的 NTP 服务器主要以该部主机时间进行校准。
解决NTP服务器校准时间时的传送延迟
使用driftfile参数设置:
driftfile 文件名
在与上级时间服务器联系时所花费的时间,记录在driftfile参数后面的文件内。
注意: driftfile 后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成 ntpd守护进程可以写入。
ntpconf文件举例:
设置要求:不对 Internet 提供服务,仅对内部子网 19216800/24 提供服务,NTP 服务器的上级时间主机为:clockncfukuoka-uacjp和ntpnasagov,内部子网的客户端不能修改NTP服务器的时间参数。
在ntpconf中增加以下内容:
restrict default ignore # 关闭所有的 NTP 要求封包
restrict 127001 # 开启内部递归网络接口 lo
restrict 19216800 mask 2552552550 nomodify #在内部子网里面的客户端可以 进行网络校时,但不能修改NTP服务器的时间参数。
server 13310092 prefer #用13310092做上级时间服务器
server 19812330132 #19812330132作为上级时间服务器参考
restrict 13310092 #开放server 访问我们ntp服务的权限
restrict 19812330132
driftfile /var/lib/ntp/drift
保存退出后。启动NTP服务
service ntpd start
如果想每次系统启动,NTP服务自动启动,请输入下面命令: chkconfig -level 35 ntpd on 注意:
1NTP服务的端口是123,使用的是udp协议,所以NTP服务器的防火墙必须对外开放udp 123这个端口。
2Ntpd启动的时候通常需要一段时间进行时间同步,所以在ntpd刚刚启动的时候还不能正常提供时钟服务,最长大概有5分钟吧,如果超过了这个时间请检查一下您的配置文件。
六、NTP客户端的使用
Linux系统
在Linux 上面进行网络校时非常简单,执行 ntpdate 即可:
ntpdate 19216801 #19216801是NTP服务器的IP
不要忘了使用hwclock命令,把时间写入bios
hwclock -w
如果想定时进行时间校准,可以使用crond服务来定时执行。
编辑 /etc/crontab 文件
加入下面一行:
30 8 root /usr/sbin/ntpdate 19216801; /sbin/hwclock -w #19216801是NTP服务器的IP地址
然后重启crond服务
service crond restart
这样,每天 8:30 Linux 系统就会自动的进行网络时间校准。
Windows 系统
在 Windows XP上面使用NTP进行时间校准也很简单:
双击桌面任务栏上的时间,弹出“日期和时间”属性窗口,如图所示:
选择Internet时间,在服务器中填入你的NTP服务器的IP地址或者域名,然后点击立即更新,您的系统时间就会立即更新。如果想定时更新,把左上角的自动与Internet时间服务器同步选中,然后点击右下角的应用即可。
yy-2-3tif
如 果不是Windows XP系统,但是NTP服务器同时也是samba服务器的话,则对Windows来说,不需要安装任何时间同步软件,因为Windows客户端可以用net time\\时间服务器IP或服务器netbios名/set/yes来同步。可以把该命令放在开始菜单的启动项中,启动windows时自动同步。
由于net time命令是利用Netbios over TCP/IP协议来同步时间,所以NTP服务器不同时是samba 服务器的话,就需要Windows客户端安装时间同步软件。这方面的软件很多,使用也很简单,读者可以上网查找一下。
个人linux系统比如ubuntu、deepin等都已经安装了,只需要勾选同步网络时间即可。
如果是服务器可以参考:
[root@localhost /]# yum install ntp -y
2修改NTP配置文件,添加NTP服务器的网络位置 /etc/ntpconf
# For more information about this file, see the man pages
# ntpconf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5)
driftfile /var/lib/ntp/drift
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system
restrict default nomodify notrap nopeer noquery
# Permit all access over the loopback interface This could
# be tightened as well, but to do so would effect some of
# the administrative functions
restrict 127001
restrict ::1
# Hosts on local network are less restricted
#restrict 19216810 mask 2552552550 nomodify notrap
# Use public servers from the poolntporg projectPlease consider joining the pool (http://wwwpoolntporg/joinhtml)
server 19216811 iburst #目标服务器网络位置
#server 1CentOSpoolntporg iburst #一下三个是CentOS官方的NTP服务器,我们注释掉
#server 2centospoolntporg iburst
#server 3centospoolntporg iburst
#broadcast 1921681255 autokey # broadcast server
#broadcastclient # broadcast client
#broadcast 224011 autokey # multicast server
#multicastclient 224011 # multicast client
#manycastserver 239255254254 # manycast server
#manycastclient 239255254254 autokey # manycast client
# Enable public key cryptography
#crypto
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography
keys /etc/ntp/keys
# Specify the key identifiers which are trusted
#trustedkey 4 8 42
# Specify the key identifier to use with the ntpdc utility
#requestkey 8
# Specify the key identifier to use with the ntpq utility
#controlkey 8
# Enable writing of statistics records
#statistics clockstats cryptostats loopstats peerstats
# Disable the monitoring facility to prevent amplification attacks using ntpdc
# monlist command when default restrict does not include the noquery flag See
# CVE-2013-5211 for more details
# Note: Monitoring will not be disabled with the limited restriction flag
disable monitor
保存退出
3启动服务并设置开启自启
[root@localhost /]# systemctl start ntpdservice #启动服务
[root@localhost /]# systemctl enable ntpdservice #设置为开机启动
NTP client的设置
已经有了一台自己的Relay Server如果想让局域网内的其他client都进行时间同步的话那么我们就都应该照样再搭建一台Relay Server,然后把所有的client都指向这两台服务器(注意不要把所有的client都指向Internet上的服务器) 只要在client的/etc/ntpconf加上这你自己的服务器就可以了
代码:
server ntp1leonardcom
server ntp2leonardcom
LINUX客户端使用
ntpdate 17230218114
来向NTP服务器同步自己的时间
其它LINUX如果仅作为只客户端的话,则不能启动ntpd服务!否则无法运行ntpdata 服务器地址 来同步时间
之后可以使用cron或修改crontab文件定期向NTP服务器更新时间,并用
# hwclock --systohc
将系统时间设置为硬件时间
linux ntp时间服务器及客户端安装配置1、主要文件及命令: /etc/ntp/bin/view/Main/SoftwareDownloads下载,安装RPM包: [root@localhost ~]# rpm -ivh ntp-422p1-9el5_41rpm3、备份一下配置文件 cp /etc/ntpconf /etc/ntpconf_bak4、ntpconf文件主要参数说明: 41、利用 restrict 来管理权限控制 restrict [你的IP] mask [netmask_IP] [parameter] 其中 parameter 的参数主要有底下这些: ignore: 拒绝所有类型的 NTP 联机; nomodify: 客户端不能使用 ntpc 与 ntpq 这两支程序来修改服务器的时间参数, 但客户端仍可透过这部主机来进行网络校时的; noquery: 客户端不能够使用 ntpq, ntpc 等指令来查询时间服务器,等于不提供 NTP 的网络校时; notrap: 不提供 trap 这个远程事件登录 (remote event logging) 的功能。 notrust: 拒绝没有认证的客户端。 42、利用 server 设定上层 NTP 服务器 server [IP or hostname] [prefer] perfer 表示‘优先使用’5、具体配置如下: 原来的上层服务器及对上层的限制注释掉,然后直接加上这几项 server 2107214544 prefer server timenistgov restrict 2107214544 mask 255255255255 nomodify notrap noquery restrict timenistgov mask 255255255255 nomodify notrap noquery restrict 19216810 mask 2552552550 nomodify #对内网访问开放,不同网段设置要改一下 6、重启服务:/etc/initd/ntpd restart 7、加入开机启动:chkconfig ntpd on8、查看系统日志看有没有报错:tail /var/log/messages9、查看启动的端口:netstat -tlunp grep ntp10、检查与上层服务器是否同步成功(约15分钟后才会和上层连接): ntpstat 或 ntpq -p11、先对服务器进行手动较正,要不误差超过1000秒的话服务会自动停掉: date MMDDHHMMCCYYSS #设置时间,格式:月月日日时时分分年年秒秒 /etc/initd/ntpd stop #要把服务停掉,因为ntp与ntpdate不能同时生效 ntpdate 2107214544 hwclock -w #写入硬件时间,-r是显示硬件时间 /etc/initd/ntpd restart 12、别的客户端要进行同步,则这样处理: vim /etc/crontab /10 root (/usr/sbin/ntpdate 2107214544 && /sbin/hwclock -w) &> /dev/null /etc/initd/crond restart13、要点: linux 系统本来就有两种时间,一种是 linux 以 1970/01/01 开始计数的系统时间,一种则是 BIOS 记载的硬件时间; linux 可以透过网络校时,最常见的网络校时为使用 NTP 服务器,这个服务启动在 udp port 123; 时区档案主要放置于 /usr/share/zoneinfo/ 目录下,而本地时区则参考 /etc/localtime; NTP 服务器为一种阶层式的服务,所以 NTP 服务器本来就会与上层时间服务器作时间的同步化, 因此 nptd 与 ntpdate 两个指令不可同时使用; NTP 服务器的联机状态可以使用 ntpstat 及 ntpq -p 来查询; NTP 提供的客户端软件为 ntpdate 这个指令; 在 linux 下想要手动处理时间时,需以 date 设定时间后,以 hwclock -w 来写入 BIOS 所记录的时间。 NTP 服务器之间的时间误差不可超过 1000 秒,否则 NTP 服务会自动关闭。
0条评论