当前位置: 移动技术网 > 网络运营>服务器>Linux > Linux(包含CentOS7.3、Ubuntu16.04.3)虚拟机共享宿主机网络方法和常见问题

Linux(包含CentOS7.3、Ubuntu16.04.3)虚拟机共享宿主机网络方法和常见问题

2020年09月01日  | 移动技术网网络运营  | 我要评论
如果虚拟机需要通过宿主机的有线或者WiFi连网,需要进行宿主机端和虚拟机端设置,详细如下:1 宿主机端设置1.1 VMware Workstation的网络适配器设置选择NAT模式,如下图:1.2 宿主机的网络适配器设置需要将宿主机网络进行共享,注意共享的“家庭网络连接”需要选择为VMnet8。如下图所示:1.3 宿主机中虚拟网络适配器设置VMware Network Adapter VMnet8的IPv4和子网掩码分别设置为192.168.137.1和255.255.255.0,

如果虚拟机需要通过宿主机的有线或者WiFi连网,需要进行宿主机端和虚拟机端设置,详细如下:
1 宿主机端设置
1.1 VMware Workstation的网络适配器设置
选择NAT模式,如下图:
VMware中网络适配器
1.2 宿主机的网络适配器设置

需要将宿主机网络进行共享,注意共享的“家庭网络连接”需要选择为VMnet8。如下图所示:

宿主机网络适配器
1.3 宿主机中虚拟网络适配器设置
VMware Network Adapter VMnet8的IPv4和子网掩码分别设置为192.168.137.1和255.255.255.0,默认网关为空。如下图:
VMnet8设置
1.4 VMware Workstation中虚拟网络编辑器设置

需要添加网络VMnet8、选择NAT模式、设置子网IP(本例为192.168.137.0)和子网掩码(一般均为255.255.255.0),最后再进行“NAT设置”和“DHCP设置”。如下图所示:
虚拟网络编辑器
NAT设置
2 虚拟机端设置

2.1 虚拟机系统IP设置

2.1.1 Linux系统有图形界面的情况
如果Linux系统有图形界面,可以通过图形界面设置,如下图所示:
有线设置
添加配置

IPv4
DNS
2.1.2 Linux系统有图形界面但没有网络图标,或者无图形界面的情况
通过ls /etc/sysconfig/network-scripts查看网络配置列表,示例如下:

[root@localhost~]# ls /etc/sysconfig/network-scripts
CanBeDeleted  ifdown-ppp       ifup-ib      ifup-Team
ifcfg-ens33   ifdown-routes    ifup-ippp    ifup-TeamPort
ifdown        ifdown-sit       ifup-ipv6    ifup-tunnel
ifdown-bnep   ifdown-Team      ifup-isdn    ifup-wireless
ifdown-eth    ifdown-TeamPort  ifup-plip    init.ipv6-global

其中常用的是ifcfg-ens33,然后再使用vi /etc/sysconfig/network-scripts/ifcfg-ens33命令查看该配置的内容,示例如下:

HWADDR=00:0C:************
PROXY_METHOD=none
BROWSER_ONLY=no
TYPE=Ethernet
#BOOTPROTO="static"
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7047896d-0747-4c7b-858c-2579547881a6
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.137.7
NETMASK=255.255.255.0
PREFIX=24
GATEWAY=192.168.137.2
DNS=8.8.8.8
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no

其中,需要格外留意的几项是:

BOOTPROTO=dhcp
ONBOOT=yes
IPADDR=192.168.137.7
NETMASK=255.255.255.0
GATEWAY=192.168.137.2
DNS=8.8.8.8

需要根据具体情况做相应修改,修改后保存。

2.2 重启Linux中网络连接

保存之后,就可以重启网络服务进行测试了。
对于图形界面的情况,可以先关闭、再打开有线连接的开关,如下图所示:
有线连接

对于无图形界面的系统,需要使用命令重启网络服务,重启命令为:

service network restart
#示例:
[root@localhost~]# service network restart
Restarting network (via systemctl):                        [  确定  ]

重启之后,可以ping宿主机上VMnet的IP:192.168.137.1,也可以ping t.cn或www.baidu.com测试外网情况。示例如下:

[root@localhost~]# ping 192.168.137.1
PING 192.168.137.1 (192.168.137.1) 56(84) bytes of data.
64 bytes from 192.168.137.1: icmp_seq=1 ttl=64 time=0.287 ms
64 bytes from 192.168.137.1: icmp_seq=2 ttl=64 time=0.410 ms
64 bytes from 192.168.137.1: icmp_seq=3 ttl=64 time=0.322 ms
64 bytes from 192.168.137.1: icmp_seq=4 ttl=64 time=0.345 ms
^C
--- 192.168.137.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.287/0.341/0.410/0.044 ms
[root@localhost~]# ping t.cn
PING t.cn (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.034 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.056 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.023 ms
^C
--- t.cn ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.023/0.037/0.056/0.015 ms
[root@localhost~]# ping www.baidu.com
PING www.a.shifen.com (36.152.44.96) 56(84) bytes of data.
64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=1 ttl=128 time=31.4 ms
64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=2 ttl=128 time=29.1 ms
64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=3 ttl=128 time=28.8 ms
64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=4 ttl=128 time=27.0 ms
110 packets transmitted, 110 received, 0% packet loss, time 128261ms
rtt min/avg/max/mdev = 26.295/34.545/159.932/15.807 ms

常见问题:

1、图形界面左上角网络图标消失

情形1:需要重启网络服务或者重新添加网络。
解决①:使用ifconfig ens33 up、service network restart、NetworkManager stop/disable/restart/start等命令重启网络服务,可能需要反复尝试。
解决②:在“虚拟网络编辑器”中先“移除”原来的网络,然后再添加一个和原来一样的,如果修改DHCP设置中IP地址不正确,需自行修改。
解决③:在“虚拟机设置”中修改MAC地址。手动修改MAC地址,或者点击"生成"按钮,如下图所示:手动修改MAC地址,或者点击"生成"
修改MAC后,要修改虚拟机中相应网络配置的MAC地址,并执行ifconfig ens33 up、service network restart(或systemctl restart network)重启网络配置服务。至此,网络图标可以出现,并且网络已恢复正常。
总结:如果需要修改网络配置(如ens33)信息,可以通过配置文件和命令两种方式完成:
方式一:使用vi /etc/sysconfig/network-scripts/ifcfg-ens33命令修改,修改后需要重启网络配置服务。
方式二:使用命令,无须重启网络配置服务。
ifconfig ens33 192.168.137.7 netmask 255.255.255.0 #临时修改ens33的IP地址
ifconfig ens33 192.168.137.7 netmask 255.255.255.0 up #临时修改ens33的IP地址,同时激活
route add default gw 192.168.137.2 #临时修改默认网关
hostname newHost #修改主机名,如,将localhost修改为newHost
ifup ens33 #启用指定非活动网络设置ens33(同ifconfig ens33 up)
ifdown ens33 #禁用指定活动网络设置ens33(同ifconfig ens33 down)

情形2:需使用的网络配置MAC 地址与实际不符。
此时,通过图形界面打开网络时,提示“系统的网络服务与此版本的网络管理器不兼容”,如下图所示:
网络服务不兼容
并且,此时通过命令重启网络服务,异常如下:

[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.
                                                           [失败]
[root@localhost~]# systemctl status network.service -l
● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since 日 2020-09-13 12:54:35 CST; 10s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 4902 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)
9月 13 12:54:35 localhost.localdomain systemd[1]: Failed to start LSB: Bring up/down networking.
9月 13 12:54:35 localhost.localdomain systemd[1]: Unit network.service entered failed state.
9月 13 12:54:35 localhost.localdomain systemd[1]: network.service failed.
[root@localhost~]# journalctl -xe
-- Subject: Unit network.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit network.service has begun starting up.
9月 13 12:54:34 localhost.localdomain network[4902]: 正在打开环回接口: ./ifup: 未发现 ifcfg-lo 配置。
9月 13 12:54:34 localhost.localdomain network[4902]: 用法:ifup <设备名>
9月 13 12:54:34 localhost.localdomain network[4902]: [失败]
9月 13 12:54:34 localhost.localdomain network[4902]: 正在打开接口 ens33: 错误   : [/etc/sysconfig/network-scripts/ifup-eth]  ens33 设备的 MAC 地址与
9月 13 12:54:34 localhost.localdomain /etc/sysconfig/network-scripts/ifup-eth[4973]:  ens33 设备的 MAC 地址与预期不符,忽略。

解决:通过vi /etc/sysconfig/network-scripts/ifcfg-ens33(其中,ifcfg-ens33为需要使用的网络配置名称)命令修改MAC地址,示例如下:

[root@localhost~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33  #修改命令

#HWADDR=00:0C:58:B3:3E:F0  #原MAC地址
HWADDR=0D:5E:32:4B:F8:29  #修改为实际的MAC地址

#修改后执行:
[root@localhost~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost~]# systemctl start network.service
[root@localhost~]# service network restart
Restarting network (via systemctl):                        [  确定  ]

情形3:本地网络设置丢失。
此时,网络畅通,内网、外网均可访问,但桌面右上角不显示网络连接图标。网络连接图标显示情况如下图所示:
网络连接图标
解决:通过命令vi /etc/sysconfig/network-scripts/ifcfg-lo进入本地连接编辑页面,格式如下:

DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

如果是人为将/etc/sysconfig/network-scripts/ifcfg-lo文件改名或移至别处,可以再手动还原回来。
上述修改完成之后,重启网络服务:

[root@localhost~]# service network restart
Restarting network (via systemctl):                        [  确定  ]

至此,网络图标应该可以正常显示。

2、尝试通过systemctl restart network或systemctl restart network.service重启网络服务后断网
部分异常如下:

[root@localhost~]# systemctl  start Network.service
[root@localhost~]# systemctl restart network.service
Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
Failed to start Network.service: Unit not found.
[root@localhost~]# systemctl status network.service -l
Active: failed (Result: exit-code) since 六 2020-09-12 16:22:52 CST; 27s ago
Process: 8033 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)
9月 12 16:22:52 localhost.localdomain systemd[1]: Failed to start LSB: Bring up/down networking.
9月 12 16:22:52 localhost.localdomain systemd[1]: Unit network.service entered failed state.
9月 12 16:22:52 localhost.localdomain systemd[1]: network.service failed.
[root@localhost~]# service network start
Starting 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.
                                                           [失败]

解决:1)图形界面重新开启有线连接的开关。2)命令界面执行service network restart,如果不行,可尝试问题1的解决方案。

3、ping t.cn或www.baidu.com测试外网不通
解决:通过vi /etc/resolv.conf命令打开resolv.conf配置文件,添加DNS服务器地址:
nameserver 8.8.8.8
nameserver 8.8.4.4
保存,然后执行service network restart,或者重启操作系统。

参考: CentOS虚拟机通过主机WiFi上网.

本文地址:https://blog.csdn.net/shinyolive/article/details/108553200

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网