Red Hat 7 建立網橋,解決KVM宿主機與虛擬機沒法通信

    在RedHat7上搭了一臺KVM服務器,建立好虛擬機以後發現,外部電腦與KVM服務器、外部機器與VM虛擬機、兩臺VM虛擬機之間均可以通信,可是KVM服務器與VM虛擬機卻沒法通信。此時外部電腦、KVM服務器、VM虛擬機都關閉了防火牆。bash

    此時VM虛擬機的網卡配置如圖:選擇的源設備爲 Host device eno1 :macvtapwKiom1afC2iyUYiCAAEjD9PdHhg668.jpg    
服務器

[root@kvm02 ~]# ifconfig
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.254  netmask 255.255.255.0  broadcast 192.168.1.255
        ........
eno2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ........
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        ........
macvtap0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ........
macvtap1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ........
virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
查看網橋信息
[root@kvm02 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400c2d3bd       yes             virbr0-nic

    查看網卡信息後發現如今存在物理網卡eno一、eno2 網橋virbr0、虛擬網卡macvtap0、macvtap1。
ssh

    網橋virbr0,至關於VMware的 VMNET8,提供NAT的網卡,當有虛擬機網卡使用橋接模式而且啓動時,使用#brctl show 查看,在virbr0會有的interfaces下會出現網卡vnetX。
ide

    虛擬網卡macvtap0、macvtap1,是如今VM虛擬機的網卡,此時我啓動了兩臺虛擬機,網卡配置如上文。
spa

    但此時虛擬機跟宿主機是沒法通信的。rest

[root@kvm02 ~]# ping 192.168.1.10
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
From 192.168.1.254 icmp_seq=1 Destination Host Unreachable
From 192.168.1.254 icmp_seq=2 Destination Host Unreachable
From 192.168.1.254 icmp_seq=3 Destination Host Unreachable

    如今開始建立網橋,並把eno1,虛擬機的網卡接入網橋。日誌

[root@kvm02 ~]# virsh iface-bridge eno1 br0
Created bridge br0 with attached device eno1

    使用virsh iface-bridge建立網橋,此時我是ssh到KVM服務器的,添加以後斷開了鏈接,去到物理機前重啓網卡,發現有了網橋br0,可是網橋沒有成員,查看message日誌發現eno1已是一個網橋成員了。
blog

[root@kvm02 network-scripts]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000000000000       no
virbr0          8000.525400c2d3bd       yes             virbr0-nic
message日誌
Jan 19 05:09:34 kvm02 network: Bringing up interface eno1:  device eno1 is already a member of a bridge; can't enslave it to bridge br0.

    折騰一番後發現,啓動的兩臺虛擬機綁定在eno1上,因此暫時先關掉綁定到這塊網卡的虛擬機,刪除網卡而後重建網橋。
ip

    

[root@kvm02 ~]# virsh iface-bridge eno1 br0
Created bridge br0 with attached device eno1
此時又斷開遠程了。從新回到機器前面重啓網卡
[root@kvm02 ~]# systemctl restart network
重啓第一次的時候報錯了,而後多重啓兩次,發現沒有出現錯誤,網卡正常啓動,eno1成功加入br0了。
[root@kvm02 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.0024e8584bc8       yes             eno1
virbr0          8000.525400c2d3bd       yes             virbr0-nic

    網卡eno1成功加入網橋以後,修改虛擬機的網卡配置。把網卡設備修改成:Bridge br0:Host device eno1,以下圖:get

wKiom1afC0jSUSTGAADFuz5A81E588.jpg   

    修改完成後啓動虛擬機,發現虛擬機的網卡也加入了br0,此時虛擬機的網卡名由macvtapX變成了vnetX。啓動完成後,虛擬機與宿主機就能夠正常通信了。

[root@kvm02 ~]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.254  netmask 255.255.255.0  broadcast 192.168.1.255
        ........
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ........
eno2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ........
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        ........
virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ........
vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ........
vnet1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ........
[root@kvm02 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.0024e8584bc8       yes             eno1
                                                        vnet0
virbr0          8000.525400c2d3bd       yes             virbr0-nic
[root@kvm02 ~]# ping 192.168.1.10
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.676 ms
64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.228 ms

    對於網橋,能夠大體理解爲一個虛擬的交換機,把網卡接到同一個交換機上面,各個主機就能夠正常通信了。

wKioL1afDcbB2hwaAAAuKUcpABU148.png

相關文章
相關標籤/搜索