Skip to main content

Debian 初体验 3. 网络配置 (VMware Fusion)

前面的文章 VirtualBox 虚拟机双向网络互通 中使用 VirtualBox 虚拟机 和 Ubuntu系统介绍网络配置,改用 VMware Fusion 和 Debian后,配置网络还有遇到了一些不同,在此记录一下。

运行环境

  • M4 Macbook
  • macOS 15.2
  • VMware Fusion 13.6.2
  • Debian 12.8 最基础版的debian-12.8.0-arm64-netinst.iso

这里不介绍桥接模式了,而是使用 NAT + 主机网络双网卡的模式。

NAT 是安装虚拟机时自带的,就是这里的 2: ens160,可以使虚拟机访问 Internet.

下面增加主机网卡,原理与 VirtualBox 类似,操作配置有些不同。

先来区分一下 VMware Fusion 软件的设置 和 某一台虚拟机的设置。

VMware Fusion 的设置

 

虚拟机的设置

VMware Fusion 为虚拟机配置 NAT + Host-Only 双网卡​

打开 VMware Fusion 的设置,切换到网络 Tab 下,

按照图中步骤来操作

  • 1解锁
  • 2新增网卡vmnet2
  • 3查看网卡
  • 4应用修改

操作完成,子网IP处会自动生成IP地址

然后关闭虚拟机,打开虚拟机的设置,点击右上角的添加设备

点击添加设备

选择网络适配器,点击添加

选择 vmnet2

点击左上角的“显示全部”,回到设置首页,可以看到多了一个 “网络适配器2”

启动虚拟机,输入 ip a 查看,多了一个网卡 ens256

Debian 基础系统并没有安装Netplan,这次使用传统的方式来配置网络

查看 /etc/network/interfaces 中有lo 和 ens160 的配置,ens256 是新增的,配置文件里还没有,我们需要为 ens256 增加配置

修改 /etc/network/interfaces 文件,增加下面的内容

auto ens256
iface ens256 inet static
address 192.168.69.100
netmask 255.255.255.0
gateway 192.168.69.1
  • auto ens256 自动启动网卡
  • iface ens256 inet static 配置静态IP地址
  • address 192.168.69.100 指定IP地址,跟VMware Fusion的 IP地址匹配
  • netmask 255.255.255.0 子网掩码
  • gateway 192.168.69.1 网关地址,可以用它访问宿主机

然后重启网络服务 systemctl restart networking ,查看网卡运行情况,ens256 也启动了

可以 ping 一下主机 192.168.69.1 ,从宿主机 ping 一下虚拟机 192.168.69.100 都是通的,就正常了。

然后发生了诡异的事情,之前可以访问互联网,现在访问不了了,本来两块网卡,ens160 用来访问internet, ens256 访问主机。

多网卡路由配置​

通过 ip route 查看路由信息, 因为我们的路由 default 使用的是ens256 网卡,而这个网卡是无法访问internet的,而只能访问主机。

# ip route
default via 192.168.69.1 dev ens256 onlink
192.168.69.0/24 dev ens256 proto kernel scope link src 192.168.69.100
192.168.167.0/24 dev ens160 proto kernel scope link src 192.168.167.141

临时方案可以设置路由,删除ens256路由,指定ens160 为默认路由

ip route del default via 192.168.69.1 dev ens256 onlink

增加默认路由

ip route del default via 192.168.167.1 dev ens160 onlink

这时还不行,为啥呢,ens160 网关竟然不是 192.168.167.1,找到系统申请dhcp动态地址的数据,看到 网关地址是192.168.167.2,重新设置默认路由后就可以了。

root@192:~# cat /var/lib/dhcp/dhclient.ens160.leases

lease {
interface "ens160";
fixed-address 192.168.167.141;
option subnet-mask 255.255.255.0;
option routers 192.168.167.2;
option dhcp-lease-time 1800;
option dhcp-message-type 5;
option domain-name-servers 192.168.167.2;
option dhcp-server-identifier 192.168.167.254;
option broadcast-address 192.168.167.255;
option netbios-name-servers 192.168.167.2;
option domain-name "localdomain";
renew 6 2024/12/28 15:29:20;
rebind 6 2024/12/28 15:43:24;
expire 6 2024/12/28 15:47:09;
}

上面只是临时方案,重启主机后就失效了。通过修改 /etc/network/interfaces 可以是配置永久生效。

方法1. 去掉 ens256 的 gateway 配置​

修改 /etc/network/interfaces ,去掉 ens256 的 gateway 配置

auto ens256
iface ens256 inet static
address 192.168.69.100
netmask 255.255.255.0
# 不配置 gateway

重启 networking 服务 systemctl restart networking ,查看路由配置,default 变为 ens160

root@192:~# ip route
default via 192.168.167.2 dev ens160
192.168.69.0/24 dev ens256 proto kernel scope link src 192.168.69.100
192.168.167.0/24 dev ens160 proto kernel scope link src 192.168.167.141

方法2. 为不同的网卡配置路由优先级​

ens160 metric 为 100, ens256 metric 为 200

auto ens160
iface ens160 inet dhcp
metric 100

auto ens256
iface ens256 inet static
address 192.168.69.100
netmask 255.255.255.0
gateway 192.168.69.1
metric 200

重启 networking 服务 systemctl restart networking,查看路由配置,显示 NAT 网卡 (ens160) 的默认路由优先级较高。

root@192:~# ip route
default via 192.168.167.2 dev ens160 metric 100
default via 192.168.69.1 dev ens256 metric 200 onlink
192.168.69.0/24 dev ens256 proto kernel scope link src 192.168.69.100
192.168.167.0/24 dev ens160 proto kernel scope link src 192.168.167.141

这两种方法都可以实现正常访问 Internet 了。

思考:能不能只用一张网卡就可以实现既能访问 Internet ,又能实现 宿主机与虚拟机直接双向访问呢.

今天查了一下 好像不需要这么复杂的配置,VMware只需要NAT网卡就可以实现宿主机、虚拟机之间的通信。我是之前用VirtualBox,被它影响的,一直以为NAT不能双向通信。

VirtualBox 的 默认 NAT 模式设计非常简单:
•虚拟机能访问外网
•虚拟机 → 宿主机 能访问
•宿主机 → 虚拟机 不能直接访问(除非设置端口转发)。

VMware(包括 Fusion 和 Workstation)的 NAT 是一个完整的局域网:
•虚拟机 → 宿主机:可以
•宿主机 → 虚拟机:可以
•虚拟机 → 外网:可以
•虚拟机之间:可以互通

未完待续。

Peace and Love.