假设KVM虚拟机已安装完成,为了可以从局域网的其他PC访问到KVM虚拟机上的TomEE服务,一种可行的方法是将KVM虚拟机(GUEST)以桥接方式与宿主机(HOST)连接,使虚拟机可以获得局域网中一个独立的IP地址。
ip a
找一个网卡状态为UP且已配置IP的网口(IP地址根据实际情况配置),本测试目标是将KVM虚拟机桥接到enp5s0所在网段(192.168.100.XXX,子网掩码是255.255.255.0)。
1
|
brctl show
|
1
|
systemctl stop NetworkManager |
1
|
vi /etc/sysconfig/network-scripts/ifcfg-br0
|
1 2 3 4 5 6 7 8 9 10 |
DEVICE=br0 ONBOOT=yes TYPE=Bridge NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.100.2 NETMASK=255.255.255.0 GATEWAY=192.168.100.1 STP=on DELAY=0.0 |
如果使用如下操作创建网桥,在宿主机重启后会失效。
1 2 3 4 5 6 |
brctl addbr br0 brctl addif br0 enp5s0 ifconfig br0 192.168.100.2/24 service network restart brctl show ip a |
1
|
mv /etc/sysconfig/network-scripts/ifcfg-enp5s0 /home/ |
1
|
vi /etc/sysconfig/network-scripts/ifcfg-enp5s0
|
1 2 3 4 5 6 |
HWADDR=24:a5:2c:17:bb:39 DEVICE=enp5s0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BRIDGE=br0 |
查看enp5s0的HWADDR值,回显中ether后面的mac地址值就是HWADDR值。
ip a
1
|
systemctl restart network |
1
|
systemctl restart NetworkManager |
重启网络服务后,若配置仍未生效,一方面需要检查以上操作配置是否正确,另一方面可尝试重启宿主机然后再重启网络服务。
1
|
ip a
|
确认br0和enp5s0的配置已经生效。
1
|
brctl show
|
br0的interfaces下出现了enp5s0,则网桥配置成功。
1 2 3 |
vi /etc/libvirt/qemu/vm1.xml 或者 virsh edit vm1 |
若不存在<interface>标签,则直接在<devices>标签下添加如下内容:
1 2 3 4 5 6 |
<interface type='bridge'> <mac address='52:54:00:7a:95:48'/> <source bridge='br1'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> |
1
|
systemctl restart libvirtd |
1
|
virsh list --all |
1
|
virsh shutdown vm1 |
1
|
virsh list --all |
确认虚拟机State为shut off。
1
|
virsh start vm1 |
1
|
virsh list --all |
1
|
brctl show
|
若br0的interfaces下出现“vnet0”,则表示虚拟机vm1成功连接网桥(只有vm1.xml配置生效了且vm1启动成功,vnet0才存在)。
1
|
virsh list --all |
1
|
virsh console vm1 --force |
1
|
ip a
|
1
|
vi /etc/sysconfig/network-scripts/ifcfg-eth0
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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=eth0 UUID=aca69508-f4c7-4ff2-9cc5-668ac45e429e DEVICE=eth0 ONBOOT=yes IPADDR=192.168.100.3 NETMASK=255.255.255.0 GATEWAY=192.168.100.1 |
1
|
vi /etc/sysconfig/network-scripts/ifcfg-enp1s0
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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=enp1s0 UUID=dedf1652-5eff-3fb4-be23-c658b834774f DEVICE=enp1s0 ONBOOT=yes AUTOCONNECT_PRIORITY=-999 IPADDR=192.168.100.13 NETMASK=255.255.255.0 GATEWAY=192.168.100.1 |
1
|
systemctl restart network |
1
|
ip a
|
1
|
systemctl restart NetworkManager |
1
|
ifdown enp1s0
|
1
|
ifup enp1s0
|
1
|
ip a
|
1
|
yum -y install tcpdump |
1
|
tcpdump -i br0 |
1
|
vim /etc/sysctl.conf
|
1 2 3 |
net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 |
1
|
sysctl -p
|