一、引言
作为 Linux 初学者的我,是使用 VMWare 虚拟机工具安装的 Ubuntu 18.04 系统。其中,为了实现 Ubuntu 系统联网,是通过 VMWare 的 NAT 模式上网的,也就是主机与虚拟机系统通过 VMWare 的 VMnet8 虚拟网卡通讯,利用主机网卡上网,从而达到了虚拟机系统的联网功能。
与 VMWare 的 NAT 模式上网详细信息,可以参看这篇博客 Vmware虚拟机三种网络模式详解。
当我们经常使用 VMWare NAT 模式下虚拟的 Ubuntu 系统的时候,就会发现一个很奇怪的事实,那就是:
虚拟机 Ubuntu 的 IP 地址会在一段时间后变化。经常能够看到的是,一般在上次的 IP 地址的基础上加一个 1。
这样的 “IP 地址飘移” 现象,对于我们使用类似 XShell 等等远程终端软件来说是一个灾难:
因为我们总是需要跟着虚拟机 Ubuntu 系统的 IP 地址而修改远程终端软件的 IP 地址配置信息。
尽管这种修改是一件非常方便的事情,最多也就是打开虚拟机下的 Ubuntu 系统,输入一个 ip address
指令,查看下使用的网卡的新的 IP 地址,然后适配修改到远程终端软件上的 IP 地址配置即可。
但是!
有没有一种一劳永逸的方法,能够让 NAT 模式联网的 Ubuntu 虚拟机系统的 IP 地址不再进行变化呢?
这也就是本篇博客所探讨的主题。
ps: 本篇博客参考了许多博客内容,但是却没有任何一篇博客是完全能够指导解决该问题的(或多或少有些碰壁的地方),因为我决定写下这篇博客,将自己解决这个问题的方法记录下来,以飨遇到同样问题的读者。
参考博客如下:
VMWare虚拟机下为Ubuntu 配置静态IP(NAT方式)ping通主机
虚拟机中Ubuntu IP地址漂移问题解决(为Ubuntu配置固定IP地址)
为VMware虚拟机内安装的Ubuntu 16.04设置静态IP地址
二、明确修改内容
简单来说,我们只需要给虚拟机中的 Ubuntu 系统设置一个静态的 IP 地址就可以了。
既然要设置网络信息,那么我们就一定要知道,我们需要修改的网络信息有哪些。
1. 列表
这里我直接列出我最后往 /etc/network/interfaces
中添加的网络配置信息
auto ens33
iface ens33 inet static
address 192.168.138.200
netmask 255.255.255.0
gateway 192.168.138.2
dns-nameservers 192.168.138.2
也就是说,我们需要明确如下信息:
项目 | 含义 | 上述示例 |
---|---|---|
网卡 | 想要修改的网卡 | ens33 |
IP 地址 | 想要配置的静态 IP 地址 | 192。168.138.200 |
子网掩码 | VMNet8 虚拟网卡的子网掩码 | 255.255.255.0 |
默认网关 | VMNet8 虚拟网卡的默认网关 | 192.168.138.2 |
DNS 服务器地址 | VMNet8 虚拟网卡的默认网关 | 192.168.138.2 |
2. 网卡
我们可以使用 ip address
指令查看 Ubuntu 所使用的网卡信息。这里我使用的是 ens33 网卡,因此这里要修改的自然就是 ens33 网卡。
3. IP 地址
VMWare NAT 模式下映射虚拟机的虚拟 IP 地址是在一个限定范围的约束下的,我们只需要指定一个位于这个范围内的 IP 地址即可。那么这个限定范围在哪里看呢?
我们打开 VMWare,通过编辑->虚拟网络编辑器,点开虚拟网络编辑器的界面:
然后点击 DHCP 设置,进入 DHCP 设置界面
这里的起始 IP 地址和结束 IP 地址就是这个限定范围,这里我选择了 192.168.138.200 作为指定的静态 IP 地址。
4. 子网掩码和默认网关
想要查看 VMNet8 虚拟网卡的信息,可以直接在宿主 Windows 系统中打开 cmd.exe,然后输入 ifconfig 查看 VMnet8 虚拟网卡的信息即可:
至此,我们已经可以填写出一开始列出的信息了,将其填充为自己适配的即可。
三、修改并适用
我们已经编写好了修改的网卡信息,现在就是将其写入到配置文件并且让其生效了。
1. 修改
$ sudo vi /etc/network/interfaces
加入我们第二步中编辑的内容并且保存。
2. 适用
我们需要重启 Ubuntu 的网卡
$ sudo /etc/init.d/networking restart
如果这种方式报错,首先检查是否输入内容拼写有误,如果没有,则还可以使用
$ sudo ifconfig ens33 down
$ sudo ifconfig ens33 up
如果还有问题,建议重启一下 Ubuntu 虚拟机系统,然后再行尝试下上述两个命令(我就是这么尝试出来的 T_T)。
3. 回滚
如果配置完之后,发现不能上网,并且重启系统后也是不能上网,那么我们还可以回滚回去。简单来说就是删去 /etc/network/interfaces
中我们添加的内容,然后重启 Ubuntu 网卡,然后再重启下系统就可以了。
四、总结
总的来说,解决 VMWare NAT 模式下联网的 Ubuntu 系统 IP 地址飘移问题的关键,就在于给它指定一个静态的 IP 地址,难点在于编写好其配置的信息。
如果过程中遇到网卡不能重启的问题,首先检查是否配置文件拼写错误,然后再尝试下不同的网卡重启命令,如果还不行,建议重启下系统再行尝试(我就是这么解决的 T_T 虽然有点莫名其妙),实在还不行,至少我们还可以回滚。
希望能够给遇到同样问题的朋友们一些帮助
To be Stronger:)