虚拟机网卡问题
1. 起因¶
最近找我解决虚拟机网络问题好多。我归纳一下碰见的问题:
- 虚拟机获取不了
IP
地址 - 虚拟机有
IP
地址上不了网 - 虚拟机能ping通
114.114.114.114
,ping不同www.baidu.com
- 虚拟机挂起后,再次开启后上不了。
反正问题是是五花八门。我就想说,按照我以下解决方法,基本排除以上出现的各种问题。
以下教程真针对 centos7 centos6稍微有所不同 以下是说宿主机表示你安装
vmware
虚拟机的电脑,或者笔记本
2. 科普网卡模式¶
看以上图。网卡我们使用的模式有三四种,我们常用的是桥接模式和NAT模式
- 桥接模式
我这么通俗说,桥接模式就是你的虚拟机使用了该模式后,你的虚拟机就会和你宿主机是在同一个网段,比如你笔记本电脑IP
是192.168.5.100
,那么你虚拟机的IP
也应该在这网段内也就是说类似192.168.5.x
这样。
好处:
你在别的机器上直接链接到你的虚拟机,NAT模式是不能从别的机器上链接到你这虚拟机。此时你的虚拟机和宿主机[本机电脑]是两个独立的。想象一下桥是什么样子的,作用是什么。
坏处:
不足之处就是,若是你上网模式该模式,你虚拟机的网络IP地址收到你笔记本或者台式机连接的网络受限制。比如你在家里网段是192.168.3.x
网段,你调试好你的虚拟机上网,此时你到公司你网段要是在192.168.5.x
网段,你虚拟机是铁定上不了网的。
- NAT模式
NAT模式就是解决你变更外接网络的时候,你宿主机IP
变更才能上网问题。NAT其实是分SNAT
和DNAT
。你就记住,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
的话,就会出现一开始我说的那种常见问题,能ping
同223.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地址。