由于项目需要,需在公司内部私有网内搭建一个NTP服务器。我刚开始跟其他人说的时候,都表示非常easy,这让我很无语啊。只是简单的去让机器同步时间,找一个服务器的IP地址再看看通不通就OK,可是搭一个服务器。让笔者费了不少劲,在这过程中也学习了不少东西。
其实很简单,只需要简单的下面几步就OK。
【搭建一个NTP客户端】比较简单,你只要安装ntpdate的RPM包(一般ISO镜像里面会有的),rpm -ivh ntpdate.*.rpm或者配好yum源直接yum -y install ntpdate就OK。
- 附:从网易镜像下载一个yum源
- wget http://mirrors.163.com/.help/CentOS6-Base-163.repo #下载为CentOS6.*准备的repo文件
- mv CentOS6-Base-163.repo /etc/yum.repos.d/ #移动此文件到/etc/yum.repos.d目录下
- yum makecache
- yum -y install ntpdate
下面要做的是:
- ntpdate 202.120.2.101 #上海的一个授时中心,当然你可以选择中国授时中心210.72.145.44
- ## 笔者在这里有一个问题,使用"ntdate -d 210.72.145.44"命令进行同步时间的时候,发现中国授时中心
- ## 的服务器并没有给予回应。这是笔者使用上海授时中心的原因。
这样你的linux主机就能够去网络上同步本机的时间。
【搭建NTP服务器】
这个说起来也比较简单。yum源配好之后,需要安装NTP的RPM包。
- yum -y install ntp ntpdate #安装NTP服务器端和客户端
- # NTP服务器端是给客户机使用。而公司的服务器从上海授时中心获取时间,这样
- # 同时也是一个客户端,因此也需要NTPDATERPM包
怎么样?简单吧,只是需要一个包,下面要做的只是更改一个文件/etc/ntp.conf
- restrict default kod nomodify notrap nopeer noquery #去掉此句中的notrap nopeer noquery
- restrict -6 default kod nomodify notrap nopeer noquery #如何你的网没有用到IPV6,删除此行
- 修改完成之后,试着执行下列命令:
- ntpdate 202.120.2.101 #手动从服务器同步时间
- watch ntpq -p #查看ntp服务器是否完成了和自身同步的过程
相信细心的读者会发现,这个图有两个IP,而我们的配置文件里只有202.120.2.101这一个IP,这是为什么了?图中的各列的列名称又代表什么意思了?
- * :响应的NTP服务器和最精确的服务器
- + : 响应这个查询请求的NTP服务器
- blank(空格):没有响应的NTP服务器
- remote :响应这个请求的NTP服务器的名称
- refid :NTP服务器使用的更高一级服务器的名称
- st:正在响应请求的NTP服务器的级别
- when:上一次成功请求之后到现在的秒数
- poll:当前的请求的时钟间隔的秒数
- offset:主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)
【开放端口给外网】
在公司内部网络测试通过后,剩下的就是要把NTP开放给外网的客户机。分两种情况:
1.软件防火墙:
iptables -A INPUT -p UDP -i eth0 -s 192.168.0.0/24 --dport 123 -j ACCEPT
2.硬件防火墙:
做一条映射规则,把公司的IP和端口映射为那个内部服务器的IP和对应端口就OK。这些不是问题。最关键的是,协议要写对,这里用到的是UDP协议,不是TCP/IP。当时笔者在这里就被坑了半天时间啊。相当的无语!
【windows客户端与其同步】
windows能与linux的NTP服务器同步么?
答案是yes。windows里面已经有NTP客户端。只要找到并开启就OK。
方法是:
- 开始 菜单
- 运行-->输入 gpedit.msc
- 计算机配置-->管理模板-->系统-->windows时间服务-->时间提供程序
- 右键"启用Windows NTP客户端"-->点击"属性"(win2003)(win7系统弹出的是编辑)
- 选择"已启用",再点击确定就OK
在这里设置完了之后,点击任务栏的“更改时间与日期”,如下图:
OK,工作基本完成。
有疏漏之处,还望大家拍砖指点,谢谢!