虚拟机网卡问题

1. 起因

  最近找我解决虚拟机网络问题好多。我归纳一下碰见的问题:

  • 虚拟机获取不了IP地址
  • 虚拟机有IP地址上不了网
  • 虚拟机能ping通 114.114.114.114,ping不同www.baidu.com
  • 虚拟机挂起后,再次开启后上不了。

反正问题是是五花八门。我就想说,按照我以下解决方法,基本排除以上出现的各种问题。

以下教程真针对 centos7 centos6稍微有所不同 以下是说宿主机表示你安装vmware虚拟机的电脑,或者笔记本

2. 科普网卡模式

网卡模式

看以上图。网卡我们使用的模式有三四种,我们常用的是桥接模式和NAT模式

  • 桥接模式

我这么通俗说,桥接模式就是你的虚拟机使用了该模式后,你的虚拟机就会和你宿主机是在同一个网段,比如你笔记本电脑IP192.168.5.100,那么你虚拟机的IP也应该在这网段内也就是说类似192.168.5.x这样。

好处:

  你在别的机器上直接链接到你的虚拟机,NAT模式是不能从别的机器上链接到你这虚拟机。此时你的虚拟机和宿主机[本机电脑]是两个独立的。想象一下桥是什么样子的,作用是什么。

坏处:

  不足之处就是,若是你上网模式该模式,你虚拟机的网络IP地址收到你笔记本或者台式机连接的网络受限制。比如你在家里网段是192.168.3.x网段,你调试好你的虚拟机上网,此时你到公司你网段要是在192.168.5.x网段,你虚拟机是铁定上不了网的。

  • NAT模式

  NAT模式就是解决你变更外接网络的时候,你宿主机IP变更才能上网问题。NAT其实是分SNATDNAT。你就记住,NAT模式,此时你外面链接什么网络。你虚拟机IP一般不会变的,且仍然能上网。你会多问一句。为什么啊?我告诉你,那是因为你安装的vmware这样的虚拟化软件,会有个虚拟网络管理你虚拟机的IP地址。一般安装好虚拟机会自动配置虚拟机网络。后面会讲述这个。

我力荐,使用NAT模式,尤其你的外界网络变来变去的时候。

3. 桥接模式

  前提: 外界网络是dhcp下发的网络,我们虚拟机配置成桥接模式的话,那么我虚拟机的IP地址就会一般收到外界网络的DHCP server下发的地址。一把这样模式我们也不用管。虚拟机安装好以后,要是ifconfig查看不到虚拟机有ip地址的时候,先dhcp获取一下。我举个例子

[root@master ~]# dhclient ens33
[root@master ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.186.10  netmask 255.255.255.0  broadcast 192.168.186.255
        inet6 fe80::9d58:5651:daa8:880a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c6:79:90  txqueuelen 1000  (Ethernet)
        RX packets 3723829  bytes 1755471620 (1.6 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3281625  bytes 4314704362 (4.0 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 257809  bytes 143899726 (137.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 257809  bytes 143899726 (137.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

dhclient ens33是让你网卡名字为ens33的网卡动态获取IP地址

此时你若分配到地址的时候,你在把你的IP地址可以改为固定

[root@master ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=536c6d8d-4a41-405a-82a5-d5a4f27c8ca9
DEVICE=ens33
ONBOOT=yes  

BOOTPROTO=static
IPADDR=192.168.186.10
GATEWAY=192.168.186.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=223.5.5.5

解释

BOOTPROTO=static  配置ip为静态。要是动态就是BOOTPROTO=dhcp
ONBOOT=yes        开机自动启动网卡,一般默认是no,需要改为yes
IPADDR=192.168.186.10  你网络的不冲突的IP地址即可
GATEWAY=192.168.186.2  网关
NETMASK=255.255.255.0  子网掩码
DNS1=114.114.114.114   电信DNS 
DNS2=223.5.5.5         阿里云DNS

DNS不写。一般家里默认是路由器的网关。我建议写成电信或者阿里云的。一般DNS最多只能配置两个

关于IPV6的字段,可以不用管,也可以删除,除非你使用了IPV6网络。

  此时有条件的话,可以重启虚拟机[建议这种]或者重启网卡。你会发现你可以正常上网了,你要是不配置DNS的话,就会出现一开始我说的那种常见问题,能ping223.5.5.5但是ping不同百度,那就是因为你没有虚拟机没有DNS。重启后,你虚拟机一般会正常有你配置的IP,此时你在重启,挂起后开启,你的ip地址是不变的。除非你外在的网络改变了,比如你家里的网络调试好后,到公司,笔记本一联网,我擦,网段变了。你虚拟机虽然固定了IP,但是是上不了网的。你懂的,此时你要么重新配置成你现在网络段,要么就的使用我接下来要说的NAT模式了。

4. NAT模式

  桥接模式,只要我外界网络变化的话,我虚拟肯定是有问题的,怎么处理呢,那就是王者来了,使用NAT模式,少折腾,尤其你不懂的,就好比有些人说减肥靠饿瘦的,我建议远离这样的人。锻炼先锻脑。不多说。直接开干。

网卡模式

注意 像改变虚拟机的内存大小,cpu个数,网络模式,都是需要先关闭虚拟机后才能修改的。

网卡模式

以上就是怎么看你的NAT模式虚拟机的网络和子网掩码的。可以重新设置,但是别轻易重新设置你的虚拟机虚拟网络。

选择这模式后,开机进入。配置IP地址。按照你心情配置最后一位。

[root@master ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=536c6d8d-4a41-405a-82a5-d5a4f27c8ca9
DEVICE=ens33
ONBOOT=yes  

BOOTPROTO=static
IPADDR=192.168.186.10 
GATEWAY=192.168.186.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=223.5.5.5

只有IP最后一位你可以随便配,其他的都得按照你虚拟机的虚拟网络给你划分好的来配置,也就是上面那图。

然后你在怎么折腾你的虚拟机都没事。你ip一般不会在变了,也不会上不了网。

网卡模式

3. 虚拟机克隆和拷贝

  一般很多人直接拷贝虚拟机或者克隆虚拟机,然后开机后发现你的虚拟机上不了网了,那是因为你克隆或者拷贝虚拟机后你多个虚拟机都是相同的啊,大哥,你要记住,内网通讯不是根据IP来通讯的,是根据MAC来通讯,怎么解决呢,就是换MAC地址。

网卡模式

网卡模式