VM Ware Ubuntu 20.04 在移至新主机时丢失了 eth0

VM Ware Ubuntu 20.04 在移至新主机时丢失了 eth0

我最近不得不更换我的电脑,因此将我的客户机 Ubuntu 20.04 的驱动器文件复制到了新机上。我安装了 VM Ware Workstation Pro 16 并启动了 Ubuntu 系统。启动时,我不再有网络接口,eth0并且某些应用程序无法连接。默认的 Firefox 浏览器可以访问互联网,但某些应用程序无法连接到我的本地网络。

ifconfig -s显示如下:

Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0   1500        0      0      0 0             0      0      0      0 BMU
ens33     1500     6828      0      0 0          3357      0      0      0 BMRU
lo       65536      961      0      0 0           961      0      0      0 LRU
veth013d  1500      303      0      0 0           316      0      0      0 BMRU
veth0f0d  1500     2777      0      0 0           408      0      0      0 BMRU
veth78e2  1500    29689      0      0 0         33318      0      0      0 BMRU
vethbfaf  1500    39039      0      0 0         29841      0      0      0 BMRU

我曾尝试搜索命令重新启用eth0重命名ens33etho0甚至重新安装内核模块和网络管理器/etc/network/interfaces不存在(我后来发现这是因为它从 18.04 中删除),这些链接中列出的大多数命令在我的计算机上都不存在。我已更新操作系统,sudo apt-get update && sudo apt-get upgrade似乎成功了。

因为/etc/network/interfaces/不存在所以我不能添加auto eth0

我已经查看过,etc/netplan/01-network-manager-all.yaml但它只是说:

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

我该怎么做才能eth0恢复?

答案1

将 Ubuntu 20.04 从 VirtualBox 6.1 移植到 ESXi 6.5 后确实遇到了同样的问题。旧接口“enp0s3”消失了,但新接口“ens33”出现了。

按照 Ubuntu 文档的“IP 寻址”部分配置“ens33”接口: https://ubuntu.com/server/docs/network-configuration

PS 启动日志显示“eth0”已重命名为“ens33”

日志行:“e1000 ens33:从 eth0 重命名”

命令:“dmesg | grep eth0”

如果您只需要重命名接口,请使用以下命令:

ifconfig ens33 down
ip link set ens33 name eth0
ifconfig eth0 up

答案2

您可能需要运行此命令(如果您没有安装 NetworkManager):

systemctl restart systemd-networkd

否则,最好定期运行脚本来检查网络连接并重新启动服务器上的网络。这是我使用的:

#!/bin/bash

# Set target host IP or hostname to check the connectivity with:
TARGET_HOST='google.com'
# Specify your log file:
LOG_FILE='/var/log/netmon.log'

count=$(ping -c 3 $TARGET_HOST | grep from* | wc -l)

if [ $count -eq 0 ]; then
    echo "$(date)" "Target host" $TARGET_HOST "unreachable, Restart network service!" >>$LOG_FILE
    systemctl restart systemd-networkd
    echo "$(date)" "Finished restarting network service" >>$LOG_FILE
else
    echo "$(date) ===-> OK! " >>$LOG_FILE
fi

最后,确保cron使用以下命令添加作业crontab -e(在使用以下命令使脚本文件可执行之后)chmod a+x path_to_your_script

*/10 * * * * /path_to_your_script

相关内容