环境:
物理机: CentOS 7.4
虚拟机: CentOS 7.4web
在 物理机的/etc/sysconfig/network-scripts 目录下,创建 ifcfg-br0 文件,并修改 ifcfg-eno1 文件。
注意,原理是:这个bridge是要将物理机的网口eno1和未来虚拟机的网口ens11链接起来。物理机的网口eno1就是“外网”地址了;由于Linux的bridge是二层的,因此这个网口eno1收到的包,也会被虚拟机的连在该bridge上的网口ens11看到。网络
1.1 创建 ifcfg-br0 文件的目的在于创建一个 bridge,一个示例以下:svg
DEVICE=br0 TYPE=Bridge NM_CONTROLLED=no BOOTPROTO=static IPADDR=10.240.218.88 # 这是原先eno1的IP地址 NETMASK=255.255.254.0 GATEWAY=10.240.218.1 ONBOOT="yes" DNS1="8.8.8.8"
1.2 修改 ifcfg-eno1 文件的目的在于将其和 br0 关联起来。注意,这里的修改包括:rest
增长了一行
BRIDGE=”br0”code
注释掉原有的多行,如GATEWAY, IPADDR, DNS1, PREFIX, IPV6等。 xml
缘由是:让br0真正地成为真正与外界交换机打交道的。换句话说,把原来的eno1变成了一个集线器(Hub),也就是bridge. blog
运行 virt-manager ,双击所须要放到外网的虚拟机,点击菜单栏的灯泡进入配置页面:
新增一块网卡(NIC),注意,Network source选择“Bridge br0: Host device eno1”, Device model选择virtio.
图片
由于新增网卡,因此重启虚拟机ip
在虚拟机内肯定新增网卡的设备名:
运行 虚拟机
ip addr | grep <mac of new nic>
能够看到新增网卡的名字是 ens11,状态是 down
配置虚拟机内新增网卡的对应网络配置文件,好比: /etc/sysconfig/network-scripts/ifcfg-ens11
一个示例以下:
DEVICE=ens11 BOOTPROTO=none ONBOOT=yes USERCTL=no TYPE="Ethernet" IPADDR="10.240.218.93" # a new IP PREFIX="24" GATEWAY="10.240.218.1" DNS1="8.8.8.8"
虚拟机上重启网络服务: systemctl restart network
大功告成。能够从外网(其实也是局域网)访问该虚拟机啦。
理解的要点:
外界的物理交换机链接到了一台Hub(即bridge)上,而物理机的eno1和虚拟机的ens11也都是接到了这个Hub上。 因而,交换机转发出来的报文,eno1和ens11都能看获得,并各自处理属于各自的报文。