搭建环境:

物理机: # cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core)

虚拟机: # cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)

KVM虚拟机连接到的是virt-manager创建的内部网络,但是有时我们还需要能够从外部网络访问到创建的虚拟机 。

虚拟机叫做客户机, 运行虚拟机的物理机叫做宿主机 。

1,从外网访问KVM 虚拟机,在 /etc/sysconfig/network-scripts 目录下,建立 ifcfg-br0 文件,并修改ifcfg-enp3s0(原主机IP配置)  文件。

原理是:这个bridge是要将物理机的网口eno1和将来虚拟机的网口ens11连接起来。物理机的网口eno1就是“外网”地址了;因为Linux的bridge是二层的,所以这个网口eno1收到的包,也会被虚拟机的连在该bridge上的网口ens11看到。
 

# cat /etc/sysconfig/network-scripts/ifcfg-br0 
TYPE=Bridge
BOOTPROTO=static
NA_CONTROLLED=no
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.0.240
PREFIX=24
GATEWAY=192.168.0.1
DNS1=218.30.19.40
DNS2=61.134.1.4

外网访问 KVM 虚拟机

 

2,修改 ifcfg-eno1 文件的目的在于将其和 br0 关联起来。注意,这里的修改包括:

增加了一行  : BRIDGE=”br0”

原理: 让br0真正地成为真正与外界交换机打交道的。换句话说,把原来的eno1变成了一个集线器(Hub),也就是bridge 。



# ifup br0
# ifconfig

外网访问 KVM 虚拟机

 

3,运行 virt-manager ,双击所需要放到外网的虚拟机,点击菜单栏的灯泡进入配置页面: 
新增一块网卡(NIC),注意,Network source选择“Bridge br0: Host device eno1”, Device model选择virtio 或 e1000

外网访问 KVM 虚拟机

因为是新增网卡,要重启虚拟机。

 

4,在虚拟机内确定新增网卡的设备名:

# ip addr                                                         

可以看到新增网卡的名字是 eth1,状态是 down

5,  在 /etc/sysconfig/network-scripts 下新增文件 ifcfg-eth1 

# cp /etc/sysconfig/network-scripts/ifcfg-eth0  /etc/sysconfig/network-scripts/ifcfg-eth1

# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
ONBOOT="yes"
IPV6INIT="no"
IPV4_FAILURE_FATAL="no"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR=192.168.0.237
PREFIX=24
GATEWAY=192.168.0.1

# systemctl restart network

外网访问 KVM 虚拟机

 

 配置OK。可以从外网(其实也是局域网)访问该虚拟机啦。

5, 客户端访问测试:

外网访问 KVM 虚拟机

理解的要点: 
外界的物理交换机连接到了一台Hub(即bridge)上,而物理机的enp3s0和虚拟机的eth1也都是接到了这个Hub上。 
于是,交换机转发出来的报文,enp3s0和eth1都能看得到,并各自处理属于各自的报文。

 

相关文章:

  • 2021-10-05
  • 2021-08-16
  • 2022-01-07
  • 2022-01-07
  • 2022-01-07
  • 2022-01-07
  • 2021-04-18
  • 2021-07-22
猜你喜欢
  • 2021-07-18
  • 2022-01-07
  • 2022-01-07
  • 2021-10-07
  • 2021-11-25
  • 2021-12-19
  • 2022-01-07
相关资源
相似解决方案