1. 程式人生 > >虛擬機器與宿主機互通

虛擬機器與宿主機互通

首先準備環境

本節主要講解如何讓包通過openvswitch,連宿主機和虛擬機器。

1, 先說說我的環境吧

模組 版本
核心版本 4.0.0-2-amd64
debian Debian 4.0.8-2 (2015-07-22) x86_64
openvswitch-common 2.4.0-1
openvswitch-datapath-dkms 2.4.0-1
openvswitch-datapath-source 2.4.0-1
openvswitch-dbg 2.4.0-1
openvswitch-pki 2.4.0-1
openvswitch-switch 2.4.0-1
openvswitch-test 2.4.0-1
openvswitch-vtep 2.4.0-1
python-openvswitch 2.4.0-1

注: 這些包目前沒有源提供,本人是在本地自己打包編譯的,
其實編譯也很簡單:

  • 1,從github上下載程式碼,
  • 2,切換到相應的分支,
  • 3,執行dpkg-buildpackage即可,具體出現的錯誤請詢問google大神)

qemu的版本不是本文的重點。再此就不再列出具體版本了

準備啟動虛擬機器的映象,也不在此敘述,我這邊有個副本,直接root登陸,密碼是:1,連結地址:

http://pan.baidu.com/s/1sjmOZyl 檔名字forqemu.qcow

2,啟動一臺虛擬機器:

qemu的命令不再本文敘述之列,請參照幫助文件:
本人用的啟動虛擬機器的命令:(僅供參考,參照本文最後一節的備註)

     qemu-system-x86_64 forqemu.qcow2 -m 1024 -net nic,model=virtio,macaddr=00:16:3e:22:22:22  -net tap,ifname=tap124
  • 注意 :
    • 1, 引數中的“ifname=tap124”代表創建出來的tap裝置的名字,
    • 2, 可以後臺執行該命令,開啟一臺虛擬機器
    • 3, 建立完成之後 執行ifconfig 命令,應該能看到新的網路裝置名字 tap124

3,初識所需的openvswitch命令

  • ovs-vsctl add-br $br-name : 增加一臺虛擬網橋裝置。
  • ovs-vsctl add-port $br-name $port-name : 在網橋裝置上增加一個埠,
    注,該埠不是運輸層埠,可以抽象為一個插網線的網口
  • ovs-vsctl set-port $port-name tag=$tag-id : 設定埠的tag

建立虛擬機器,連通宿主機和虛擬機器

建立以來虛擬機器

物理機(注,物理機該處的命令在虛擬機器啟動之後才會有tap124裝置)

root@www /home/abaobo 2015-08-14 20:54:23 
# ip a a 10.120.0.2/24 dev tap124               

虛擬機器中命令執行

qemu-system-x86_64 forqemu.qcow2 -m 1024 -net nic,model=virtio,macaddr=00:16:3e:22:22:22  -net tap,ifname=tap124 -display curses
-------------------------------------
[email protected]for-test:~# ip a a 10.120.0.1/24 dev eth0
[email protected]for-test:~# ip r 
10.120.0.0/24 dev eth0  proto kernel  scope link  src 10.120.0.1
[email protected]for-test:~# ping 10.241.21.84 -I eth0 -c 2
PING 10.241.21.84 (10.241.21.84) from 10.120.0.1 eth0: 56(84) bytes of data.
64 bytes from 10.241.21.84: icmp_req=1 ttl=64 time=10.0 ms
64 bytes from 10.241.21.84: icmp_req=2 ttl=64 time=13.0 ms

--- 10.241.21.84 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 10.076/11.558/13.040/1.482 ms
[email protected]for-test:~#

上面可以看出,虛擬機器與物理機之間已經互通,下面我們來展示一下如何通過openvswich建立的bridge連通物理機與虛擬機器。

通過bridge連通虛擬機器和物理機

物理機上執行命令:

[email protected] /home/abaobo 2015-08-14 21:53:11 
# ovs-vsctl add-br br-int
[email protected] /home/abaobo 2015-08-14 21:53:40 
# ovs-vsctl add-port br-int tap124      
[email protected] /home/abaobo 2015-08-14 21:54:02 
# ovs-vsctl show
69581e33-310b-4971-84f3-2c06c4f8a75c
    Bridge br-int
        Port "tap124"
            Interface "tap124"
        Port br-int
            Interface br-int
                type: internal
    ovs_version: "2.4.0"
[email protected] /home/abaobo 2015-08-14 21:55:04 
# ifconfig br-int up    
[email protected] /home/abaobo 2015-08-14 21:55:12 
# ip r a 10.120.0.0/24 dev br-int

然後在虛擬機器中ping物理機:

[email protected]for-test:~# ping 10.241.21.84 -I eth0 -c 2                         
PING 10.241.21.84 (10.241.21.84) from 10.120.0.1 eth0: 56(84) bytes of data.
64 bytes from 10.241.21.84: icmp_req=1 ttl=64 time=12.7 ms                    
64 bytes from 10.241.21.84: icmp_req=2 ttl=64 time=2.09 ms

--- 10.241.21.84 ping statistics ---                                       
2 packets transmitted, 2 received, 0% packet loss, time 1002ms                 
rtt min/avg/max/mdev = 2.099/7.401/12.703/5.302 ms                             
[email protected]for-test:~#

總結

  • 本節主要講解了基本環境準備工作。
  • 講解宿主物理機直接與虛擬機器互通。
  • 虛擬機器通過bridge與宿主物理機互通。

備註

使用虛擬機器來做這些講解釋很複雜的,接下來的章節我們將會使用internal的port模擬虛擬機器網路,具體的辦法是。

  • 1,在br-int上建立internal的port。
  • 2,新建一個net namespace空間,將該port加入到該namespace中。
  • 3,在namespace中設定該port的地址和路由。
  • 4,然後在該namespace中執行網路相關的簡單命令就像在虛擬機器裡面執行,該詳細步驟後面將不再詳細敘述。

命令如下:

root@www /home/abaobo/tmp 2015-08-15 11:22:29 
# ovs-vsctl add-port br-int br_fake_vm_A_1 --  set interface br_fake_vm_A_1 type=internal 
root@www /home/abaobo/tmp 2015-08-15 11:17:43 
# ip netns add br_fake_vm_A_1
root@www /home/abaobo/tmp 2015-08-15 11:23:06 
# ip link set br_fake_vm_A_1  netns br_fake_vm_A_1
root@www /home/abaobo/tmp 2015-08-15 11:23:35 
# ip netns exec br_fake_vm_A_1 bash                 
root@www:/home/abaobo/tmp# ifconfig
root@www:/home/abaobo/tmp# ifconfig br_fake_vm_A_1 up
root@www:/home/abaobo/tmp# ifconfig
br_fake_vm_A_1 Link encap:Ethernet  HWaddr 4a:dc:1f:9f:f8:ae  
          inet6 addr: fe80::48dc:1fff:fe9f:f8ae/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5 errors:0 dropped:8 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:418 (418.0 B)  TX bytes:418 (418.0 B)

root@www:/home/abaobo/tmp# ip a a 10.120.0.8/24 dev br_fake_vm_A_1
root@www:/home/abaobo/tmp# exit

下一節將講解openvswitch中的TAG的知識。

相關推薦

虛擬機器宿主互通

首先準備環境 本節主要講解如何讓包通過openvswitch,連宿主機和虛擬機器。 1, 先說說我的環境吧 模組 版本 核心版本 4.0.0-2-amd64 debian Debian 4.0.8-2 (2015-0

虛擬機器Ubuntu之間相互通訊以及虛擬機器宿主進行通訊

虛擬機器Ubuntu之間相互通訊以及虛擬機器與宿主機進行通訊 在Vmware workstation上開啟兩臺虛擬機器 1.在設定裡將兩臺虛擬機器改成橋接模式 2.使用命令列靜態配置兩臺虛擬機器的IP地址分別為 虛擬機器Ubuntu1:192.168.0.3 虛擬機器Ubuntu2:19

虛擬機器宿主通訊方式

1、Bridged 模式:在橋式模式下,VM虛擬出來的作業系統就類似區域網中的一臺主機,可以訪問網路中的任意一臺機器,如果選擇這種模式,需要配置虛擬系統的IP地址和子網掩碼,並且和宿主機在同一個網段中,這樣虛擬系統才能和宿主機進行通訊,此時需要設定Linux和宿主機同網段的I

qemu-kvm虛擬機器宿主之間簡單檔案傳輸方法

 qemu-kvm虛擬機器與宿主機之間實現檔案傳輸,大概兩類方法: 1. 虛擬機器與宿主機之間,使用網路來進行檔案傳輸。這個需要先在宿主機上配置網路橋架,在qemu-kvm啟動配置網絡卡就可以實現檔案傳輸。 2. 使用9psetup協議實現虛擬機器與宿主機之間檔案傳輸。

VirtualBox 虛擬機器宿主之間的網路連線,虛擬機器和主機都可以上網

本篇目的:實現了宿主機與虛擬機器,虛擬機器與虛擬機器互通,宿主機可上網,虛擬機器可上網 第一步:VirtualBox安裝centos7      第一步比較簡單,本篇就不多贅述,本篇重點在於對虛擬機器網路進行配置,下圖是安裝好的centos:

VMware虛擬機器Windows系統實現共享檔案(夾)

VMware虛擬機器與本機Windows系統共享檔案其實是通過VMware自帶的共享資料夾功能實現的 具體步驟有三步,如下: 1.安裝VMware Tools 滑鼠右鍵點選你的虛擬機器 > 點選安裝VMware Tools > 等待一會兒會彈出安裝視窗 > 下一步,

Oracle VirtualBox 虛擬機器宿主之間的網路連線

問題:本機太老cpu不支援虛擬化不能用vmware,選擇了virtualbox環境:宿主機是window7 64位  虛擬機器centos minimal的安裝  Oracle VirtualBox-5

虛擬機器的互動

1.在虛擬機器中檢視自己的ip 2.輸入nm-connection-editor指令 將原有的刪除,新增一個新的 在此介面選擇已有的address 將connection name重新命名為etho(單獨對虛擬機器有用) 在這裡插入圖片描述 在此介面選擇Man

設定虛擬機器網路互連(僅主機)模式

為了實現主機與虛擬機器的Linux系統互連,可以對虛擬機器進行設定,達到目的。VMware的網路連線模式有三種:1、僅主機模式:也就是host_only,這種模式僅僅只讓虛擬機器與本地物理機通訊,不可以上網;2、NAT模式:這種模式保留僅主機模式的功能下,還能讓主機上網;3、

KVM虛擬機器宿主開機自啟動

圖形化介面 必須在虛擬機器關機情況下完成!!! 在KVM圖形化管理工具中設定開機自啟動 在Startvirtual machine on host boot up 前勾選即可 命令列介面 virsh autostart 虛擬機器名    #設定隨宿主機開機自啟動

Ubuntu虛擬機器物理磁碟檔案共享…

Ubuntu虛擬機器與物理機磁碟檔案共享的設定: 要在虛擬機器裡看到物理主機的磁碟檔案,必須設定【共享】。首先要在物理主機上建立一資料夾,目的是專供虛擬機器使用,並且把這個資料夾設定成網路共享(右鍵共享與安全)。安裝【Vmware Tools】後,可以通過設定虛擬機器,在虛擬機器裡找到並使用這些資料夾

配置虛擬機器在同一個網段下

為了方便物理機訪問虛擬機器,需要分別將虛擬機器網絡卡和物理機連線內網的網絡卡配置在同一個閘道器下。最後通過ping操作,檢視是否配置成功。 配置過程非常簡單,但是筆者在配置中遇到一點小問題,一有步驟沒有做好,磨蹭了半天。這裡做個了結。 真機作業系統:windows (

mac系統配置Ubuntu環境,以及虛擬機器本地網路互通設定

一、mac安裝Ubuntu系統--vagrant 1、下載vagrant 雙擊下載檔案vagrant_2.1.2_x86_64.dmg 雙擊圖中紅框的位置,開啟安裝器一直點選繼續,直至安裝完畢 2、下載virtualbox 雙擊下載檔案Vir

虛擬機器ubuntu 設定靜態ip 橋接模式宿主通訊

預設情況下 是nat地址轉換方式上網,但是宿主機和 虛擬機器不能相互通訊,所以一般設定靜態ip,用橋接方式上網,這樣就能宿主機和虛擬機器相互通訊了。 1. 設定虛擬機器的網路方式 為橋接 2. 開啟終端 執行 vim /etc/network/interfaces 編輯

VirtualBox上Centos7的網路配置(物理虛擬機器虛擬機器外網)

Virtual Box可選的網路接入方式包括: NAT 網路地址轉換模式(NAT,Network Address Translation)Bridged Adapter 橋接模式Internal 內部網路模式Host-only Adapter 主機模式 具體的區別網上的資

hadoop:在vmare中配置的多個虛擬機器CentOS配置靜態ip,並能ping通windows主機,使得主機虛擬機器之間的網路互通

第2步:然後確保虛擬機器centos的網路配置是NAT,如下圖: 第3步:最後按照以下方法設定靜態ip:          啟動並進入centos系統,在終端中輸入“vim /etc/sysconfig/network-scripts/ifcfg-eth0 ”來修改ip配置,然後輸入如下圖的配

關於 VirtualBox6 下的 Win10 虛擬 宿主 共享文件

共享文件夾 名稱 rtu 目錄 完成後 vsx 功能 情況 網絡位 1. 概述 需要在 宿主機 和 虛擬機 之間交換文件 復制粘貼 貌似不太好使 2. 問題 設置了共享文件夾之後, 找不到目錄 3. 環境 宿主機 OS Win10 開啟了 網絡發現 略 虛

Red Hat6.5的安裝、且宿主互通

虛擬機連接宿主機1:在VMware Workstation中安裝Red Hat Enterprise 6.5的環境 2:與宿主機的互聯互通的過程 虛擬機系統LINUX的安裝向導,打開VMware Workstation ,點擊新建虛擬機,自定義,下一步。. 如圖:硬件兼容性選擇:workstation 12.

Android Studio 找不到虛擬機器和真的解決辦法

這個問題困擾了我好久,最終找到了解決辦法 執行AS的小demo的時候點選執行發現找不到虛擬機器和真機,插上USB也找不到手機,但是在AS的右下角發現壇出了個提示 本菜鳥在網上找的時候網上的大佬們都說是ADB埠被佔用等等,但是方法都不管用,查看了埠並沒有被佔用,網上說將將C:\Window

虛擬機器主機互相ping通且共享資料夾,且虛擬機器連線外網

     在網上查詢了一天,感覺內容不是很完整,所以經過兩天無數次的失敗與摸索,終於完成了主機與虛擬機器互相ping通、共享資料夾且能連線外網,開心ing。虛擬機器版本為VirtualBox,linux版本為centos7。 1、虛擬機器與主機互相ping