---
title: 配置网络（桥接模式）
description: "假设KVM虚拟机已安装完成，为了可以从局域网的其他PC访问到KVM虚拟机上的TomEE服务，一种可行的方法是将KVM虚拟机（GUEST）以桥接方式与宿主机（HOST）连接，使虚拟机可以获得局域网中一个独立的IP地址。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengwebs/ecosystemEnable/TomEE/kunpengtomee_04_0008.html
sourcePath: /source/zh/kunpengwebs/ecosystemEnable/TomEE/kunpengtomee_04_0008.html
indexId: d8531f9585db6200bb0ba9ae3fd78d34579e877534974033a6b7dd2db90cced370
---
# 配置网络（桥接模式）

假设KVM虚拟机已安装完成，为了可以从局域网的其他PC访问到KVM虚拟机上的TomEE服务，一种可行的方法是将KVM虚拟机（GUEST）以桥接方式与宿主机（HOST）连接，使虚拟机可以获得局域网中一个独立的IP地址。


#### 配置网桥

1. 查看网络。

```
ip a
```


  找一个网卡状态为UP且已配置IP的网口（IP地址根据实际情况配置），本测试目标是将KVM虚拟机桥接到enp5s0所在网段（192.168.100.XXX，子网掩码是255.255.255.0）。

2. 查看网桥，确认没有网桥br0。
  1 brctl show

3. 停止NetworkManager服务，防止后面修改的配置被意外生效。
  1 systemctl stop NetworkManager

4. 创建网桥br0。

  a. 打开文件ifcfg-br0。
    1 vi /etc/sysconfig/network-scripts/ifcfg-br0

  b. 添加如下内容后，保存退出。
    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

5. 修改文件ifcfg-enp5s0，使enp5s0网卡连接br0网桥。

  a. 备份文件ifcfg-enp5s0。
    1 mv /etc/sysconfig/network-scripts/ifcfg-enp5s0 /home/

  b. 打开文件ifcfg-enp5s0。
    1 vi /etc/sysconfig/network-scripts/ifcfg-enp5s0

  c. 添加如下内容后，保存并退出。
    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

6. 使ifcfg-br0和ifcfg-enp5s0生效。

  - CentOS系统：
    1 systemctl restart network

  - openEuler系统：
    1 systemctl restart NetworkManager

    重启网络服务后，若配置仍未生效，一方面需要检查以上操作配置是否正确，另一方面可尝试重启宿主机然后再重启网络服务。

7. 查看网络。
  1 ip a

  确认br0和enp5s0的配置已经生效。

8. 查看网桥。
  1 brctl show

  br0的interfaces下出现了enp5s0，则网桥配置成功。


#### 配置虚拟机

1. 修改虚拟机配置。

  a. 打开虚拟机配置文件。
    1 2 3 vi /etc/libvirt/qemu/vm1.xml 或者 virsh edit vm1

  b. 在<devices>标签下找到<interface>标签，将br1修改为br0，保存退出。
    若不存在<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> <interface type='bridge'>表示虚拟机将使用桥接模式。 <mac address='52:54:00:7a:95:48'/>中的MAC地址在安装虚拟机后自动生成，将被用作虚拟机网卡eth0的MAC地址，通常情况下不需要修改，若修改需要确认不能和网桥br0的MAC地址相同。 <source bridge='br0'/>表示将与宿主机中的br0网桥连接。

2. 生效虚拟机配置。
  1 systemctl restart libvirtd

3. 关闭虚拟机。
  1 virsh list --all

  1 virsh shutdown vm1

  1 virsh list --all

  确认虚拟机State为shut off。

4. 启动虚拟机。
  1 virsh start vm1

  1 virsh list --all

5. 查看网桥。
  1 brctl show

  若br0的interfaces下出现“vnet0”，则表示虚拟机vm1成功连接网桥（只有vm1.xml配置生效了且vm1启动成功，vnet0才存在）。

6. 登录虚拟机。
  1 virsh list --all

  1 virsh console vm1 --force

7. 配置网卡。

  a. 查看网络。
    1 ip a

  b. 修改网卡配置。

    - CentOS系统：

      1. 编辑ifcfg-eth0文件。
        1 vi /etc/sysconfig/network-scripts/ifcfg-eth0

      2. 修改如下内容后（通常只需要修改黑色加粗部分，IPADDR配置为与宿主机同网段的未被使用的IP地址），保存退出。
        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


    - openEuler系统：

      1. 编辑ifcfg-enp1s0文件。
        1 vi /etc/sysconfig/network-scripts/ifcfg-enp1s0

      2. 修改如下内容后（通常只需要修改黑色加粗部分，IPADDR配置为与宿主机同网段的未被使用的IP地址），保存退出。
        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

8. 生效网卡。

  - CentOS系统：
    1 systemctl restart network

    1 ip a


  - openEuler系统：
    1 systemctl restart NetworkManager

    1 ifdown enp1s0

    1 ifup enp1s0

    1 ip a


#### 验证网络

1. 虚拟机与宿主机互ping。
2. 虚拟机与局域网内其他主机互ping。
3. 宿主机与局域网内其他主机互ping。
  若无法ping通，尝试在宿主机对网桥br0抓包，然后分析问题。 1 yum -y install tcpdump 1 tcpdump -i br0 若都可ping通，表示桥接配置完成。 若虚拟机只与宿主机可以互通，虚拟机与局域网内其他主机无法互通，则可能需要关闭宿主机的网络过滤器。 禁用网络过滤器。 编辑sysctl.conf文件。 1 vim /etc/sysctl.conf 按“i”进入编辑模式，在文件中添加如下配置。 1 2 3 net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。 重新加载kernel参数使配置生效。 1 sysctl -p
