Fedora VM 在主机挂起时失去网络连接? GNOME 登录后重新连接?

Fedora VM 在主机挂起时失去网络连接? GNOME 登录后重新连接?

我有一个 Fedora 26 虚拟机。当我登录 GNOME 时,它显示网络连接。 GNOME 将设备的网络配置文件显示为“自动连接”和“与所有用户共享”(在“身份”部分)。我可以通过 SSH 连接到虚拟机...但有时我发现无法通过 SSH 连接。直到我首先登录 gdm (GNOME)。

如果我重新启动虚拟机,就不会发生这种情况。所以我认为当我在虚拟机仍在运行(但未登录?)的情况下暂停主机时就会发生这种情况。

当我登录 GNOME 时,虚拟机中发生了什么导致它重新连接?连接丢失是可以在软件中修复的错误吗?

systemctl status显示 NetworkManager 和 network.service 均处于操作系统提供的默认状态:

● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; generated; vendor preset: disabled)

● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2017-09-17 17:43:48 BST; 1 day 15h ago

登录后的 nmcli:

$ nmcli con
NAME                UUID                                  TYPE            DEVICE 
Wired connection 1  937653fb-890f-3b19-97b8-b98c8eafcdc5  802-3-ethernet  ens3   
virbr0              6e568806-d720-42ed-a555-0a1c50f1a36c  bridge          virbr0 
ens3                afba101e-6470-3699-b87b-932ab4efe634  802-3-ethernet  --

我只能找到未使用的连接“ens3”的配置文件,该连接适用于具有不同 MAC 地址的先前设备。该VM是Fedora 25 VM的升级克隆;据推测,克隆时 MAC 地址已更改。

$ cd /etc/NetworkManager/system-connections/ && ls
$ cd /etc/sysconfig/network-scripts/ && ls ifcfg-*
ifcfg-ens3
ifcfg-lo
$ cat ifcfg-ens3
HWADDR=52:54:00:A7:3B:22
TYPE=Ethernet
BOOTPROTO=dhcp
...
NAME=ens3
UUID=afba101e-6470-3699-b87b-932ab4efe634
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
$ ip link show dev ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:59:9b:47 brd ff:ff:ff:ff:ff:ff

答案1

系统日志显示不是登录GNOME就能修复问题,而是只是等待2分钟:)。

$ journalctl -b -u NetworkManager
...
Sep 18 23:04:35 fedora26-vm dhclient[15040]: bound to 192.168.122.157 -- renewal in 1450 seconds.
Sep 19 08:45:51 fedora26-vm NetworkManager[656]: <info>  [1505807151.7261] dhcp4 (ens3): state changed bound -> expire
Sep 19 08:45:51 fedora26-vm NetworkManager[656]: <info>  [1505807151.7698] dhcp4 (ens3): canceled DHCP transaction, DHCP client pid 15040
Sep 19 08:45:51 fedora26-vm NetworkManager[656]: <info>  [1505807151.7699] dhcp4 (ens3): state changed expire -> done
Sep 19 08:45:51 fedora26-vm NetworkManager[656]: <info>  [1505807151.7701] device (ens3): scheduling DHCPv4 restart in 120 seconds, 3 tries left (reason: lease expired)
Sep 19 08:47:51 fedora26-vm NetworkManager[656]: <info>  [1505807271.7908] dhcp4 (ens3): activation: beginning transaction (timeout in 45 seconds)
Sep 19 08:47:51 fedora26-vm NetworkManager[656]: <info>  [1505807271.7972] dhcp4 (ens3): dhclient started with pid 15271
Sep 19 08:47:51 fedora26-vm dhclient[15271]: DHCPDISCOVER on ens3 to 255.255.255.255 port 67 interval 5 (xid=0x37e5e131)
Sep 19 08:47:51 fedora26-vm dhclient[15271]: DHCPREQUEST on ens3 to 255.255.255.255 port 67 (xid=0x37e5e131)
Sep 19 08:47:51 fedora26-vm dhclient[15271]: DHCPOFFER from 192.168.122.1
Sep 19 08:47:51 fedora26-vm dhclient[15271]: DHCPACK from 192.168.122.1 (xid=0x37e5e131)
...

(08:45:51 正是主机日志显示系统从挂起状态唤醒的时间)。

DHCP 租约被正确识别为过期。但系统似乎没有注意到它事先没有尝试更新租约;它假设它刚刚尝试过但失败了,因此它在再次重新启动之前设置超时。对我来说看起来像一个错误。

相关内容