问题描述
由于之前的一个Linux系统的开发环境使用了DCHP动态分配IP,后来又新增了一个虚拟机也是动态获取IP,当原来的开发环境关机后,打开虚拟机时,虚拟机占用了原来开发环境的IP地址,但由于开发环境远程登录的ssh认证都配置好了不想换IP又配置一遍,所以想将原来的ip地址重新指定给开发环境。
经过多方资料查询和试验,终于成功解决了我的问题。
DHCP如何分配IP地址的?
DHCP服务器优先分配尚未出租的最小的IP地址,以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息,而是直接发送包含前一次所分配的ip地址的DHCP请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。
如果此IP地址无法再分配给原来的客户机时,则DHCP给客户机回答一个nack的否认信息。DHCP客户机收到nack否认信息后,它就必须重新发送DHCP Discover信息来请求新的IP地址。
DHCP服务器向客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址,如果客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,客户机都会自动向DHCP服务器发送更新其ip租约的信息。
解决过程
- 启动虚拟机,在虚拟机中释放占用的IP地址,命令如下。
dhclient -r #释放现有的IP地址
- 启动原来的开发环境,确认已经获取了原来的IP地址
- 启动虚拟机,在虚拟机中释放现有ip
- 在虚拟机中,重新获取IP地址,命令如下:
dhclient #获取新ip
此时,虚拟会获取到一个新的IP地址,以后只要设计租约续期,就不会占用之前的开发环境的IP地址了。
评论区