linux上虛擬機 qemu-kvm 安裝,並與宿主機通信

安裝 qemu/kvm

yum install qemu-img qemu-kvm qemu-kvm-tools virt-manager virt-viewer virt-v2v virt-top libvirt libvirt-python libvirt-client python-virtinst bridge-utils tunctl

接下來就可以通過命令或者界面操 虛擬機

命令操作可參考https://www.cnblogs.com/lin1/p/5776280.html

安裝成功後界如下

 

 

虛擬機與宿主機 通信

使用橋接方式

先在宿主集卡安裝命令如下:

yum install bridge-utils.x86_64

(1)在宿主機創建一個橋接virbr0,並分配給其一個ip

brctl addbr virbr0
ifconfig br0 192.168.122.1

宿主機器ifconfig

 

 

(2)宿主機中把一個 網卡和橋接口綁定

 

brctl addif virbr0 p9p1

查看

但是自己測試宿主機不綁定也可以

 

(3)設置虛擬機通過橋接virbr0與宿主機橋接

 

 

(4)在虛擬機中給一個網卡分配ip,ip必須和virbr0的ip在一個網段

 

 

 

創建完就可以 和宿主機 互相ping了或者ssh了

 

 

 

網上資料如下:

   原文https://blog.csdn.net/u013451404/article/details/84929816

我們繼續來討論怎麼將虛擬機中的網絡橋接到宿主機的物理網卡。虛擬機使用橋接方式上網的示意圖如下(注:本圖是借用來的,如有侵權請聯繫我刪除,感謝!),多個虛擬機都可以承載在宿主機的一個網卡上,每個虛擬機都可以有一個獨立的ip地址,虛擬機可以訪問外部網絡,外部網絡的設備也可以訪問虛擬機。

虛擬機橋接宿主機的示意圖

 

1、用ifconfig命令查看一下宿主機物理網卡對應的接口,我的服務器中有一個名爲ens5的接口對應我的網卡。

    [linux@Centos ~]$ ifconfig ens5
    ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 1c:c1:de:9b:e9:ff  txqueuelen 1000  (Ethernet)
            RX packets 4  bytes 316 (316.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 12  bytes 928 (928.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 17  
     
    [linux@Centos ~]$

2、在宿主機中安裝網橋管理工具bridge-utils

yum install bridge-utils.x86_64

3、在宿主機中創建一個名爲br0的橋接接口

sudo brctl addbr br0

4、在宿主機中將ens5添加到橋接組br0中

sudo brctl addif br0 ens5

5、檢查橋接配置是否成功,可以看到ens5已經添加到了br0中了

    [linux@Centos qemu]$ sudo brctl show
    bridge name    bridge id        STP enabled    interfaces
    br0        8000.1cc1de9be9ff    no        ens5
    virbr0        8000.52540099455c    yes        virbr0-nic
    [linux@Centos qemu]$

6、爲br0接口添加一個ip地址,我配置的是10.0.0.3

    [linux@Centos qemu]$ sudo ifconfig br0 10.0.0.3
    [linux@Centos qemu]$ sudo ifconfig
    br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.0.0.3  netmask 255.0.0.0  broadcast 10.255.255.255
            inet6 fe80::1ec1:deff:fe9b:e9ff  prefixlen 64  scopeid 0x20<link>
            ether 1c:c1:de:9b:e9:ff  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 7  bytes 578 (578.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
     
    ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 1c:c1:de:9b:e9:ff  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 7  bytes 578 (578.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 17  

7、驗證宿主機橋接接口是否可以正常通信,ens5接口連接的對端設備的地址是10.0.0.10,我們在宿主機上ping一下這個地址,如果橋接配置成功是可以通過橋接接口ping通對端的,對端也可以ping能我們br0的10.0.0.3

    [linux@Centos ~]$ ping 10.0.0.10
    PING 10.0.0.10 (10.0.0.10) 56(84) bytes of data.
    64 bytes from 10.0.0.10: icmp_seq=1 ttl=64 time=0.557 ms
    64 bytes from 10.0.0.10: icmp_seq=2 ttl=64 time=0.534 ms
    ^C
    --- 10.0.0.10 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1000ms
    rtt min/avg/max/mdev = 0.534/0.545/0.557/0.026 ms
    [linux@Centos ~]$

8、用virsh edit CentOS命令修改我們的虛擬機的配置,添加一個橋接類型的網卡,並且橋接到br0口,添加文本如下,更多XML文件格式說明參考https://libvirt.org/formatdomain.html

        <interface type='bridge'>
          <source bridge='br0'/>
          <target dev='vnet1'/>
          <mac address="00:11:22:33:44:55"/>
        </interface>

9、用virsh start CentOS命令打開我們的虛擬機,登錄虛擬機系統後可以看到虛擬機中多了一個MAC地址爲00:11:22:33:44:55的網卡,在我的虛擬機裏它叫eth2。

備註:此時打開虛擬機可能會報橋接口通信失敗,進而導致虛擬機打開失敗,則需要輸入如下命令允許虛擬機使用橋接通信。

echo "allow br0" >> /etc/qemu-kvm/bridge.conf

下面是虛擬機開機後的網口信息:

    [root@localhost ~]# ifconfig -a
    eth1      Link encap:Ethernet  HWaddr 52:54:00:97:86:46  
              BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
     
    eth2      Link encap:Ethernet  HWaddr 00:11:22:33:44:55  
              BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
              Interrupt:10 Base address:0xa000
     
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
     
    [root@localhost ~]#

10、爲eth2配置一個ip地址,並ping宿主機和宿主機的ens5連接的對端設備,測試通信是否正常。可以看到我這裏無論是ping10.0.0.10和是10.0.0.3都是可以正常ping通的,說明虛擬機與宿主機和宿主機的對端設備通信都是正常的。至此就完成了爲虛擬機橋接到宿主機物理網卡的所有工作。

    [root@localhost ~]# ifconfig eth2 10.0.0.5
    eth2: link up, 100Mbps, full-duplex, lpa 0x05E1
    [root@localhost ~]#
    [root@localhost ~]# ping 10.0.0.10
    PING 10.0.0.10 (10.0.0.10) 56(84) bytes of data.
    64 bytes from 10.0.0.10: icmp_seq=1 ttl=64 time=2.09 ms
    64 bytes from 10.0.0.10: icmp_seq=2 ttl=64 time=1.02 ms
     
    --- 10.0.0.10 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1851ms
    rtt min/avg/max/mdev = 1.023/1.557/2.092/0.535 ms
    [root@localhost ~]#
    [root@localhost ~]# ping 10.0.0.3
    PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
    64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=0.625 ms
    64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.815 ms
    64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.817 ms
     
    --- 10.0.0.3 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2360ms
    rtt min/avg/max/mdev = 0.625/0.752/0.817/0.092 ms
 

 
 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章