我有一个非 GUI CentOS 7 linux 在我的 (Windows) 台式计算机上的 VirtualBox 中运行。最近,我们的网络设置遇到了一些问题,导致基于 DHCP 的网络失败;几天来,我的 Linux 机器也遇到了麻烦。在我的挣扎中,我稍微搞乱了那个盒子的配置(用 VirtualBox 网络适配器等进行实验)。
现在,“正常”网络又可以工作了,但是在我的 vbox 中,我突然又遇到了麻烦;时间(过去可以正常工作)比 Windows 机器晚了 6 天。通往重要外部资源的路线也被破坏了——例如,我无法再访问 Github。
显然,网络是由 NetworkManager 管理的:
# LANG=C nmcli general
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
# LANG=C nmcli device
DEVICE TYPE STATE CONNECTION
enp0s8 ethernet connected Kabelgebundene Verbindung 1
该ifconfig
命令告诉我实际上已经enp0s8
使用了;但信息不匹配。例如,根据ifconfig enp0s8
,IP4 地址 ( inet
)为192.168.33.199
,而文件IPADDR
中的值ifcfg-*
是不同的过时值。
在我的/etc/sysconfig/network-scripts/
目录中,有一些垃圾;在ifcfg-*
文件中我有一个ifcfg-Kabelgebundene_Verbindung_1
文件(带有NAME="Kabelgebundene Verbindung 1"
,所以这是引用的脚本);但IP地址等已过时,匹配route-Kabelgebundene_Verbindung_1
为空。不过,我有非空route-*
文件。
所以我的想法是使用ifconfig enp0s8
输出中的信息手动修复这些文件。
首先,我并不完全理解ifcfg-*
文件中的信息。有HWADDR
价值观,也有(有时,不同的)MACADDR
价值观。在(过时的)ifcfg-enp0s3
文件中,我同时具有HWADDR
和MACADDR
,并且此处与inMACADDR
相同(后者不包含值)。HWADDR
ifcfg-Kabelgebundene_Verbindung_1
MACADDR
ifconfig
我希望(" ")的硬件地址ether
在所有情况下都是正确的,对吧?
所以,我的计划是:
- 选择一组脚本(在我的例子中,
{ifcfg,route}-Kabelgebundene_Verbindung_1
),并丢弃其他脚本(*-lo
当然保留 )。 - 在
ifcfg-*
文件中,- 设置
HWADDR
为ether
以下值:ifconfig
- 设置
IPADDR
为inet
以下值:ifconfig
- 设置
事实证明,我能够使用BOOTPROTO=dhcp
而不是IPADDR
手动设置(和其他),因为使用相应脚本中的信息找到了 DHCP 服务器(在另一个子网中,叹息......)route-*
。
我不确定在做类似的事情时是否会使用调整后的脚本ifconfig down enp0s8; ifconfig up enp0s8
;因此,在验证我的 root 密码后(确保我能够直接登录到盒子,无需 ssh/PuTTY),我只需重新启动即可,它就工作了。
我还无法解决的问题:
- 这些
UUID
值是什么?我有不同的值,可能来自不同的虚拟网络适配器,但我在输出中找不到它们VBoxManage showvminfo "<vm name>"
。这只是一个“有根据的猜测”。 - 测试我的更改的最佳方法是什么?
答案1
在无头服务器上设置/恢复网络的更简单方法可能是使用“nmtui”交互式文本菜单。
$ yum install NetworkManager-tui
$ nmtui
┌───────────────────────────┐
│ │
│ ┌─────────────┐ │
│ │ Ethernet ↑ │ <Add> │
│ │ enp4s0 ▒ │ │
│ │ Bridge ▒ │ <Edit...> │
│ │ virbr0 ▮ │ │
│ │ cni0 ▒ │ <Delete> │
│ │ br0 ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ↓ │ <Back> │
│ └─────────────┘ │
│ │
└───────────────────────────┘