本篇适用情形:
- VMware虚机拷贝或移动后网络问题
- 其它虚机格式转换VMware虚机后网络问题
- VMware虚机虚拟网卡设置问题
- 修改VMware虚机虚拟网卡类型
- Ubuntu 16.04虚拟机网卡设置问题
- /etc/network/interface //网卡配置文件(ubuntu)
- lspci -vk
- lsmod
- ifconfig –a
- ethtool
- resolvconf -u
正文:
【Step1】
在着手解决问题之前,先查看一下VMware虚机的网卡配置是否正常。打开虚机目录下的 xxx.vmx 文件,找到虚拟网卡的配置信息(第1块网卡通常为ethernet0),例如:
VMware虚拟网卡有以下几种设备类型:
- ethernet0.virtualDev = "vlance" //AMD PCNet AM79C970A 10/100Mbps
- ethernet0.virtualDev = "e1000" //Intel(R) 82545EM PRO/1000 PCI
- ethernet0.virtualDev = "e1000e" //Intel(R) 82545L PRO/1000 PCIe
- ethernet0.virtualDev = "vmxnet" //VMware PCI Ethernet Adapter
VMware Workstation / Player 建的虚机默认“vlance” 是一块比较老的百兆网卡,可以修改为e1000或e1000e(这两者的区别可以看做一块是pci网卡一块是pcie接口网卡);没有正常安装vmware tools的情况下,不建议改为“vmxnet”。
以下内容在Ubuntu 16.04 LTS虚机下进行。
【Step2】
执行ifconfig查看网口配置信息,可能只有环回口的信息:
执行ifconfig –a 查看系统识别到的所有网口,如果能查看到其它网口信息,例如:
说明虚拟网卡的驱动是ok的,继续Step3。
这是一块e1000e的虚拟网卡,根据Step1里的pci插槽配置信息 ethernet0.pciSlotNumber = "160" ,所以网口名称为 ens160。
ubuntu 16.04 网口命名会以网口的设备信息命名,如果希望恢复eth0、eth1的传统命名方式,可修改系统启动参数:
# vi
/etc/default/grub
RUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
# update-grub
重启后即会回到eth0、eth1的网口名称。
如果ifconfig –a 依然只有lo环回口信息,确保Step1里的虚拟网卡配置正确,跳到Step4。
【Step3】
检查网口的网络连接状态:
$ sudo ethtool ens160
最后一行如果是 Link detected: yes ,跳到Step5;
如果是 Link detected: no,请检查虚机配置网卡设备状态是否为连接状态,如果勾选后检测不到连接再重启一下虚机。
【Step4】
查看虚拟网卡的硬件识别情况:
$ sudo lspci –vk
上图是网卡驱动加载正常的情况,如果没有driver in use的信息,查看系统是否有驱动模块:
$ sudo lsmod |grep e1000e
如果没有虚拟网卡的驱动模块,需要手动安装驱动(关于linux驱动安装步骤Google一下);或按Step1将虚拟网卡类型修改为其它类型进行尝试。
解决网卡驱动问题后,通过dmesg可查看系统启动过程虚拟网卡的加载过程都是ok的:
$ sudo dmesg |grep e1000e
【Step5】
检查网口配置文件,为系统识别的网口ens160配置ip地址(以配置静态IP为例):
$ sudo vi /network/interface
保存后,重启网络服务:
$ sudo service networking restart
$ ifconfig
如上图所示,网口已工作正常。
【Step6】
如果访问外网或域名地址不通,检查一下DNS的配置,对于ubuntu 14.x之后的版本,手动编辑/etc/resolv.conf 配置文件重启后会失效,改为修改配置文件:
/etc/resolvconf/resolv.conf.d/base
添加dns server地址,类似:
nameserver 8.8.8.8
nameserver xx.xx.xx.xx
修改后命令更新一下即可:
$ sudo resolvconf -u
Comments
Post a Comment