记得在我刚接触虚拟机的时候,什么都不懂。最开始初学的时候,用的图形化界面学习Linux还好,连网比较轻松,可是在最小化的时候,我的虚拟机总是出现不能上网的情况,特别是一开始就弄的两个网卡,我就更不会了,导致在让它能够上网这块,碰了很多灰,现在我把我遇到的所有情况的解决方式分享给大家。
不想听博主唠叨的朋友们,想知道怎么连网的话,大家可以直接跳到最后完整实操过程,看看具体怎么做
1.网络适配器
1.1连网模式
首先要知道能上网的就两种模式,侨接(自定义里面的VMnet0)和NAT模式(自定义里面的VMnet8(NAT)作为外网),记住仅主机模式(自定义里面的VMnet1(仅主机模式))是作为内网,内网是不能上网的,不能上网不能上网!!!!一定要记住,当然不能上网也是可以远程连接虚拟机的。
1.2一定要做安装前操作
我们在虚拟机安装前,就应该把那些网络适配器的类型选择好,不管是桥接还是NAT模式,还是两个网卡(VMnet1和VMnet8),在安装好虚拟机后,如果想更改网络适配器的网络链接方式,或者加网卡之类的,改了后就算是虚拟机重启过后(在目录/etc/sysconfig/network-scripts/下面可以查看)会发现和原来的一样,没有变化。所以如果要装的话先想好,不要想着后面来加。
这里随便多说一句,目录/etc/sysconfig/network-scripts/下面怎么看
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens32 ifdown-isdn ifup ifup-plusb ifup-wireless
ifcfg-ens33 ifdown-post ifup-aliases ifup-post init.ipv6-global
ifcfg-lo ifdown-ppp ifup-bnep ifup-ppp network-functions
ifdown ifdown-routes ifup-eth ifup-routes network-functions-ipv6
ifdown-bnep ifdown-sit ifup-ippp ifup-sit
ifdown-eth ifdown-Team ifup-ipv6 ifup-Team
ifdown-ippp ifdown-TeamPort ifup-isdn ifup-TeamPort
ifdown-ipv6 ifdown-tunnel ifup-plip ifup-tunnel
我们会发现该目录下面有ifcfg-ens32和ifcfg-ens33两个文件,这个就是我们的网络适配器文件(注意该名字不唯一,一般自己电脑虚拟机上面做实验,大部分就是ifcfg-*,但有的确实会有一些奇奇怪怪的网卡名,这是正常的),上面那个32是网络适配器1的,下面那个33是网络适配器2的文件
1.3分清自己的内外网卡
要注意哪一块是内网那一块是外网,是根据自己安装前定的,并不是一直不变的。因为在博主安装前就干过下面这种事情,网络适配器选择v8,网络适配器2选择v1。
这个就出现一种什么情况呢,就是因为我不懂,还是按照第一个网卡配置文件写内网配置,第二个网卡文件写外网配置,这就变成了什么呢,内网写外网配置,外网写内网配置,内网又不能上网,总之就变成了,反正就是上不了网。
(下面这张图是当时错误情况,也不能算错误,就是最好别学我一样配,建议两网卡一般原本自带适配器选择v1作为内网,添加的适配器2作为外网)
可能有的人会问,我已经这样装了怎么办难道只能把虚拟机删了重新来?其实不用的,看准哪一个网卡是内网,哪一个网卡是外网就好了,写对应文件内容,别和我一样,明明这个自己选的不是内网还写内网,具体怎么写接下来会具体告诉大家。
2.配置文件
博主这里两个网卡采用的指定ip的形式,然后遇到的问题比较多,主要以下几种(这里先把我遇到的情况,觉得值得注意的点都列出来,具体完整怎么写,会在后面完整实操过程中写出来)
2.1网关(GATEWAY)
哪一个是外网哪一个加网关,内网配置文件不要写网关,不要写!!!不然可能短暂性上网,就比如今天能用第二天就上不了网络(远程还是可以的)。
在博主遇到的实际情况就是(此示例是错误的,大家不要跟着学)
[root@localhost network-scripts]# vi ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=ens32
UUID=6b975a35-5c77-4fe7-9697-c2f52244b79e
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.101
PERFIX=24
GATEWAY=192.168.100.1 #兄弟们,这个是错的,别写,删掉
[root@localhost network-scripts]# vi ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=80f40633-c9fc-413f-9b71-3c0d0ff8c10d
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.101
PREFIX=24
GATEWAY=192.168.200.2
DNS1=8.8.8.8
DNS2=114.114.114.114
那怎么知道自己虚拟机的网关,在编辑–虚拟网络编辑器–找到nat设置–然后找到网关
注意这个虚拟机网关能自己改的(后面完整实操过程附上全过程),改本机上面的v8网关或者虚拟机上面的都可以,但是不要和本机上面v8网关设置的一样(本机v8位置如下,设置–网络–网络适配器–找到v8,查看详细信息),会冲突的,会导致虚拟机无法上网
2.2网段
知道了网关,然后就是网段,大家可以看到我的网段自己配置是这样的
这就意味着,内网配置文件,手动指定加的ip,也就是IPADDR必须是192.168.100.随便,外网加的ip是192.168.200.随便,这两个随便可以是不一样的,没影响的具体看个人习惯,但是外网加的ip不要是网关
然后,可能会问,他的网段不是这个,怎么办。我只能说好巧,我也不是,这个可以自己改的(后面完整连网实操过程会写)
2.3文件书写
注意一下,这里大写的必须大写,不要问为什么
外网网卡
BOOTPROTO=static(是dhcp改为static)
ONBOOT=yes(是no的话,改为yes)
IPADDR=网段内ip
GATEWAY=网关ip
PREFIX=24(或者NETMASK=255.255.255.0这两个是一个意思,选一个写上去,不要同时写)
DNS1=8.8.8.8(那个1必须写,然后可以再加一个DNS2=114.114.114.114作为备用)
内网网卡
BOOTPROTO=static(是dhcp改为static)
ONBOOT=yes(是no的话,改为yes)
IPADDR=网段内ip
PREFIX=24
3.网络
3.1重启网络
在前面所有配置都没有问题的时候,需要重启网络,才会生效,每改一次配置文件都要重启一次
重启网络命令
[root@localhost network-scripts]# systemctl restart NetworkManager
或者
[root@localhost network-scripts]# systemctl restart network
这里博主建议centos7版本,大家用systemctl restart network这一条命令来重启网络,因为在contos7版本的Linux上我也遇到了重启网络失败的情况。
当时情况如下,当我用NetworkManager来重启网络的时候,发现有时候systemctl restart NetworkManager命令首次使用的时候是没有问题的,但是后面我又改了ip,再次使用这条命令,发现没有任何改变,此时的配置还是之前的ip,虽然此时系统没有报错,但是确实网络没有重新起起来,那么解决如下
如果是contos7将systemctl restart NetworkManager命令换用systemctl restart network
如果是contos8,那么只有NetworkManager,用重载配置文件的方法下面这两条命令(contos7也可以用,但是没必要)
nmcli c reload 网卡名 (重载网络配置文件,但不会立即生效)
nmcli d reapply 网卡名 (立即生效)
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:47:96:ec brd ff:ff:ff:ff:ff:ff
inet 192.168.100.101/24 brd 192.168.100.255 scope global noprefixroute ens32 #此时会发现我第一个网卡配置ip为192.168.100.101
valid_lft forever preferred_lft forever
inet6 fe80::70b3:401c:8ce5:5eed/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:47:96:f6 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.101/24 brd 192.168.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::5598:d840:a313:8726/64 scope link noprefixroute
valid_lft forever preferred_lft forever
#现在我们将第一个网卡ip进行修改测试一下
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=ens32
UUID=6b975a35-5c77-4fe7-9697-c2f52244b79e
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.102 #原101改为102
PERFIX=24
[root@localhost ~]# nmcli c reload ens32
[root@localhost ~]# nmcli d reapply ens32
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:47:96:ec brd ff:ff:ff:ff:ff:ff
inet 192.168.100.102/24 brd 192.168.100.255 scope global noprefixroute ens32 #说明网络重启成功
valid_lft forever preferred_lft forever
inet6 fe80::bb9:1cec:3152:4afd/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:47:96:f6 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.101/24 brd 192.168.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::5598:d840:a313:8726/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3.2网络冲突
在我遇到的还有一种情况,就是能上网能远程,然后用着用着,再去干个其他事情,再回来打开虚拟机,就发现没法上网,甚至远程都连不上。之前内网外,都把网关写上去的至少远程能连(前面2.1),现在连远程都连不上。我寻思半天,终于找到解决方法:
大概就是network与NetworkManager冲突,我们需要把NetworkManger禁用,用下面几个命令
[root@localhost ~]# systemctl stop NetworkManger #关闭NetworkManger服务,临时关闭
[root@localhost ~]# systemctl disable NetworkManager #开机不启动,永久关闭
然后让network来接管网络配置
[root@localhost ~]# systemctl restart network
完整连网实操过程
下面我就完整操作一下两个网卡怎么操作
一、配置虚拟网卡
二.配置文件
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls #先看看你的网卡叫啥
ifcfg-ens32 ifdown-isdn ifup ifup-plusb ifup-wireless
ifcfg-ens33 ifdown-post ifup-aliases ifup-post init.ipv6-global
ifcfg-lo ifdown-ppp ifup-bnep ifup-ppp network-functions
ifdown ifdown-routes ifup-eth ifup-routes network-functions-ipv6
ifdown-bnep ifdown-sit ifup-ippp ifup-sit
ifdown-eth ifdown-Team ifup-ipv6 ifup-Team
ifdown-ippp ifdown-TeamPort ifup-isdn ifup-TeamPort
ifdown-ipv6 ifdown-tunnel ifup-plip ifup-tunnel
[root@localhost network-scripts]# vi ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #dhcp改为static
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=ens32
UUID=6b975a35-5c77-4fe7-9697-c2f52244b79e
DEVICE=ens32
ONBOOT=yes #no改yes
IPADDR=192.168.100.101 #加ip
PERFIX=24 #可以不写
[root@localhost network-scripts]# vi ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #dhcp改为static
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=80f40633-c9fc-413f-9b71-3c0d0ff8c10d
DEVICE=ens33
ONBOOT=yes #no改yes
IPADDR=192.168.200.101 #加ip
PREFIX=24 #掩码
GATEWAY=192.168.200.2 #网关
DNS1=8.8.8.8 #域名解析器
DNS2=114.114.114.114
[root@localhost network-scripts]# systemctl restart network
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:47:96:ec brd ff:ff:ff:ff:ff:ff
inet 192.168.100.101/24 brd 192.168.100.255 scope global noprefixroute ens32 #看是否显示内网配置信息
valid_lft forever preferred_lft forever
inet6 fe80::bb9:1cec:3152:4afd/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:47:96:f6 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.101/24 brd 192.168.200.255 scope global noprefixroute ens33 #看是否显示外网配置信息
valid_lft forever preferred_lft forever
inet6 fe80::5598:d840:a313:8726/64 scope link noprefixroute
valid_lft forever preferred_lft forever
三.测试
[root@localhost network-scripts]# ping -c 5 www.baidu
PING www.wshifen.com (103.235.46.39) 56(84) bytes of data.
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=1 ttl=128 time=76.8 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=2 ttl=128 time=75.2 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=3 ttl=128 time=60.2 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=4 ttl=128 time=65.6 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=5 ttl=128 time=75.8 ms
--- www.wshifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4008ms #这里可以看到没有问题
rtt min/avg/max/mdev = 60.292/70.783/76.877/6.630 ms
然后也可以连接远程试试,无论是连内网ip还是外网ip应该都是可以连接上的
最后,到这里也就差不多了,前面很多废话,都是希望大家更多的是理解和明白,因为很多东西可能出问题就是一个小问题,当然也希望大家都能解决问题。
更多推荐
解决虚拟机Linux(一个内网一个外网)不能上网问题
发布评论