15年的时候,写过一篇博客:VMware中网络设置之Bridged 也是关于linux下vmware桥接模式、静态ip上外网的配置,不过当时更多的是用图形界面来实现的,通用性不强。生产环境,极少有linux安装图形界面的。索性原博客也不修改了,重新来一篇得了。这里我用的是CentOS6.5的最小系统来演示。当前了,因为CentOS属于红帽系列,所以本文所讲的方法对于redhat系列的linux网络配置同样适用。
一、桥接模式之VMware设置:
VMware->【Edit】->【Virtual Network Edit】
二、桥接模式之虚拟机设置:
三、桥接模式之设置静态ip地址
配置成桥接网络连接模式的虚拟机就当作主机所在以太网的一部分,虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑,可以像主机一样可以访问以太网中的所有共享资源和网络连接,可以直接共享主机网络的互联网接入线路访问互联网。主机与虚拟机之间,以及各虚拟机之间都可以互访。对应虚拟机就被当成主机所在以太网上的一个独立物理机来看待,各虚拟机通过默认的VMnet0网卡与主机以太网连接,虚拟机间的虚拟网络为VMnet0。这时你的虚拟机就像局域网中的一个独立的物理机一样。虚拟机中的操作系统可以PING通别的主机,反过来别的主机也可以PING虚拟机。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。
所以配置之前,我要先看一下物理主机的ip地址:(我这里物理主机采用无线上网卡wifi上网)
1. ipconfig 查看物理主机的ip地址(上外网用的那个网卡的ip地址)
2. 根据物理主机的ip地址,设置linux虚拟机的ip地址:
注意:CentOS7的网卡名称不是eth0,如下
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.200 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::20c:29ff:fe51:7e7a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:51:7e:7a txqueuelen 1000 (Ethernet)
RX packets 9451 bytes 642457 (627.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 137 bytes 14889 (14.5 KiB)
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 1 (Local Loopback)
RX packets 72 bytes 6252 (6.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 72 bytes 6252 (6.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #虚拟机网卡名称,改成具体网卡名称,如ens33
NAME="eth0" #改成具体网卡名称,如ens33
TYPE="Ethernet" ONBOOT="yes" #开机启用网络配置。 NM_CONTROLLED="yes" BOOTPROTO="static" #static,静态ip,而不是dhcp,自动获取ip地址。 IPADDR=192.168.31.77 #设置我想用的静态ip地址,要和物理主机在同一网段,但又不能相同。 NETMASK=255.255.255.0 #子网掩码,和物理主机一样就可以了。 GETWAY=192.168.31.1 #和物理主机一样
BROADCAST=192.168.31.255
DNS1=8.8.8.8 #DNS,写谷歌的地址就可以了。 HWADDR=00:0c:29:22:05:4c #根据具体机器修改,不加也可以 IPV6INIT="no" USERCTL="no"
我用xshell连接的linux,这样看起来比较清晰:
重启网络服务:
[root@xiaolyu77 ~]# service network restart
3. 在网络配置文件 /etc/sysconfig/network 中添加网关地址。
[root@xiaolyu77 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=xiaolyu77
GATEWAY=192.168.31.1 #网关地址,同物理主机的网关地址
4. 测试:
1)虚拟机 ping 物理主机:
[root@xiaolyu77 ~]# ping 192.168.31.160
2) 物理主机 ping 虚拟机
C:\Users\Administrator>ping 192.168.31.77
3) 虚拟机测试外网:
[root@xiaolyu77 ~]# ping www.baidu.com
OK,搞定!
5. 问题: 如果还是不能上外网,出现:"ping: unknown host www.baidu.com"
如果某台Linux服务器ping不通域名, 如下提示:
[root@xiaolyu75 ~]# ping www.baidu.com
ping: unknown host www.baidu.com
解决方案:
首先确定已经连接上路由器,并且路由器能够访问外网,可以通过访问网关进行确定
[root@xiaolyu75 ~]# ping 192.168.31.1
如果确定网络没问题的情况下, 可以通过如下步骤寻找解决办法:
1) 确定设置了域名服务器
没有的话, 建议设置Google的公共DNS服务, 它应该不会出问题的
[root@xiaolyu75 ~]# cat /etc/resolv.conf
nameserver 219.239.26.42
nameserver 124.207.160.106
将dns添加到该文件中
2) 确保网关已设置
[root@xiaolyu75 ~]# grep GATEWAY /etc/sysconfig/network-scripts/ifcfg*
我的xiaolyu75机器不能上外网,是因为网管设置的不对,我设置成了GETWAY=192.168.31.1.
如果未设置, 则通过如下方式增加网关:
[root@xiaolyu75 ~]# route add default gw 192.168.31.1
或者手工编写/etc/sysconfig/network-scripts/ifcfg*文件后, 重启network服务:
[root@xiaolyu75 ~]# service network restart
/etc/sysconfig/network-scripts/ifcfg-eth0:GATEWAY=192.168.31.1
3) 确保可用dns解析
[root@xiaolyu75 ~]# grep hosts /etc/nsswitch.conf
#hosts: db files nisplus nis dns
hosts: files dns
注意,上面的配置要加上dns。
以下是dns的配置,备忘。
hosts: dns files
表示只在DNS失效时候才使用/etc/hosts文件
hosts: dns
表示只用DNS解析主机
host: files
表示只用/etc/hosts文件解析主机
hosts: files dns
将使用/etc/hosts文件解析主机,表示如果无法解析主机名将使用DNS。
4)测试:
[root@xiaolyu75 ~]# ping -c 3 www.baidu.com
OK,搞定!