在Dian团队的第一个Task~
前期准备
安装 VMware
下载地址:https://www.nocmd.com/740.html
安装无脑下一步即可
安装 Ubuntu
镜像下载地址:https://cn.ubuntu.com/download
最新版的 VMware 支持 Ubuntu 的简易安装,所以在配置时直接填好主机名用户名密码就可以愉快的食用 Ubuntu 了
配置局域网
在虚拟网络编辑器中配置网关以及网段
在 VMware 主页面 编辑–》虚拟网络编辑器
单击箭头所指按钮,给编辑器提升权限以更改设置
我们使用 NAT 模式,所以选择 VMnet8。(记住这个名称,稍后还会用到)
不勾选【使用本地 DHCP】服务这个复选框,因为我们要求固定 IP,DHCP 是动态分配 IP 的。
首先,我们将子网 IP 设置成我们需要的 IP 地址所在的网段,即 192.168.188.0,如图所示:
点击 NAT 设置。
我们将网关 IP 设置成我们需要的 IP 地址 192.168.188.2,如图所示:
然后再选择 Host-only 模式的网卡 VMnet1
同理,不勾选【使用本地 DHCP】服务这个复选框。
首先,我们将子网 IP 设置成我们需要的 IP 地址所在的网段,即 192.168.188.0,如图所示:
在控制面板中配置虚拟网卡 IP
在 VMware 中更改了虚拟网络之后,我们还需要去宿主机的网络控制面板中更改网络适配器,才能让我们的虚拟主机能够正常的上网
在控制面版中找到 VMware Network Adapter VMnet8,也就是我们之前记住的使用 NAT 模式的那张网卡
双击图标后,在弹出的窗口中单击属性–>双击 Internet 协议版本 4
将弹出的窗口设置成如图所示的亚子:
到此,配置局域网的工作暂告一段落
打开三台虚拟机,进行最后的指向操作
对于充当路由器和 DNS 服务器的虚拟机 VM1
首先打开 VM1 的 IP 转发功能:
1 | nano /etc/sysctl.conf |
把 net.ipv4.ip_forward = 0 改成 1,或者是将注释符删去,如图所示:

使用sysctl -p
命令使改动生效。
然后再将用于与 VM2 和 VM3 通信的网卡手动分配下 IP
注意,此时一定要分清哪张网卡是工作在 NAT 模式下,用于与宿主机通信的;哪张是工作在 Host-Only 模式下,用于与两个虚拟机通信的。
所以在开始更改网卡配置之前,需要先执行ifconfig
确定网卡的具体信息
从 ubuntu 从 17.10 开始,已经不再在/etc/network/interfaces 里配置 IP,即使配置了也不会生效,而是改成 netplan 方式 ,配置写在/etc/netplan/文件夹里或者类似名称的 yaml 文件里。因此,我们应先查看/etc/netplan 文件夹下的文件,来判断我们需要修改的是什么文件
1 | cd /etc/netplan |
从而确定下一步的命令为:sudo nano 01-network-manager-all.yaml
经过我的甄别,确定网卡 ens38 是那张工作在 Host-Only 模式下的网卡、ens33 是那张工作在 NAT 模式下的网卡,于是乎按照任务要求,如图所示编辑两张网卡的配置:
之后运行命令netplan apply
来应用这一设置
到这里,对 VM1 的操作就告一段落
对于 VM2 和 VM3
照葫芦画瓢,首先执行ifconfig
确定网卡的具体信息,再更改 netplan 的配置信息。
具体操作过程与 VM1 大差不差,就直接放按着任务要求配置好的 netplan 了。
然后就可以实现 VM1,VM2,VM3 三台机器的互 ping
对 VM2 与 VM3 进行 NAT 转换
但是,经过上述的操作,VM2 与 VM3 却不能 ping 通 VM1 的网关和公网。有句话说得好,不能连公网的主机和咸鱼没啥区别。因此,我们需要用 iptables 实现 NAT 转换,使得 B 和 C 能够访问(ping)A 的网关和公网。
具体的 NAT 操作过程示例,可以参照这篇 blog 中 SNAT 部分,再根据具体的环境配置 iptables 的参数:https://www.zsythink.net/archives/1764
在此次任务中,命令为:
1 | sudo iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -j SNAT --to-source 192.168.188.128 |
执行之后就可以在 VM2 与 VM3 两台“内网”机器中愉快的连上公网了~
遇到的问题
- 1.netplan apply 时遇到格式错误
错误原因:YAML 文件对格式的要求非常严格。在冒号后少打一个空格都会导致文件读取错误。
解决方法:重新检查一遍 YAML 文件格式是否正确,有没有少打空格。并在之后多多注意格式问题
- 2.在执行命令中多次出现 Permission Denied
错误原因:因为这次任务中涉及到对网络配置等系统关键文件进行修改的操作,所以需要 su 权限才能进行命令的执行。
解决方法:在之后的命令行输入时,涉及到对系统文件、系统环境的修改时要记得加上 sudo。
不能因为 sudo 麻烦而直接使用 root 用户登录。不然没准哪天你就会不小心删库跑路
Task Over
然而还差 12h 工时……绝了