关于虚拟机的VMware和Ubuntu18之间的网络问题

关于虚拟机的VMware和Ubuntu18之间的网络问题_第1张图片

在这里我记录一下最近遇到的问题,因为最近在虚拟机上配置了zookeeper集群,并且使用的网络是桥接网络。由于我的宿主机是通过手机热点连接的,这可能在桥接模式下导致了我的ip分配的网段发生改变,经过一番百度之后,决定改用nat模式网络。

这是他们之间的区别,简单来说,我想要虚拟机的ip恢复到之前的,而不用我再去修改zookeeper的一堆配置,也不用我去考虑宿主机和虚拟机不在相同的网段下。

一、桥接模式(Bridged)

  • IP 地址:虚拟机直接连接到物理网络,IP 地址由物理网络的 DHCP 服务器分配(或手动配置)。
  • 网段:必须与宿主机相同,因为它们都在同一个物理网络中。
  • 网关:使用物理网络的默认网关(通常是路由器的 IP 地址)。
  • 示例(假设宿主机连接的是 192.168.1.0/24 网段的局域网):
    • 宿主机 IP:192.168.1.100
    • 虚拟机 IP:192.168.1.101(同一网段)
    • 网关:192.168.1.1(通常是路由器)

二、NAT 模式

(Network Address Translation)

  • IP 地址:虚拟机位于 VMware 提供的私有网络,IP 由 VMware 内部的 DHCP 服务器分配(通常是 192.168.xxx.xxx 或 10.xxx.xxx.xxx)。
  • 网段:可以与宿主机不同,通常 VMware 会创建一个独立的 NAT 网络(如 192.168.123.0/24),而宿主机仍然在物理网络中(如 192.168.1.0/24)。
  • 网关:虚拟机的网关是 VMware 提供的 NAT 网关(通常是 192.168.123.1),由 VMware 负责将 NAT 网络的数据转发到宿主机的物理网络。
  • 示例(假设宿主机连接的是 192.168.1.0/24 网段的局域网):
    • 宿主机 IP:192.168.1.100
    • 虚拟机 IP:192.168.123.10(不同网段)
    • 虚拟机网关:192.168.123.1(由 VMware NAT 提供)

三、总结

网络模式 IP 网段 网关 是否能直接访问宿主机 是否能直接访问局域网
桥接模式 与宿主机相同 物理网关(如 192.168.1.1) ✅ 可以 ✅ 可以
NAT 模式 与宿主机不同 VMware 提供的 NAT 网关(如 192.168.123.1) ✅ 可以 ❌ 不能(除非端口映射)

 四、修正 00-installer-config.yaml

 sudo vim /etc/netplan/00-installer-config.yaml

 改为这样的配置:

network:
  version: 2
  ethernets:
    ens32:
      dhcp4: no  # 禁用 DHCP,防止系统自动获取 IP
      addresses:
        - 192.168.108.107/24  # 你的固定 IP
      gateway4: 192.168.108.107  # 你的默认网关
      nameservers:
        addresses:
          - 8.8.8.8  # Google DNS
          - 8.8.4.4  # 备用 DNS

 这个命令让他生效:

 sudo netplan apply

 然后检查 IP 是否正确:

ip addr show ens32 

当然我在这里遇到的问题是配置没有生效,经过查询之后可能出现的问题是有其他配置文件优先级高于他

 五、检查 /etc/netplan/ 目录下的文件

ls /etc/netplan/

看看是否有多个 yaml 文件,比如:

00-installer-config.yaml 01-netcfg.yaml

我的 netplan 目录里有 两个 YAML 配置文件

  1. 00-installer-config.yaml → 手动写的静态 IP 配置 ✅
  2. 01-network-manager-all.yaml → 让 NetworkManager 管理所有网络 ❌

问题在于:

  • 01-network-manager-all.yaml 里有 renderer: NetworkManager,它会 让 NetworkManager 接管整个网络
  • 这会导致 00-installer-config.yaml 里的 netplan 配置 被忽略,所以 netplan apply 没有效果。

如果有多个配置文件,可能它们存在冲突。你可以先备份 01-netcfg.yaml,然后删除它:

sudo mv /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak

然后再试:

sudo netplan apply

 这个时候发现就能生效了,就恢复到之前的ip啦。

六、下面附上一些网络上常用的命令:

请求一个IPv4的地址(我解决问题经常会用到的  做一下记录):

sudo dhclient ens32

 查看ip地址

ip a

#或者

ifconfig

#或者

ip addr

 临时添加或者删除ip地址

sudo ip addr add xxx.xxx.xxx.xx dev ens32

sudo ip addr del xxx.xxx.xxx.xx dev ens32

 查看route,删除,添加

sudo ip route show

sudo ip route del default

sudo ip route add default via xxx.xxx.xxx.xx dev ens32

 查看路由/网关

ip route

 启用网络接口ens32

sudo ip link set ens32 up

 重启网络管理

systemctl restart NetworkManager

查看能否联网

 ping -c 4 8.8.8.8

 查看能否解析域名

ping -c 4 baidu.com

你可能感兴趣的:(ubuntu,linux,运维,网络)