虚拟机centos7 识别不出网卡的解决方案
問題提出
之前在VMware安裝centos 7(網(wǎng)絡(luò)連接采取Nat方式),進入Centos 7后成功開啟了sshd服務,然后在主機(我的windows系統(tǒng))用puTTY軟件可以ssh到虛擬機上。后來在用華為模擬軟件ensp配置路由器時,因為需用到(虛擬/真實)網(wǎng)卡來連接外網(wǎng),我在弄的時候不小心將VMnet8的配置搞亂了。所以,再次打開虛擬機時,我的Centos居然連不上網(wǎng)了!
于是,我一步步排查,終于找到了原因,并解決了識別不出網(wǎng)卡問題。
在這篇博客中,我將完成兩件事:
解決上網(wǎng)問題
虛擬機網(wǎng)絡(luò)初始配置
我的虛擬機是采取NAT方式聯(lián)網(wǎng)的。注意:如果你是使用Host-only或者橋接方式,這篇文章可能只能給你提供一個思路。
尋找問題原因
出現(xiàn)不能上網(wǎng),一般我們會檢查是不是VMware本身的網(wǎng)卡是不是有問題。我檢查了幾遍,并且另外安裝一個centos 7系統(tǒng),發(fā)現(xiàn)能上網(wǎng)。所以100%肯定是我這個Centos 7系統(tǒng)網(wǎng)絡(luò)設(shè)置有問題!所以我先查看一下電腦有沒有獲取到正確的ip。于是,首先想到的命令是:ifconfig:
[root@localhost ~]# ifconfig lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 448 bytes 38976 (38.0 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 448 bytes 38976 (38.0 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255ether 52:54:00:11:c6:c2 txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0上面列出的lo(loopback)網(wǎng)卡是用于環(huán)回地址的。virbr0是網(wǎng)橋的網(wǎng)卡。而我們需要的是與VMnet8對應的那張網(wǎng)卡。
下圖是在windows打開網(wǎng)絡(luò)設(shè)置頁面看到的。其中有兩張?zhí)摂M網(wǎng)卡:
很明顯,那張網(wǎng)卡還沒開啟。于是,我給ifconfig加一個參數(shù)-a:
[root@localhost ~]# ifconfig -a ens33: flags=4098<BROADCAST,MULTICAST> mtu 1500ether 00:0c:29:bd:21:c3 txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 448 bytes 38976 (38.0 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 448 bytes 38976 (38.0 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255ether 52:54:00:11:c6:c2 txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0virbr0-nic: flags=4098<BROADCAST,MULTICAST> mtu 1500ether 52:54:00:11:c6:c2 txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0從輸出中,我很快鎖定了一張網(wǎng)卡:ens33。但我要測試到底是不是這張網(wǎng)卡。一般網(wǎng)卡的相關(guān)文件都是放在/etc/sysconfig/network-scripts/下:
[root@localhost ~]# ls -al /etc/sysconfig/network-scripts/ | grep ens33 -rw-r--r--. 1 root root 280 Nov 26 15:36 ifcfg-ens33果然,就是它!!!先把它開啟,然后在輸入ifconfig命令查看:
[root@localhost ~]# ifconfig ens33 up [root@localhost ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet6 fe80::20c:29ff:febd:21c3 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:bd:21:c3 txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 7 bytes 578 (578.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 460 bytes 39900 (38.9 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 460 bytes 39900 (38.9 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255ether 52:54:00:11:c6:c2 txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0開啟之后,發(fā)現(xiàn)ens33這張網(wǎng)卡并沒有獲取到ip地址,網(wǎng)關(guān)等相關(guān)配置。到此,我們已經(jīng)知道根本原因,就是Centos 7的網(wǎng)卡沒有獲取到ip!但現(xiàn)在ens33網(wǎng)卡已經(jīng)開啟,我想重啟一下網(wǎng)絡(luò),看看能不能獲取ip地址:
[root@localhost ~]# service network restart Restarting network (via systemctl): Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details. [FAILED]果然,還是失敗了。我就想,為什么前幾天安裝得Centos系統(tǒng)不能上網(wǎng),而現(xiàn)在安裝的卻能上網(wǎng)呢?中間只發(fā)生過一件可能影響網(wǎng)絡(luò)的事:就是我更改過VMnet8的網(wǎng)絡(luò)配置。
解決ip分配問題
經(jīng)過搜索和排查,我發(fā)現(xiàn)在Centos系統(tǒng)上,管理網(wǎng)絡(luò)的有兩個工具:
- network;
- NetworkManager.
我去紅帽官方查看了一下,找到了一篇post。我就簡單說一下什么是network和NetworkManager:
稍微總結(jié)一下,就是說NetworkManager比network更先進,啟動順序也在network前。我就有了一個大膽的猜想(注意,下面的一段話只是個人YY,請批判性閱讀):
由于我們是虛擬機環(huán)境,外面的虛擬網(wǎng)卡已經(jīng)有能力通過dhcp等協(xié)議將網(wǎng)絡(luò)ip等必要東西分配好,而且networkManager是新的東西,可能在虛擬機上兼容不太好。你平時用不影響,但一旦你更改了VMnet8等相關(guān)虛擬網(wǎng)卡,NetworkManager可能識別不出,就無法分配到ip,而且由于它先啟動,然后它掛了,但它還在占用這個分配ip的功能,進而network無法頂替,也就是沖突了。
接下來,我要關(guān)閉NetworkManager:
[root@localhost ~]# systemctl stop NetworkManager //停止NetworkManager [root@localhost ~]# systemctl disable NetworkManager //進制開機啟動 Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service. Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service. Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.此時,你會發(fā)現(xiàn)你電腦的網(wǎng)絡(luò)GUI不見了(因為你關(guān)閉了NetworkManager):
做完這些,輸入ifconfig看一下:
[root@localhost ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.43.129 netmask 255.255.255.0 broadcast 192.168.43.255inet6 fe80::20c:29ff:febd:21c3 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:bd:21:c3 txqueuelen 1000 (Ethernet)RX packets 261 bytes 16686 (16.2 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 28 bytes 4549 (4.4 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0Bingo!!!成了。
轉(zhuǎn)載于:https://www.cnblogs.com/busui/p/10021725.html
總結(jié)
以上是生活随笔為你收集整理的虚拟机centos7 识别不出网卡的解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今日头条屏幕适配方案落地研究
- 下一篇: C# in Depth-类型系统的特征