当前环境:
Windows 10 可上网主机(IP 10.188.201.36), virtualBox + debian 虚拟机& 桥接模式可上网(IP 10.188.201.8)。
目标:
配置Windows为NTP服务器,配置虚拟机为客户端。 虚拟机时间定时同步到硬件。
步骤:
一.配置windows机为NTP服务器
1. 在Windows 服务器下,按住“ windows+r ”打开“运行”对话框,输入regedit,点击“确定”打开注册表。
2、在注册表中依次展开:HKEY_LOCAL_MACHINE、SYSTEM、CurrentControlSet、Services、W32Time、TimeProviders、NtpServer,
在NtpServer项的右侧键值ENablied,将默认的0改为1,1为启用NTP服务器。
3、再在注册表中依次展开:HKEY_LOCAL_MACHINE、SYSTEM、CurrentControlSet、Services、W32Time、Config
找到Config项右侧的AnnounceFlags。
把默认的10改为5,5的意思就是自身为可靠的时间源。
4、修改完以上之后关闭注册表编辑器,以管理员身份打开命令行。
5、在命令提示符中输入:net stop w32Time,回车
等待NTP服务停止。
然后再输入:net start w32Time,回车
启动NTP服务。
二,配置虚拟机为NTP客户端
1.确认是否安装NTP包(有点复杂哈)。
因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了。总结起来就是这样几类:
1、rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep “软件或者包的名字”。
[root@hexuweb102 ~] rpm -qa | grep ruby
2、以deb包安装的,可以用dpkg -l能看到。如果是查找指定软件包,用dpkg -l | grep “软件或者包的名字”;
[root@hexuweb102~]dpkg-l|grepruby
3、yum方法安装的,可以用yum list installed查找,如果是查找指定包,命令后加 | grep “软件名或者包名”;
[root@hexuweb102 ~] yum list installed | grep ruby
4、如果是以源码包自己编译安装的,例如.tar.gz或者tar.bz2形式的,这个只能看可执行文件是否存在了,
上面两种方法都看不到这种源码形式安装的包。如果是以root用户安装的,可执行程序通常都在/sbin:/usr/bin目录下。
说明:其中rpm yum 是Redhat系linux的软件包管理命令,dpkg是debian系列的软件包管理命令
我直接在最外层,which ntpd, 如果能找到,说明安装了,否则没有安装。
命令行进入最外层目录 # cd /
查找ntpd是否存在 # which ntpd
2.如果没有安装,进行装包
sudo apt-get install ntpdate
或者直接下载NTP源码,进行离线安装。
解压 # tar -zxvf ntp.4.3.2.1.tar.gz
进入解压后的文件夹,进行编译准备 # ./configure
编译 # make
安装 # make install
临时文件清除 # make clean
3. 修改ntp.conf 配置文件
查找文件位置
编辑打开,追加服务器IP地址。
3.同步ntp
ntpdate -u 10.188.201.8
4. 发现客户端时区不对,对客户端时区进行配置。
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 设置时区为上海
如果重启系统后,时区又恢复到原来的设定项,需要进行时区选择:
执行tzselect命令 --> 选择Asia --> 选择China --> 选择Beijing — 选择yes ,
执行完tzselect命令选择时区后,时区并没有更改,将export TZ=Asia/Shanghai 添加到/etc/profile文 件中去,然后退出并重新登陆即可。
sed -i '$a\export TZ=Asia/Shanghai' /etc/profile && source /etc/profile && date
5. 同步系统时间到硬件。
手动执行命令 # hwclock -w ,通过# date 查看系统时间,# hwclock 查看硬件时间,确认同步。
如果想定期将系统时间同步到硬件时间,可以加入定期任务。
编辑打开 # crontab -e
追加定时执行命令 # */1 * * * * /sbin/hwclock -w //每一分钟,执行系统时间同步到硬件的命令一次。
为了 确认定时任务是够被执行,追加log命令 # */1 * * * * echo 1 >>/root/crontest.log //每一分钟,输出1到crontest.log