虚拟机的IP经常变化,日期不同步

975 阅读4分钟

背景

以前装了虚拟机后,一开始设置的是动态IP, dhcp 的,好长时间没用了;

最近重新开始使用虚拟机了,一开始IP是 192.168.169.128 ,然后就三天两头的变化,每次变化都增加1,这过了大概一星期,IP已经变到了 192.168.169.131 ,就想着看怎么把这个IP固定下来。

环境

[root@hadoop1 local]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

[root@hadoop1 local]# uname -a
Linux hadoop1 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

虚拟机的IP经常变化,怎么办?

动态IP

刚安装好虚拟机,CentOS7操作系统,通过 ip a 或者 ifconfig 未查看到IP地址;

# 配置动态IP
[root@hadoop1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
bootproto=dhcp
onboot=yes

# 重启
[root@hadoop1 ~]# reboot

2021-09-18-IPDHCP.jpg

这是一开始配置的动态IP,然后就出现了在几天时间内,IP地址莫名其妙地发生变化,接着便想办法把IP固定下来。

静态IP

# 配置静态IP
[root@hadoop1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
IPADDR=192.168.169.130

# 重启
[root@hadoop1 ~]# reboot

2021-09-18-IPStatic.jpg

Note:根据操作系统版本的不同,在 /etc/sysconfig/network-scripts/ 目录下不一定有 ifcfg-ens33 这个文件,但应该有一个类似文件名的配置文件。

验证:通过 ip a 或者 ifconfig 可以看到配置的IP地址,并且之后IP地址固定不变。

2021-09-18-IPa-ifconfig.png

域名ping不通了

  • 问题

采用上述方式配置了静态IP后,发现NTP服务无法正常同步,接着ping了下百度。

[root@hadoop1 ~]# ntpdate ntp1.aliyun.com
Error resolving ntp1.aliyun.com: Name or service not known (-2)
23 Jul 12:38:40 ntpdate[118769]: Can't find host ntp1.aliyun.com: Name or service not known (-2)
23 Jul 12:38:40 ntpdate[118769]: no servers can be used, exiting

[root@hadoop1 ~]# ping www.baidu.com
ping: www.baidu.com: 未知的名称或服务
  • 解决方法
# 配置静态IP
[root@hadoop1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=192.168.169.2
GATEWAY=192.168.169.2

# 重启网络:
[root@hadoop1 ~]# service network restart
Restarting network (via systemctl):                        [  OK  ]

Note:GATEWAY与DNS1必须都配置了,否则还会报错:

# 不配GATEWAY
[root@hadoop1 ~]# ping www.baidu.com
connect: 网络不可达

# 不配DNS1
[root@hadoop1 ~]# ping www.baidu.com
ping: www.baidu.com: 未知的名称或服务

总结

最终的配置如下,以下配置解决了我的虚拟机IP三天两头变化的问题;

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=6663e0ef-a2c8-48c7-b982-0569ba0bad8f
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.169.130
DNS1=192.168.169.2
GATEWAY=192.168.169.2

2021-09-18-FinalConifg.jpg

虚拟机的日期时间与实际不一致,怎么办?

  1. 使用虚拟机时,经常遇到电脑休眠后,虚拟机也休眠,导致虚拟机启动后的时间不同步,这时可通过NTP服务进行时间同步;

  2. 虚拟机执行 date 命令发现日期不正确,与当前时间差了12小时,格式是 EDT 。使用 NTP (Network Time Protocol)同步后,依然不正确。此时就需要进行如下设置了。

# 实际时间 2021年7月26日12:50:38
[root@hadoop2 ~]# date
2021年 07月 26日 星期一 00:50:47 EDT

# NTP时钟同步
[root@hadoop2 ~]# ntpdate ntp1.aliyun.com
26 Jul 00:51:16 ntpdate[67431]: step time server 120.25.115.20 offset -2.724103 sec

# NTP时钟同步后,依然不正确
[root@hadoop2 ~]# date
2021年 07月 26日 星期一 00:51:20 EDT

方法一

修改时区: timedatectl set-timezone Asia/Shanghai

# 原来,时区设置指向了美国纽约
[root@hadoop2 ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 38 7月  30 2020 /etc/localtime -> ../usr/share/zoneinfo/America/New_York

# 修改时区
[root@hadoop2 ~]# timedatectl set-timezone Asia/Shanghai

[root@hadoop2 ~]# date
2021年 07月 26日 星期一 12:56:13 CST

# 查看新的软链接
[root@hadoop2 ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 7月  26 12:56 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai

方法二

创建软链接: ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 备份
[root@hadoop2 ~]# mv /etc/localtime /etc/localtime.bak

# 创建软链接
[root@hadoop2 ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

方法三

直接覆写: cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 备份
[root@hadoop2 ~]# mv /etc/localtime /etc/localtime.bak

# 使用新时区覆盖
[root@hadoop2 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

Note:NTP时钟同步可实现服务器时间校准:

  • yum install ntpdate
  • ntpdate ntp1.aliyun.com 或者 ntpdate cn.pool.ntp.org 或者ntp[1-7].aliyun.com

If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

本文已参与「新人创作礼」活动,一起开启掘金创作之路。