用虚拟机模拟远程服务器-固定 IP 地址

上一篇文章中我们通过 VMware Player 和 Ubuntu Server 完成了服务器的安装,但距离远程服务器搭建完成还有一段路程要走。在这篇文章中我们将开始进行服务器的网络配置,为服务器通过网络给用户提供服务打下基础!

网络结构

在开始配置网络前,我们先分析一下 VMware Player 提供的默认 NAT 网络的结构

NAT.png

  • 虚拟机:我们创建的服务器
  • DHCP 服务器:为虚拟网络内的计算机动态提供 IP 地址等连接网络所需信息
  • NAT 设备:当位于虚拟网络内部的虚拟机需要访问外部网络时,会将请求发送给 NAT 设备;NAT 设备收到请求后,会将请求中虚拟机的 IP 地址转换为宿主机的 IP 地址;由于宿主机的 IP 地址于外部网络可见,从而实现虚拟网络内部虚拟机对外部网络的访问

从默认 NAT 网络的结构可以知道,我们的服务器在虚拟网络中的通信是基于 DHCP 服务器分配的动态 IP,访问外部网络则是将请求发送给 NAT 设备。

但服务器提供服务的前提是用户能在一个固定的地方找到服务器,显然动态变化的 IP 地址是不能满足要求的。所以我们需要将服务器在虚拟网络中的 IP 地址固定,实现客户对服务器的稳定访问。

固定 IP 地址

Ubuntu Server 的网络配置文件位于 /etc/netplan 下,以 .yaml 为后缀,常用网络配置模板可以在 netplan 找到

1
2
3
4
5
6
7
8
9
10
11
12
YAML复制代码network:
version: 2
renderer: networkd
ethernets:
<网卡名称>:
addresses:
- <静态 IP>
nameservers:
addresses: [<DNS 服务器 IP>]
routes:
- to: 0.0.0.0/0
via: <路由器 IP>

但有些麻烦的是,VMware Player 没有开放对虚拟网络进行自定义的功能(该功能在付费的 VMware Workstation Pro 上开放),所以我们需要查询默认 NAT 虚拟网络中使用的相关网络信息,并依据这些信息填充配置文件。

  1. 查询服务器网卡名称和当前 IP 地址:ip address

IP.png

* 网卡名称:`ens32`
* 服务器 IP 地址:`192.168.70.128/24`(因为虚拟网络的规模很小,我们只配置 IPv4)
  1. 查询 NAT 设备信息:ip router

route.png

* NAT 设备 IP 地址:`192.168.70.2`
  1. 填写网卡配置文件:sudo vim /etc/netplan/*.yaml(这里我使用的是 vim,大家也可以使用 nano 等其它编辑器)
1
2
3
4
5
6
7
8
9
10
11
12
13
YAML复制代码network:
version: 2
renderer: networkd
ethernets:
ens32:
addresses:
- 192.168.70.128/24
nameservers:
# 阿里公共 DNS
addresses: [223.5.5.5, 223.6.6.6]
routes:
- to: 0.0.0.0/0
via: 192.168.70.2

修改配置.png
注意该配置文件对缩进的要求非常高,大家在填写的时候一定要仔细
4. 测试网络配置文件中是否存在错误: sudo netplan try(若不存在错误则会提示是否应用配置文件)

尝试配置.png
5. 查看配置是否生效(因为大部分网络信息都是保持原状,我们通过查看 DNS 信息来判断):systemd-resolve --status

DNS.png
6. 为了保险起见,我将服务器重启后再测试网络情况

* IP 地址:


![重启IP.png](https://gitee.com/songjianzaina/juejin_p7/raw/master/img/85b214394238ce94688ad8d8b4b0f5e0f69a24091367bb23aa74ab21a8c1e7d2)
* DNS 服务器:


![重启DNS.png](https://gitee.com/songjianzaina/juejin_p7/raw/master/img/cbbb9817cebbeae06c2c09bc097c3f6ef19963ccc50a9d4dd8d85b25710dba0b)
* 访问外部网络:


![外部网络.png](https://gitee.com/songjianzaina/juejin_p7/raw/master/img/413373170fb39f5cdd393b1918bf6bcf85f4193797c9d911e6aaa309c339fcbe)
* 主机访问:


![宿主机访问.png](https://gitee.com/songjianzaina/juejin_p7/raw/master/img/e072bd76fccafb9fa35ba0d9253821b526d01ac21d466aee76493fb49721f24a)

总结

在本篇文章中,我们从分析网络结构开始,一步步地成功将服务器在虚拟网络中的 IP 地址固定!现在位于虚拟网络中的任何用户都可以通过 192.168.70.128 这个 IP 地址对我们的服务器进行访问。但在服务器为用户提供服务之前,我们先得配置好我们开发者需要的服务。

在下一篇文章中,我们将通过 SSH 实现本地机器对服务器的远程登录访问,就像实际开发中访问服务器一样!

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%