当我在 Arch Linux 上安装 VMware Workstation 时,虚拟以太网不工作。
$ sudo tail /var/log/vnetlib
Aug 28 22:20:33 VNLFileExists - Cannot check for file or directory: /etc/vmware/networking , error: No such file or directory
Aug 28 22:20:33 VNLNetCfgLoad - Import file does not exist
Aug 28 22:20:33 VNL_Load - Error loading the vnet configuration, file used: /etc/vmware/networking
Aug 28 22:20:33 VNLNetCfgUnload - Requested cache is not loaded
Database file is not present.
Failed to initialize
Aug 28 22:20:41 VNLFileExists - Cannot check for file or directory: /etc/vmware/networking , error: No such file or directory
Aug 28 22:20:41 VNLNetCfgLoad - Import file does not exist
Aug 28 22:20:41 VNL_Load - Error loading the vnet configuration, file used: /etc/vmware/networking
Aug 28 22:20:41 VNLNetCfgUnload - Requested cache is not loaded
已编译所需模块。
以前,我已经从工作安装中复制了该文件或目录(我不记得了),但现在我需要一个真正的解决方案。
这对我来说很奇怪,也可能是硬件问题,因为在 Ubuntu 上,同样的事情也发生在同一台计算机上。
答案1
同意这是iptables
配置 VMware Workstation 主机网络的关键且隐藏的部分。具体来说,我需要允许 ICMP 进出。这是使用相当严格的默认拒绝输入和输出 iptables 配置,因此其他人可能会遇到不同的过滤问题。
症状和错误日志根本无法帮助您解决这个问题。使用 VMware Workstation 9 时,vmware-netcfg
行为异常(不保存新配置),并且/etc/init.d/vmware start
无法创建或配置任何接口/dev/vmnet{0,1,8}
。因此,如果ifconfig -a
在启动 vmware 服务后没有显示任何接口,请查看此问题。
我采取了与 iptables 步骤略有不同的方法,即创建一个“空”/etc/vmware/networking
文件:
$ touch /tmp/x
$ vmware-networks --migrate-network-settings /tmp/x
但后来卡住了,这个 iptables 答案有所帮助。该.../VMxxx/vmware.log
文件显示如下行:
2013-08-20T11:14:11.075-05:00| vcpu-0| I120: VNET: MACVNetPortOpenDevice: Ethernet0: can't open vmnet device (No such file or directory)
2013-08-20T11:14:11.075-05:00| vcpu-0| I120: VNET: MACVNetPort_Connect: Ethernet0: can't open data fd
2013-08-20T11:14:11.075-05:00| vcpu-0| I120: Msg_Post: Warning
2013-08-20T11:14:11.075-05:00| vcpu-0| I120: [msg.vnet.connectvnet] Could not connect Ethernet0 to virtual network "/dev/vmnet1". More information can be found in the vmware.log file.
2013-08-20T11:14:11.075-05:00| vcpu-0| I120: [msg.device.startdisconnected] Virtual device Ethernet0 will start disconnected.
答案2
这是 iptables 问题。vmware 初始化其网络的方式需要通过 iptables 链中的一些数据包。不过,我不记得具体是哪条有问题的 iptables 规则。我关闭了防火墙,然后它就正常工作了。