一、ntp是什么
网络时间协议(英语:Network Time Protocol,简称NTP)是在数据网络潜伏时间可变的计算机系统之间通过分组交换进行时钟同步的一个网络协议。自1985年以来,NTP是当前仍在使用的最古老的互联网协议之一。NTP由特拉华大学的David L. Mills设计。
二、ntp解决什么问题
天翼云主机上线交付后,每台云主机都应该配置ntp时间服务,确保每台主机的时钟同步,避免由于系统时钟不同步导致业务不一致,一般业务只要秒级同步就可以了,但是ntp服务目前可以实现毫秒级同步。
理想情况计算机的时间同步到几毫秒的误差内,它使用Marzullo算法的修改版来选择准确的时间服务器,其设计旨在减轻可变网络延迟造成的影响。
NTP通常可以在公共互联网保持几十毫秒的误差;
在理想的局域网环境中可以实现超过1毫秒的精度;
不对称路由和拥塞控制可能导致100毫秒(或更高)的错误。
三、ntp安全问题
2014年底,几个安全问题被发现。在以前,研究人员发现NTP服务器可能受到中间人攻击的影响,除非数据包被加密和签名以验证身份。[28]但这所涉及的计算量在繁忙的服务器上可能是不切实际的,尤其是容易遭遇拒绝服务攻击。
NTP已经被用于分布式拒绝服务(DDoS)攻击,方法是将一个具有伪造的返回地址的小的查询发送到NTP服务器。类似DNS放大攻击,服务器将以比攻击者发送数据量大很多倍的数据量回复给伪造的目标。为了避免参与攻击,服务器可以配置为忽略外部查询,或者升级到4.2.7p26或更高版本。
四、自动化部署ntp服务主要步骤
1、下载安装ntp配置role
ansible-galaxy install geerlingguy.ntp
2、配置自动化发布脚本
---
- hosts: all
roles:
- geerlingguy.ntp
vars:
ntp_enabled: true
ntp_timezone: Asia/Shanghai
ntp_manage_config: true
ntp_area: 'asia'
ntp_servers:
- "0{{ '.' + ntp_area if ntp_area else '' }}.pool.ntp.org iburst"
- "1{{ '.' + ntp_area if ntp_area else '' }}.pool.ntp.org iburst"
- "2{{ '.' + ntp_area if ntp_area else '' }}.pool.ntp.org iburst"
- "3{{ '.' + ntp_area if ntp_area else '' }}.pool.ntp.org iburst"
ntp_restrict:
- "127.0.0.1"
- "::1"
配置说明:
亚洲地区ntp服务器列表:
server 0.asia.pool.ntp.org server 1.asia.pool.ntp.org server 2.asia.pool.ntp.org (ipv6 support) server 3.asia.pool.ntp.org
如果你的配置区域不在亚洲只需要修改ntp_area变量值即可完成ntp服务器域名的自动变更。
3、配置ansible发布范围为lab组下的9台服务器
4、对lab服务器区域自动发布ntp服务及配置
ansible-playbook ntp.yml --limit lab
一共9台服务器,每台服务器执行了8项操作,没有产生任何失败。
5、验证lab组9台服务器的执行效果如何
ansible lab -m command -a 'ntpstat'
可以发现9台服务器均已经完成了时间同步,通过ntpstat命令发现每台服务器的ntp服务均已经成功同步。
五、关于ntp的ipv6扩展
随着国家推广ipv6步伐加快,很多服务器都正在做迁移ipv6的准备,迁移后ntp服务器的地址也要做变更,尤其是只有ipv6单栈的服务器。
下面提供笔者验证通过的一些国内与国际的ipv6时间服务器地址:
清华大学 :ntp.tuna.tsinghua.edu.cn
美国内华达: ntp6a.rollernet.us
亚洲授时:2.asia.pool.ntp.org
中国授时: 2.cn.pool.ntp.org